Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/32: Рейтинг темы: голосов - 32, средняя оценка - 4.78
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172

Меню-аккордеон с числом пунктов

04.01.2024, 02:34. Показов 6843. Ответов 86

Студворк — интернет-сервис помощи студентам
Конечно, меню не мое. Вот оно Pure CSS Accordion

Как видите из названия Pure ... -- это очень популярная тема -- делать сложные вещи просто на CSS.
Изначально в оригинале не было JS. Я его туда добавил, и сделал ему случайные фильтры . Фильтры были постояные, теперь случайные при обновлении страницы.
Случайный код JS простой, универсальный. Его можно брать и лепить везде, где хочется чего-то случайного.

Вопрос: как сделать чтобы пункты меню имели постоянную высоту. Я пока не знаю, как ее ограничивать, но больше 2 строк не надо. Чтобы текст слева упирался (вроде есть) , и прятался под правую, с простой обрезкой текста.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form name="Form">
  <input name="input" class="input" type="number" value="3" min="1" onchange="show()">
</form>
<div class="wrap">
    <input type="checkbox" checked>
        <ul id="list">
      <li></li>
        <li><a class="link" href="https://ya.ru">Text 2 Text 2 Text 2 Text 2 Text 2 Text 2</a></li>
      <li></li>
      <li></li>
        </ul>   
</div>
<div class="credits">
  <a target="_blank" href="https://codepen.io/emoreno911">@emoreno911</a>
<div>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*  @import "compass/css3";  */ 
 
:root {--sec: 2s ease-in-out;  
       --count: 3;}
$bg1: "https://dl.dropbox.com/s/mbho5bqfofk6g99/pic.jpg";
$bg2: "https://dl.dropbox.com/s/kioimintl0v9l4d/pic.jpg";
$bg3: "https://dl.dropbox.com/s/7a60gndncwf81x8/pic.jpg";
$bg4: "https://dl.dropbox.com/s/nkwuv9jz8i99309/pic.jpg";
 
body { background-color: #000;
       display: flex;
       flex-direction: column;  }
 form {margin-left: calc((100% - 1160px) / 2);}
.input {
  width: 2em;
  padding: auto;
/*  font-size: 1.2em;  */  }
.link {position: absolute;
       background-color: #444A;
       padding: 1vw;
       bottom: 0px;
 /*    left: 50%;
       transform: translateX(-50%);
       overflow: hidden;                */
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
       text-overflow: ellipsis;
       white-space: wrap;
       z-index: 1;
       text-decoration: none;
       color: #FFF; 
       font-size: 3vw;   }
 
 a {color: red;
    background-color: #111;
    font-family: "Segoe UI", "Ubuntu", monospace;
    font-weight: 500;
    text-decoration: none;
    padding: 2px 10px;
    border-radius: 4px;  
    font-size: 1.5vw;   }     
ul {
  list-style: none;
  max-width: 1200px;
  margin: 0 auto;
  li {position: relative;
    float: left; 
    width: 16.666%; 
    height: 600px;
    opacity: 0.4;
    transition: var(--sec);
    &:hover, &:first-child ~ li:last-child {
      width: 50%;
      opacity: 1;
     transition: var(--sec);   }
    &:hover ~ li:last-child {
      width: 16.666%;
      opacity: 0.4;    }
    &:nth-child(1) {background: url($bg1) top center no-repeat; }
    &:nth-child(2) {background: url($bg2) top right  no-repeat; }
    &:nth-child(3) {background: url($bg3) top center no-repeat; }
    &:nth-child(4) {background: url($bg4) top center no-repeat; }
      }  // End li
    } // End ul
 
.menu {}
 
/** Add cool filter efects **/
ul li {
  &::before {
    content: "";
    display:block;
    width:0;
    height:100%;
    transition: var(--sec);  }
 
&:nth-child(1)::before {background-color: rgba(calc(25.5 * var(--random1,10)), calc(25.5 * var(--random2,10)), calc(25.5 * var(--random3,10)), .3)  }
&:nth-child(2)::before {background-color: rgba(calc(25.5 * var(--random3,10)), calc(25.5 * var(--random1,10)), calc(25.5 * var(--random2,10)), .25) }
&:nth-child(3)::before {background-color: rgba(calc(25.5 * var(--random2,10)), calc(25.5 * var(--random3,10)), calc(25.5 * var(--random1,10)), .25) }
&:nth-child(4)::before {background-color: rgba(calc(25.5 * var(--random1,10)), calc(25.5 * var(--random3,10)), calc(25.5 * var(--random2,10)), .3)  }
        }   /*  End  ul li */
 
input:checked ~ ul li::before { 
  width: 100%;
  transition: var(--sec); 
}
 
input[type="checkbox"] {
  width:200px;
  margin: 5px;
  font-family: "Segoe UI", "Ubuntu", monospace;
  color: white;
  &::after{
    content: "Filters Enabled";
    color: #caa;
    position: relative;
    top: -3px;
    left: 5px;
  }
}
 
/** Layout fixes **/
.credits {text-align: right;
          margin-top: 5px;     }
.credits a {margin-right: calc((100% - 1230px)/2);}
 input[type="checkbox"] {margin-left: calc((100% - 1160px)/2);}
@media (max-width: 1240px) {
  .credits a { margin-right: 0px;}
   input[type="checkbox"] { margin-left: 35px;}   }
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function RandomInt(min, max){
  return Math.floor(Math.random()*(max - min) + min)} ;
 
let random1 = RandomInt(1, 10);
let random2 = RandomInt(1, 10);
let random3 = RandomInt(1, 10);
 
let root=document.querySelector(":root"); 
root.style.setProperty("--random1", random1);
root.style.setProperty("--random2", random2);
root.style.setProperty("--random3", random3);
 
function show() {
  count = parseInt(document.forms.Form.input.value);
  block = new Array();
  for (i = 0; i < count; i++)
    block.push('<li></li>');
  document.getElementById('list').innerHTML = block.join('');
                 }
window.addEventListener("load", (event) => {show()} );
root.style.setProperty("--count", count);
Миниатюры
Меню-аккордеон с числом пунктов  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.01.2024, 02:34
Ответы с готовыми решениями:

Аккордеон меню
Приветствую всех. Есть меню аккордеон. Само по себе работает , но я например открыл пункт и открываю второй , первый в этот момент не...

Центровка пунктов в выпадающем меню по центру ul блока (Битрикс меню)
Всем привет! Требуется в выпадающем меню, т.е. в самых блоках выпадающего меню, сделать чтобы все ссылки были в центре, т.е. чтобы они...

Неполадки с меню Аккордеон
Не выскакивают аккардеоном пункты В чем проблема уже запутался. Поскажите, знающие люди. &lt;div class=&quot;akkordeon&quot;&gt; ...

86
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
08.01.2024, 20:56  [ТС]
Студворк — интернет-сервис помощи студентам
оказывается
color: rgba(100%, 50%, 0%, 0.1) } /* very transparent solid orange */
Это многое упрощает. И смысл было выкладывать в инернет эти ацкие циклы перебора "1234567890ABCDEF" ?
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
08.01.2024, 21:00
Цитата Сообщение от seregadushka Посмотреть сообщение
Это с каких пор у нас чистейший GREEN называется LIME ?
Цвет lime в RGB CSS представляется следующим образом: rgb(0, 255, 0);

Здесь каждое число указывает на интенсивность красного, зеленого и синего цветов соответственно. В случае цвета lime все числа равны 0, кроме второго, который равен 255, что означает полную интенсивность зеленого цвета.

Таким образом, цвет lime - это чистый зеленый цвет без красного и синего участка.

Добавлено через 2 минуты
https://ru.wikipedia.org/wiki/... %B5%D1%82)

Лайм (HTML/CSS); Green (X11)
HEX 00FF00
RGB¹ (r, g, b) (0, 255, 0)

Нормализовано к [0—255]
0
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
09.01.2024, 00:05  [ТС]
Именч, не согласен, я помню времена, когда никаких лимонов в CSS не было . Если у авторов Wiki мозги поплыли от гамбургров, то я с этим не согласен. Нужно пользоваться русским языком. И не надо подменть понятия -- LIME -- это чистый GREEN.
Вы же понимаете всю нелепость выражения :
LIME ------- .... GREEN ? GREEN ------- .... GREEN
Именч, Что вы выбираете, на вы чьей стороне ? Насколько вы внушаемы ?

Добавлено через 8 минут
модеры, дайте пошутить спокойно вечерком.

Добавлено через 10 минут
в целом ,я к Wiki отошусь положительно ,полезный проект. Но ваша цитата отттудова -- это ниже плинтуса !
Лимон -- это грин. Хороший пример деградации. И лепят туда без проверки, кто что хочет.
Тут даже любой филолог, и без CSS , не пропустит.

Добавлено через 7 минут
Именч, ваш пример на Wiki про Лайм -- 1 из 4 . Слава богу, там есть нормальные авторы, написали правду, что не у всех Лайм -- #00FF00.
Вот когда они удалят с планеты слово Green, тогда он и будет Лаймом.

Добавлено через 4 минуты
вообще какой-то загадочный код у автора . Если добавть ему картинок, и фильтров, побольше. То ровна на 5 начинается дрожание под мышью. Странно. Именно больше 4, в чем разница ? Что там может дрожать. Скрытая защита кода

Добавлено через 2 часа 21 минуту
Гляжу на звезду Давида, не отрываясь. И разглядел, что HSL тоже регулируется значениями 0.... 255, без всяких %. Также как и RGB с %.
Только не ясно, как она отличает градусы от 255 в Hue ? Видно, что картинке уже лет 20, тогда была другая HSL ? Я был уверен, что она в градусах и безразмерная, т.е. без верхнего ограничителя, кратно 360. И желательно использовать deg.
А по картинке видно, что она укладывается в 255. Значит, стандарты изменились, и картинка не соответствует.
Устарела звездочка. Или я ошибаюсь ?
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
09.01.2024, 00:22
Ну в общем я так предполагаю, что вам надо собрать большой белый круглый стол, и нахрен разбить все цвета созданные в 1985–1989 по схеме X11 color names

Ну или купить нормальный монитор за 60 - 80 тысяч, который передаёт настоящие цвета.

Добавлено через 7 минут
Вот список топовых мониторов, за которыми работают профессионалы, которые в месяц зарабатывают как 1000 обычных людей

BenQ SW321C (299 990 ₽): Этот монитор предлагает высокое разрешение, большой цветовой охват и функцию аппаратной калибровки.

LG UltraFine OLED Pro (349 990 ₽): Этот монитор предлагает высокое разрешение, широкий цветовой охват и технологию OLED, которая обеспечивает невероятно точную цветопередачу и высокий контраст.

Asus ProArt PA32UCG-K (689 990 ₽): Этот монитор имеет высокое разрешение, поддержку HDR, большой цветовой охват и поддержку калибровки на аппаратном уровне.

Dell UltraSharp UP3218K (835 990 ₽): Этот монитор обладает невероятно высоким разрешением 8K, широким цветовым охватом и функцией калибровки на аппаратном уровне.

EIZO ColorEdge CG319X (989 990 ₽): Этот монитор обладает высоким разрешением, широким цветовым охватом, а также способен отображать цвета очень точно.
0
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
09.01.2024, 01:06  [ТС]
Именч, и при чем здесь мониторы. У меня постые мониторы, зато 2 шт. Удобно.
Я же просто написал, что сегодня я пишу HSL(989990, ..., ....) и она работает. А на Звезде Давида, эта HSL заткнулась бы на HSL(255, ..., ....) . Я про это . И кого я обидел ?
Рекламщики там серьезные у вас у Интернете. Покупатель за такие деньги хочет точно знать , в цифрах , не "большой цветовой охват", а какой конкретно цветовой охват ? Точно в цифрах или буквах. Даже я их видел, штук 6 или больше уже. Самая простоая, которая всех уcтраивает -- sRGB. Уверен , что ее нет в вашем списке, как совсем дешевой. Adobe тоже там подсуетилась , у нее своя система цвета, пошире.

Добавлено через 11 минут
У видео-монтажеров свои цветовые системы (но это не точно ). Я вижу, в видео-редакторе пишут свои системы, а в рекламе монитров их нет.
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
09.01.2024, 01:12
Цитата Сообщение от seregadushka Посмотреть сообщение
и при чем здесь мониторы.
Притом, что я уже несколько раз слышал что вам не нравятся цвета, которые подобраны специалистами. Тогда может дело в мониторах? Или в том как вы воспринимаете цвета
0
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
09.01.2024, 02:57  [ТС]
Именч,
Цитата Сообщение от Именч Посмотреть сообщение
не нравятся цвета, которые подобраны специалистами
ну какие же они "подобраны" , если ОЧЕВИДНО (!) что все цвета выводят на монитор свои результаты по какой-то формуле -- они раскладывают в мощность сигнала для пикселей монитора. Т.е. выводят, все что им случайная формула скажет, во всех цветовых системах.

И во всех наших примерах кода есть
JavaScript
1
2
function RandomInt(min, max) {
  return Math.floor(Math.random()*(max - min) + min) } ; // стандартная случайная
Вот я нашел первый , достаточно удобный color-picker
Видим, все знакомые системы : RGB, ненавистную HSL, журнальный CMYK . Еще какие есть ?
Ну вот заклинило мненя на "чистых" цветах . Я так понял, это верхний правый угол.
и видим :
RGB работает 0-255 по каждому цвету, перескакивает с одного канала на другой -- сложно !
CMYK работает 0-100 по каждому цвету, перескакивает с одного канала на другой -- сложно !

и только HSL, красавица, держит четко бесполезные S=100%, L=50% , у все цвета выдает только 1 переменной. Ну разве не сказка ?

Именч, даже у Вас в коде !!!
JavaScript
1
2
3
4
    const randomColor = RandomInt(0, 36) * 10;
    const randomColor_hsla = hsla(randomColor, 100, 50, 0.8);
  
    innerHTML_styleElement += `ul li:nth-child(${indexStyle})::before { background-color: ${randomColor_hsla}; }`;
Я не очень, т.е вобще не представляю, что у вас делает функция разложения HSL to RGB
background-color: ${randomColor_hsla} -- разве это не достойный результат ?

Добавлено через 7 минут
ааа, понял, у вас своя функция hsla() . Ясно.
Вы же раскладываете из HSL только 1 цифру , и возвращаете 3 или 4 .

но в моем промежуточном
CSS Accordion-@emoreno911-2

CSS
1
 &:nth-child(1)::before {background-color: hsla($color1, 100%, 50%, $alpha) }
-- работает ! Скажите мне , почему ?????

Добавлено через 17 минут
я шас только заметил, что Вы вынесли ссылки из CSS в JS. Я наблюдательный . Оригинально. И все фильтры и вопросы по цветам решать в JS ? Может и правильно. не надо ничего передавать. Наверно, это упущение автора.
Заметили, что во всех вариантхах кода перескакивает только картинка, а текст -- нет ! Он же по ширине равен картинке . Почемуон такой понятливый ?

Добавлено через 11 минут
и картинка вообще пропадает , или на 2 ряд, выбор у нее большой, только не на своем месте.
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
09.01.2024, 03:14
Цитата Сообщение от seregadushka Посмотреть сообщение
- работает ! Скажите мне , почему ?????
Потому что там компилятор, который компилирует конечный css который отображает браузер. Я думал вы давно поняли это.

Цитата Сообщение от seregadushka Посмотреть сообщение
а текст -- нет !
Можно как то так поиграться
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
@import "compass/css3";
@mixin settingsDefault($width, $height, $opacity, $transition...) {
    @if $width != -1 {
      width: $width;
    }
    @if $height != -1 {
      height: $height;
    }
    opacity: $opacity;
    -moz-transition:    $transition;
    -ms-transition:      $transition;
    -webkit-transition: $transition;
    transition:         $transition;
}
@mixin background-mixin($backgrounds...) {
  $length: length($backgrounds);
  @for $i from 1 through $length {
    $bg: nth($backgrounds, $i);
    &:nth-child(#{$i}) {
      background: url(#{$bg}) top center no-repeat;
    }
  }
}
 
@mixin background-color-mixin($backgrounds...) {
  $length: length($backgrounds);
  @for $i from 1 through $length {
    $bg: nth($backgrounds, $i);
    &:nth-child(#{$i})::before {
      background-color: nth($bg, 1);
      content: nth($bg, 2);
      display: flex;
      align-items: flex-end;
      overflow: hidden;
      color: #fff;
      font-size: 2vw;
    }
  }
}
 
$bg1: "https://dl.dropbox.com/s/mbho5bqfofk6g99/pic.jpg";
$bg2: "https://dl.dropbox.com/s/kioimintl0v9l4d/pic.jpg";
$bg3: "https://dl.dropbox.com/s/7a60gndncwf81x8/pic.jpg";
$bg4: "https://dl.dropbox.com/s/nkwuv9jz8i99309/pic.jpg";
$bgColor1: hsla(60, 100%, 57%, 0.2);
$bgColor2: hsla(122.424, 39%, 49%, 0.25);
$bgColor3: hsla(206.571, 90%, 54%, 0.25);
$bgColor4: hsla(291.241, 64%, 42%, 0.2);
$bgColorTitle1: "Цвет1 Установленный текст который будет отображаться";
$bgColorTitle2: "Цвет2 Установленный текст который будет отображаться";
$bgColorTitle3: "Цвет3 Установленный текст который будет отображаться";
$bgColorTitle4: "Цвет4 Установленный текст который будет отображаться";
 
body { 
  background: #444;
}
 
ul {
 list-style: none;
  max-width: 1200px;
  margin: 0 auto;
  white-space: nowrap;
  
  li {
    display: inline-block;
    vertical-align: top;
    @include settingsDefault(5%,600px,0.4,  all .5s ease-in-out);
    
    &:hover,
    &:first-child ~ li:last-child {
      @include settingsDefault(50%, -1, 1, all .5s ease-in-out);
    }
    
    &:hover ~ li:last-child {
      width: 16.666%;
      opacity: 0.4;
    }
    
    &::before {
      content: "";
      display:block;
      @include settingsDefault(0, 100%, 1, all .5s ease-in-out);
    }
    @include background-color-mixin(($bgColor1, $bgColorTitle1), ($bgColor2, $bgColorTitle2), ($bgColor3, $bgColorTitle3), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4));
    @include background-mixin($bg1, $bg2, $bg3, $bg4, $bg4, $bg4, $bg4, $bg4, $bg4, $bg4);
  }
} 
 
input:checked ~ ul li::before { 
  @include settingsDefault(100%, -1, 1, all .5s ease-in-out);
}
 
input[type="checkbox"] {
  width:555px;
  margin: 15px;
  font-family: "Segoe UI", "Ubuntu", monospace;
  color: white;
  &::before { 
    content: "Pure CSS Accordion";
    font-size: 1.5em;
    position: relative;
    top:-10px;
  }
  &::after{
    content: "Filters Enabled";
    color: #caa;
    position: relative;
    top:-10px;
    left: 5px;
  }
}
 
input[type="checkbox"] { 
  margin-left: calc((100% - 1160px)/2); 
}
1
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
10.01.2024, 17:34  [ТС]
Цитата Сообщение от Именч Посмотреть сообщение
@include background-color-mixin(($bgColor1, $bgColorTitle1), ($bgColor2, $bgColorTitle2), ($bgColor3, $bgColorTitle3), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4), ($bgColor4, $bgColorTitle4));
    @include background-mixin($bg1, $bg2, $bg3, $bg4, $bg4, $bg4, $bg4, $bg4, $bg4, $bg4);
тоже интересная структура

Добавлено через 3 минуты
у Вас даже нет расчетов ширины, как в оригинале.

Добавлено через 2 часа 29 минут
работает и без расчетаов. Как это ?
0
928 / 550 / 292
Регистрация: 07.11.2022
Сообщений: 901
10.01.2024, 18:20
Лучший ответ Сообщение было отмечено seregadushka как решение

Решение

Такой вариант аккордеона:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<form name="Form">
    <input name="input" type="number" class="number" value="5" min="1" max="10" onChange="show()">
</form>
<ul id="container">
</ul>
</body>
</html>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
* {
    margin: 0;
    padding: 0;
}
body {
    background: #000;
    font-family: sans-serif;
}
.number {
    display: block;
    margin: 1em auto 0 auto;
    font-size: 1.2em;
    width: 2em;
}
.number::-webkit-inner-spin-button,
.number::-webkit-outer-spin-button {
    opacity: 1;
}
#container {
    list-style: none;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 10vmin;
    overflow: hidden;
    transform: skew(5deg);
/* промежутки между кнопками
    gap: 1em;
*/
}
#container li {
    flex: 1;
    transition: all 1s ease-in-out;
    height: 75vmin;
    position: relative;
}
#container li .head {
    color: black;
    background: rgba(255, 30, 173, 0.75);
    padding: 0.5em;
    transform: rotate(-90deg);
    transform-origin: 0% 0%;
    transition: all 0.5s ease-in-out;
    height: 2em;
    line-height: 2em;
    padding-left: 2em;
    position: absolute;
    bottom: -3em;
    left: 0;
    font-size: 1.5em;
    text-decoration: none;
    width: 25vh;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
 
#container li:hover {
    flex-grow: 10;
}
#container li:hover img {
    filter: grayscale(0);
}
#container li:hover .head {
    text-align: center;
    top: calc(100% - 4em);
    width: calc(100% - 2em);
    color: white;
    background: rgba(0, 0, 0, 0.5);
    height: 3em;
    line-height: 3em;
    font-size: 2em;
    transform: rotate(0deg) skew(-5deg);
}
#container li img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: all 1s ease-in-out;
    filter: grayscale(100%);
}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var li_str = [
    '<img src="https://i.pinimg.com/originals/54/99/a4/5499a4aa877b16e69f6f63d4bd3c4af1.jpg"><a href="#" class="head">Dog</a>',
    '<img src="https://klike.net/uploads/posts/2019-05/1556868026_15.jpg"><a href="#" class="head">Wave</a>',
    '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Bibendum ut tristique et egestas quis ipsum suspendisse. At ultrices mi tempus imperdiet nulla malesuada pellentesque. Sed nisi lacus sed viverra tellus in hac habitasse platea. Adipiscing at in tellus integer feugiat. Tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Diam in arcu cursus euismod. Arcu bibendum at varius vel. Varius quam quisque id diam vel quam elementum pulvinar etiam. Curabitur vitae nunc sed velit dignissim sodales ut eu. Consequat id porta nibh venenatis cras sed.</a>',
    '<img src="https://sportishka.com/uploads/posts/2022-11/1667569242_23-sportishka-com-p-krasivie-vodopadi-mira-oboi-23.jpg"><a href="#" class="head">Waterfall</a>',
    '<img src="https://forum.samp-vl.su/uploads/monthly_2018_07/download_img.png.d321c47c8509be741a1020e4c94f8648.png"><a href="#" class="head">Sunset</a>',
    '<img src="https://dl.dropbox.com/s/mbho5bqfofk6g99/pic.jpg"><a href="#" class="head">Lorem</a>',
    '<img src="https://dl.dropbox.com/s/kioimintl0v9l4d/pic.jpg"><a href="#" class="head">Ipsum</a>',
    '<img src="https://dl.dropbox.com/s/7a60gndncwf81x8/pic.jpg"><a href="#" class="head">Dolor sit amet</a>',
    '<img src="https://dl.dropbox.com/s/nkwuv9jz8i99309/pic.jpg"><a href="#" class="head">Consectetur adipiscing elit</a>',
    '<img src="https://wallpapersgood.ru/resize/1600x1200/wallpapers/main2/201730/dereva-cvetenie-most-vesna-sakura.jpg"><a href="#" class="head">Sacura</a>',
];
function show() {
  var count = parseInt(document.forms.Form.input.value);
  var block = new Array();
  for (i = 0; i < count; i++)
    block.push('<li>' + li_str[i] + '</li>');
  document.getElementById('container').innerHTML = block.join('');   }
 
window.addEventListener("load", (event) => {
  show()
});
1
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
10.01.2024, 19:48
Цитата Сообщение от seregadushka Посмотреть сообщение
работает и без расчетаов. Как это ?
А вообще расчёты есть.


Можно попробовать и haml, очень мощная.
0
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
10.01.2024, 23:03  [ТС]
rr33rr, нифига себе, это уже ссерьезно.

Добавлено через 31 минуту
Да, действительно. Здесь и цветовой решение уже готовое, все блондинисто-розовое. Не поспоришь.
И нет никакхи споров c коллегой Именч, RGB vs.HSL
Нет моих любимых случайных фильтров. Похоже, что опасная RGB победила.

Но самое главное -- здесь с математикой все пордке . Никаких вторых рядов. Это гораздо важнее, чем цвеовые круги.
Здесь правый край если и есть , то обрезается своим контейнером, а не краем страницы, как у первого автора.

Я считал для оригинала того меню, вывел сложнейшую формулу ширины картинки. Формула упрощается до очевидных ==
(100% - ширина)/(n-1). Вот в -1 была ошибка, хотя пр больших n она не существенна.
Там все сложно с позиционированием. Перескоки на 2 ряд в CSS ничем не ограничены, я удивлен. Нет таких свойств. Весь FLEX только и думает, как бы обеспечить интервалы, и побольше . А с этими перекрытиями и ограичениями ширины должна математика разбираться.
Это меню красивое, все отрабатано.
Никаких background с этим цветом.
Боюсь возбудить коллегу Именч, да здесь RGB . Как тут сделано ? Есть же фильтры в самом CSS, где то я их видел.

rr33rr, , я вижу вв Вашем меню кости от предыщущего варианта. Значит, написано прямо здесь , на форуме -- прямо эксклюзив ? Выглядит убийственно.

Добавлено через 16 минут
все господа, Именч, rr33rr, , я нашел
CSS
1
filter: hue-rotate(...deg);
Будем модернизировать ваши изобретения !
0
928 / 550 / 292
Регистрация: 07.11.2022
Сообщений: 901
10.01.2024, 23:24
Цитата Сообщение от seregadushka Посмотреть сообщение
rr33rr, , я вижу в Вашем меню кости от предыдущего варианта. Значит, написано прямо здесь , на форуме -- прямо эксклюзив ?
Это не мое решение.
Автор Daniel Subat
От меня только небольшая доработка напильником (вроде авто-обрезания длинных подписей, замена их на ссылки, ликвидация лишних классов путем замены вложенных div-ов на список и еще по мелочи) + адаптация под вашу задачу "изменения числа пунктов в аккордеоне на лету"
1
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
11.01.2024, 02:20  [ТС]
Именч, война RGB vs.HSL продолжается !
CSS
1
background: hsla(var(--hue), 100%, 50%, 0.5);
-- прекрасно работает и без америкосовских $color !

Добавлено через 14 минут
кажется, мой светофор с любимой hsla(...) обретает очертания

Добавлено через 1 час 10 минут
хотя если убрать цвета блондинок, то менюшки от коллеги Именч отсюдова -- близнецы-сестры ,

Добавлено через 1 час 11 минут
все, почти . Сделал случайный цвет. Разный при :hover и без .

Шикарно, что функция Show() работает при изменении числа пунктов. Жаль, что такая классная штуковина не будет задействована после настройки сайта.

Но я не такой изверг, все эти радужные примочки отключаемые -- у кого четкая тема сайта, все учтено. Хотя что может быть четче случайного цвета : )

Добавлено через 5 минут
rr33rr, оптимизировал Ваш код. Ужал его на 9 байт + 3 пробела !
CSS
1
transition: all 0.5s ease-in-out;
--- all не обязательно ! Новейшие разработки. Обращайтесь.
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
11.01.2024, 04:51
Цитата Сообщение от seregadushka Посмотреть сообщение
кажется, мой светофор с любимой hsla(...) обретает очертания
Ничего не изменил конечно, но, вот так будет в scss

CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
$color_1: black;
$color_2: white;
$font-family_1: sans-serif;
 
* {
    margin: 0;
    padding: 0;
}
body {
    background: #000;
    font-family: $font-family_1;
}
&:root {
    --hue: calc(100 + var(--huejs));
    --shift: 120;
    --alpha: .5;
    --time: 1.5s ease-in-out;
    --slant: 5deg;
}
.number {
    display: block;
    margin: 1em auto 0 auto;
    font-size: 1.2em;
    width: 2em;
    &::-webkit-inner-spin-button {
        opacity: 1;
    }
    &::-webkit-outer-spin-button {
        opacity: 1;
    }
}
#container {
    list-style: none;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 10vmin;
    overflow: hidden;
    transform: skew(var(--slant));
    li {
        flex: 1;
        transition: var(--time);
        height: 75vmin;
        position: relative;
        .head {
            color: $color_1;
            background: hsla(var(--hue), 100%, 50%, var(--alpha));
            padding: 0.5em;
            transform: rotate(-90deg);
            transform-origin: top left;
            transition: var(--time);
            height: 2em;
            line-height: 2em;
            padding-left: 2em;
            position: absolute;
            bottom: -3em;
            left: 0;
            font-size: 1.5em;
            text-decoration: none;
            width: 25vh;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        &:hover {
            flex-grow: 10;
            img {
                filter: grayscale(0);
            }
            .head {
                text-align: center;
                top: calc(100% - 4em);
                width: calc(100% - 2em);
                color: $color_2;
                background: hsla(calc(var(--hue) + var(--shift)), 100%, 50%, var(--alpha));
                height: 3em;
                line-height: 3em;
                font-size: 2em;
                transform: rotate(0deg);
            }
        }
        img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            transition: var(--time);
            filter: grayscale(100%);
        }
    }
}
1
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
11.01.2024, 05:19  [ТС]
Именч, rr33rr, гспада,
CSS
1
2
3
4
5
6
7
8
#container {
    list-style: none;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 10vmin;
    overflow: hidden;
    transform: skew(var(--slant));
(строка 32) -- очень вредная переменная, заменяет собой skew()

Так она подло наклоняет не только текст (на ее совести, не критично), но наклоняет и фотки . !
При 5% не так заметно, но в любом случае -- это искажения. На верикально стоящих деревьях или женщинах -- это опасно такие сайты делать.

Я понимаю, что там наполнение этого

HTML5
1
<ul id="container"></ul>
ижет последовательно, картинки + текст. Разделение невозможно.
Но так оставлять нельзя. Есть какие-то варианты натравить это стиль id="container" только на текст.
Как он там , может избитрательно вынюхивать объекты ?

В крайнем случает, придется skew(0)
0
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
12.01.2024, 01:11  [ТС]
Конечно, не только текст, а весь контейнер. Но картинка должна быть в фоне контейнера. Высота картин может быть полная, а их наклонные края пусть обрезаются

Добавлено через 2 часа 56 минут
Именч, rr33rr, коллеги, спасибо за помошь !!
CSS
1
2
#container img {
    transform: skew(calc(var(--slant) * (-1))); }
и это не работает !

посмотрите на края этой галереи. Вот края обрезаются ПРАВИЛЬНО ! Как это повторить по всем объектам ?
Я так понимаю , что этот CSS не видит информацию по краям, и эффект ВЕРНЫЙ.

Добавлено через 11 минут
а можно как включить в состав<li></li> промежуточную прозрачную картинку, а первую исключить из стиля ?

Добавлено через 57 минут
поместил 2 картинки подряд , 1 пункт
JavaScript
1
2
3
 '<img src="https://i.pinimg.com/originals/54/99/a4/5499a4aa877b16e69f6f63d4bd3c4af1.jpg">
  <img class="trans" src="https://seregasmyfavoritesites.on.drv.tw/Site/CSS-JS/image/Transparent-800-600.png">
  <a href="#" class="head">Dog</a>',
CSS
1
2
3
#container li img.trans {   /**/
    position: absolute; /**/
    z-index: 1;
так можно ? PNG-32-bit, transparent. В итоге Черный экран.
Судя по другой подсветке в JS , что-то там не хорошо. Второй <img> лишний jOJMybo

коллеги, а вы знали что лишние пробелы не такие безобидные ? Если в этом JS понаставить пробелов -- ни черта не работает.
можно подряд <img....><img....> -- никто не запрещает.
Как заставить искажаться 2 <img class="transparent"....> , а нижний нет ?

все-таки я запихал промежуточное изображение. И вы меня не остановите !

вот так выглядит прозрачный PNG. В интеренте слышали про русский PNG ?
Миниатюры
Меню-аккордеон с числом пунктов  
0
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
12.01.2024, 08:18  [ТС]
и почему-то в JS надо было верхнюю картику указать первой. Нижняя идет второй. z-index был верный, но последовательность <img> сразу не работала. Рладно, явозможно кеш не обновил. Все уже удалил, это для сведения -- JS работает наоборот.

Добавлено через 7 минут
только в поиске -- "обрезка границ" , первая ссылка
CSS
1
clip-path: polygon(0 0, 100% 10%, 100% 90%, 0 100%);
гляньте какая красота, я оставлю это. :HOVER совмещает ошибочный наклон skew и этот clip-path: polygon -- эффект 3D жесточайщий.
clip-path: polygon

ну это ваще -- skew(10deg) только в градусах, clip-path: polygon(0 0, 100% 10%, 100% 90%, 0 100%); -- только в % .
Я не знаю, почему такие засады постояно ??? -- угол постоянен, а % зависят от ширины каждой картины и меняются при :hover

Добавлено через 5 часов 2 минуты
Почистил Кодепен, отлично, слетела последняя ссылка, самая красивая.Там легко можно дать одинаковые имена, сложно группировать . Люди пишут, что Кодепен специальнот издаёт трудности, чтобы народ подсаживать на свое ПРО.
Надо восстановить ацкое 3D по моим комментам
0
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
12.01.2024, 19:15  [ТС]
промежуточное изображение. выше.
Код

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<form name="Form">
    <input name="input" type="number" class="number" value="5" min="1" max="20" onChange="show()">
</form>
<ul id="container">
</ul>
</body>
</html>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
* {
    margin: 0;
    padding: 0;
}
body {
    background: #000;
    font-family: sans-serif;
}
:root {--hue: calc(100 + var(--huejs)); /* тема сайта (0-360 градусов)*/ 
       --shift: 120; /* смещение цвета (+-180 градусов)*/
       --alpha: .5; /* непрозрачность (0-1)*/
       --time: 1.5s /*ease-in-out */cubic-bezier(0.3, -0.1, 0.5, 1.3);
       --slant: 10deg; /* наклон (+-30 градусов)*/
}
.number {
    display: block;
    margin: 1em auto 0 auto;
    font-size: 1.2em;
    width: 2em;
}
.number::-webkit-inner-spin-button,
.number::-webkit-outer-spin-button {
    opacity: 1;
}
#container {
    position: relative;  /**/
    list-style: none;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 10vmin;
    overflow: hidden;
    transform: skew(var(--slant));
/* промежутки между кнопками 
    gap: 1em; */
}
 
#container li {
    position: relative;
    flex: 1;
    transition: var(--time);
    height: 75vmin;
 
}
#container li img {
    position: absolute; /**/
    z-index: 0;  /**/
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(1);
    transform: skew(calc(var(--slant)));
    transition: var(--time);
}
 
#container li img.trans {   /**/
    position: absolute; /**/
    transform: skew(calc(var(--slant) * (-1))); /**/
    z-index: 1;
}
 
#container li .head {
    position: absolute;
    height: 2em;
    line-height: 2em;
    padding-left: 2em;
    bottom: -3em;
    left: 0;
    color: black;
    font-size: 1.5em;
    text-decoration: none;
    width: 25vh;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    background: hsla(var(--hue), 100%, 50%, var(--alpha));
    padding: 0.5em;
    transform: rotate(-90deg);
    transform-origin: top left;
    transition: var(--time);
}
 
#container li:hover {
    flex-grow: 10;
}
#container li:hover img {
    filter: grayscale(0);
}
#container li:hover .head {
    text-align: center;
    top: calc(100% - 4em);
    width: calc(100% - 2em);
    color: white;
    background: hsla(calc(var(--hue) + var(--shift)), 100%, 50%, var(--alpha));
    height: 3em;
    line-height: 3em;
    font-size: 2em;
    transform: rotate(0deg) /* skew(-5deg) */;
}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var li_str = [
    '<img class="trans" src="https://seregasmyfavoritesites.on.drv.tw/Site/CSS-JS/image/Transparent-800-600.png"><img src="https://i.pinimg.com/originals/54/99/a4/5499a4aa877b16e69f6f63d4bd3c4af1.jpg"><a href="#" class="head">Dog</a>',
    '<img src="https://klike.net/uploads/posts/2019-05/1556868026_15.jpg"><a href="#" class="head">Wave</a>',
    '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
    '<img src="https://sportishka.com/uploads/posts/2022-11/1667569242_23-sportishka-com-p-krasivie-vodopadi-mira-oboi-23.jpg"><a href="#" class="head">Waterfall</a>',
    '<img src="https://forum.samp-vl.su/uploads/monthly_2018_07/download_img.png.d321c47c8509be741a1020e4c94f8648.png"><a href="#" class="head">Sunset</a>',
    '<img src="https://dl.dropbox.com/s/mbho5bqfofk6g99/pic.jpg"><a href="#" class="head">Lorem</a>',
    '<img src="https://dl.dropbox.com/s/kioimintl0v9l4d/pic.jpg"><a href="#" class="head">Ipsum</a>',
    '<img src="https://dl.dropbox.com/s/7a60gndncwf81x8/pic.jpg"><a href="#" class="head">Ski</a>',
    '<img src="https://dl.dropbox.com/s/nkwuv9jz8i99309/pic.jpg"><a href="#" class="head">Mountain</a>',
    '<img src="https://wallpapersgood.ru/resize/1600x1200/wallpapers/main2/201730/dereva-cvetenie-most-vesna-sakura.jpg"><a href="#" class="head">Sacura</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Bibendum ut tristique et egestas quis ipsum suspendisse. Bibendum ut tristique et egestas quis ipsum suspendisse. </a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
];
 
function RandomInt(min, max) {
    return Math.floor(Math.random() * (max - min) + min) };
 
let root = document.querySelector(":root");
let rand = 1; // Случайный цвет (0,1)
 
function show() {
  var count = parseInt(document.forms.Form.input.value);
  
  var huejs = RandomInt(10, 36) * 10 * rand;
  root.style.setProperty('--huejs', huejs);
  
  var block = new Array();
  for (i = 0; i < count; i++)
    block.push('<li>' + li_str[i] + '</li>');
  document.getElementById('container').innerHTML = block.join('');  }
 
window.addEventListener("load", (event) => {
  show()
});


Добавлено через 6 минут
clip-path: polygon + skew = 3D -- примерно восстановленный результат выше.
Код

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<form name="Form">
    <input name="input" type="number" class="number" value="5" min="1" max="20" onChange="show()">
</form>
<ul id="container">
</ul>
</body>
</html>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
* {
    margin: 0;
    padding: 0;
}
body {
    background: #000;
    font-family: sans-serif;
}
:root {--hue: calc(100 + var(--huejs)); /* тема сайта (0-360 градусов)*/ 
       --shift: 120; /* смещение цвета (+-180 градусов)*/
       --alpha: .5; /* непрозрачность (0-1)*/
       --time: 1.5s /*ease-in-out */cubic-bezier(0.3, -0.1, 0.5, 1.3);
       --slant: 5deg; /* наклон (+-30 градусов)*/
       --imgclip: polygon(0 0, 95% 5%, 100% 95%, 5% 100%); /*обрезка изображения*/
}
.number {
    display: block;
    margin: 1em auto 0 auto;
    font-size: 1.2em;
    width: 2em;
}
.number::-webkit-inner-spin-button,
.number::-webkit-outer-spin-button {
    opacity: 1;
}
#container {
    position: relative;  /**/
    list-style: none;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 5vmin 5vmin; /*отступы по верт и бокам всего контейнера, все 4 + vmin*/
    overflow: hidden;
    transform: skew(var(--slant));
    gap: 0em;     /*промежутки между кнопками */
}
 
#container li {
    position: relative;
    flex: 1;
    transition: var(--time);
    height: 100vmin; /* высота пунктов внутри контейнера*/ 
}
#container li img {
    position: absolute; /**/
  /*  z-index: 0;  */
    width: 100%;
    height: 100%;
    object-fit: cover; /* покрытие изображений: contain */ 
    filter: grayscale(1);
    clip-path: var(--imgclip);
 /* transform: skew(calc(var(--slant))); */
    transition: var(--time); 
}
 
#container li .head {
    position: absolute;
    height: 1em;   /*высота плашек*/
    width: 25vh;
    /* margin-left: 0.0em;  /*отступ  плашек слева hover*/     
    padding: 0.5em;/*padding-left: 2em; */
    color: black;
    font-size: 2vw;
    line-height: 1em; 
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow:ellipsis;/*ellipsis; none; */
    text-align: center;
    background: hsla(var(--hue), 100%, 50%, var(--alpha));
    transform-origin: top left;
    transform: rotate(-90deg);
    transition: var(--time);
    animation: animateBottomOut var(--time) both;
}
 
@keyframes animateBottomOut {
  from {bottom:  0em }
    to {bottom: -3em }      }
 
#container li:hover {
    flex-grow: 10;
}
#container li:hover img {
    filter: grayscale(0);
    clip-path: var(--imgclip);
    transform: skew(calc(var(--slant) * (-1)));
}
#container li:hover .head {
/*  position: relative;     */ 
    text-align: center;   
 /* height: 2em; 
    line-height: .2em; */
    font-size: 2em; /*работает скрипт*/
    width: calc(100% - 1em); /* * var(--count) , горизонт ширина hover*/
    background: hsla(calc(var(--hue) + var(--shift)), 100%, 50%, var(--alpha));
    transform: rotate(0deg) /* skew(-5deg) */;
    transition: transform var(--time);
    animation: animateBottomHover var(--time) both;
}
  @keyframes animateBottomHover {
  from {bottom: -3em }
    to {bottom:  0em }          }
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
var li_str = [
    '<img src="https://i.pinimg.com/originals/54/99/a4/5499a4aa877b16e69f6f63d4bd3c4af1.jpg"><a href="#" class="head">Dog</a>',
    '<img src="https://klike.net/uploads/posts/2019-05/1556868026_15.jpg"><a href="#" class="head">Wave</a>',
    '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
    '<img src="https://sportishka.com/uploads/posts/2022-11/1667569242_23-sportishka-com-p-krasivie-vodopadi-mira-oboi-23.jpg"><a href="#" class="head">Waterfall</a>',
    '<img src="https://forum.samp-vl.su/uploads/monthly_2018_07/download_img.png.d321c47c8509be741a1020e4c94f8648.png"><a href="#" class="head">Sunset</a>',
    '<img src="https://dl.dropbox.com/s/mbho5bqfofk6g99/pic.jpg"><a href="#" class="head">Lorem</a>',
    '<img src="https://dl.dropbox.com/s/kioimintl0v9l4d/pic.jpg"><a href="#" class="head">Ipsum</a>',
    '<img src="https://dl.dropbox.com/s/7a60gndncwf81x8/pic.jpg"><a href="#" class="head">Ski</a>',
    '<img src="https://dl.dropbox.com/s/nkwuv9jz8i99309/pic.jpg"><a href="#" class="head">Mountain</a>',
    '<img src="https://wallpapersgood.ru/resize/1600x1200/wallpapers/main2/201730/dereva-cvetenie-most-vesna-sakura.jpg"><a href="#" class="head">Sacura</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Bibendum ut tristique et egestas quis ipsum suspendisse. Bibendum ut tristique et egestas quis ipsum suspendisse. </a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
      '<img src="https://kartinkof.club/uploads/posts/2022-09/1662431382_14-kartinkof-club-p-novie-i-krasivie-kartinki-puma-20.jpg"><a href="#" class="head">Pantera</a>',
];
 
function RandomInt(min, max) {
    return Math.floor(Math.random() * (max - min) + min) };
 
let root = document.querySelector(":root");
let rand = 1; // Случайный цвет (0,1)
 
function show() {
  var count = parseInt(document.forms.Form.input.value);
  root.style.setProperty('--count', count); //
  
  var huejs = RandomInt(10, 36) * 10 * rand;
  root.style.setProperty('--huejs', huejs);
  
  var block = new Array();
  for (i = 0; i < count; i++)
    block.push('<li>' + li_str[i] + '</li>');
  document.getElementById('container').innerHTML = block.join('');  }
 
window.addEventListener("load", (event) => { show() });
 
window.onload = function fontSizeHover() {
  var container = document.getElementById('container');
  container.onmouseover = function() {
    var fontSizeNum = parseFloat(window.getComputedStyle(container, null).getPropertyValue('font-size'));
    container.style.fontSize = (fontSizeNum * 2) + 'px';
  } /* размер шрифта наведения */
 container.onmouseout = function fontSizeOut() {
    container.style.fontSize = '2vw';
  }
}
0
35 / 3 / 0
Регистрация: 22.08.2011
Сообщений: 172
16.01.2024, 12:41  [ТС]
Именч, rr33rr, коллеги, вот простой вопрос

CSS
1
2
3
4
5
6
#container li .head {
    font-size: 2vw;
}
 
#container li:hover .head {
    font-size: 2em;  /*работает скрипт*/
JavaScript
1
2
3
4
5
6
7
8
9
10
11
window.onload = function fontSizeHover() {
  var container = document.getElementById('container');
  container.onmouseover = function() {
    var fontSizeNum = parseFloat(window.getComputedStyle(container, null).getPropertyValue('font-size'));
    container.style.fontSize = (fontSizeNum * 2) + 'px';
  } 
 
 container.onmouseout = function fontSizeOut() {
    container.style.fontSize = '2vw';
  }
}
есть простое желание --
Шрифт без :HOVER { 2vw }; шрифт :HOVER в 2 раза больше;
Что-то не получается .

я насобирал куски функций в JS . в скрипте идет увеличение шрифта. Но оно не работает. Но есть поставить в стиле :HOVER font-size: 2em; то работает, но больше похоже на увеличение в 4 раза, а не в 2 раза.
Вопрос: зачем тогда вообще скрипт ? И что он делает , если сам по себе он ничего, а с ним стили увеличиваются в 4 раза. Почему стиль :HOVER не работает без скрипта ?
смотреть верхняя ссылка , ближайшая
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2024, 12:41
Помогаю со студенческими работами здесь

Адаптивное меню. Глюк в виде выделения пунктов меню
Описание проблемы.. Есть меню. При &quot;собранном&quot; состоянии, когда несколько раз нажать кнопку &quot;открыть -закрыть&quot; - выделяются...

Модуль меню аккордеон для двух и более меню
Скачал хороший модуль меню для joomla3, только хочется использовать его не только для главного меню, но, например, и для бокового на одной...

Меню-аккордеон
Добрый день Ув. пользователи форума. Возникла проблема с блоками меню, решил воспользоваться jQuery. Неполучается сделать скрытие фона...

меню-аккордеон
Здравствуйте, есть код меню типа аккордеон. Как сделать, чтоб оно не схлопывалось при щелчке. &lt;ul id=&quot;nav&quot;&gt; ...

Меню аккордеон
Это код меню аккордеона &lt;script type=&quot;text/javascript&quot;&gt; $(document).ready(function() { // Хранение переменных var...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru