За последние 24 часа нас посетили 20976 программистов и 1015 роботов. Сейчас ищут 407 программистов ...

Flex и выпа дающее простое меню

Тема в разделе "HTML и CSS", создана пользователем Vladchucha, 13 июн 2021.

  1. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Добрый день,
    FF говорит "Filter rules containing this property" на первое свойство
    и его злобно зачеркивает.
    На второе :
    "flex-direction has no effect on this element since it’s not a flex container.
    Try adding display:flex or display:inline-flex."

    Третье и четвертое свойства - претензий нет.
    Код (CSS):
    1. .submenu {
    2.     display: flex;
    3.     flex-direction: column;
    4.     position: absolute;
    5.     display: none;
    6. }
    Понимаю, но что делать - нет.
    Есть простое горизонтальное меню на <ul>,<li>.
    Все ОК, работает. Теперь хочу в одном из пунктов сделать
    выпадающее меню.
    То есть в <li> всобачиваю <ul> и там несколько<li>.
    Пишу класс submenu.
    Работает, но некорректно - список открывется, но сдвинут вправо
    процентов на 50 и промежутки между строчками (пунктами подменю).
    Хотелось бы помощи, где ошибка.
    Спасибо.
     
  2. roboformation

    roboformation Активный пользователь

    С нами с:
    30 авг 2020
    Сообщения:
    162
    Симпатии:
    40
    А что у вас два display в одном блоке? Для сокрытия и раскрытия используется visibility
     
    Vladchucha нравится это.
  3. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Спасибо, но теперь вообще перестал этот мир понимать.
    Попробую описать. Как работает сейчас можно здесь
    http://www.ockham.xyz посмотреть.
    Меню все расположено в
    <nav></nav>. Внутри две части из <ul> </ul>, правая и левая.
    В левой несколько <li> и в одной из них <ul> для выпадающего меню из <li>.
    В этом <ul> используется класс .submenu.
    Для .submenu a {} работае правильно, то есть действую правила из .submenu,
    но для .submenu li и li:hover .submenu действует правила, описанные для <li> в <nav>.
    То есть плюет на мои указания.
    Что не так ?
    Внизу текст.
    Спасибо.
    Код (CSS):
    1. .submenu{
    2.     flex-direction: column;
    3.     position: absolute;
    4.     display: none;
    5. }
    6. .submenu a{
    7.     background-color: buttonshadow;
    8. /*background-color:  #6699CC;*/
    9.     font-size: 0.8em;
    10.     white-space: nowrap;
    11.  
    12. }
    13. .submenu li{
    14. /*    padding: 0 0.3em 0 0.1em !important;*/
    15.  
    16. }
    17.  
    18. li:hover .submenu{
    19.   display: flex;
    20.   clip: auto;
    21.   width: auto;
    22.   height: auto;
    23.   margin: 0;
    24.    padding: 0.3em 0.1em 0 0.1em !important;
    25. }
    26. /*********************************************************+*/
    27. .blockr{
    28.   margin-left: auto;
    29.   margin-right: 5px;
    30.   margin-top: 5px;
    31. }
    32. .disp{
    33.     display:flex;
    34.     background: buttonshadow;
    35. }
    36. nav ul {
    37.   /*background: repeating-linear-gradient(to right, darkgreen
    38.   10px, green 15px, darkgreen 20px, #287635 32px);*/
    39.  
    40.   padding: 3px 3%; /
    41.   margin: 0;
    42.   text-align: left;
    43.   color: yellow;
    44. }
    45. nav ul li {
    46.   font-size: 1.2em;
    47.   display: inline;
    48.   list-style-type: none;
    49.   border-left:  0px solid white;
    50.   padding: 0 0.3em 0 0.5em;
    51.   font-weight: bold;
    52. }
    53. nav ul li a {
    54. /* color: black; /* Hier ist das mit der Linkfarbe genauso, sie soll wei� sein. */
    55.   padding:0.1em  0.5em;
    56.   border-radius:0.5em;
    57.   text-decoration: none;
    58. }
    59.  
    60. nav ul li a:hover,
    61. nav ul li a:focus {
    62.     color:green;
    63.     background: azure;
    64.     opacity:0.8;
    65. }
    HTML:
    HTML:
    1.  
    2. <nav  class="disp">
    3.       <ul  class="disp">
    4.             <li>....</li>
    5.             <li >.
    6.                 <ul class="submenu">
    7.                   <li>text    <li/>
    8.                  <li>text    <li/>
    9.                  <li>text    <li/>
    10.                 </ul>
    11.             </li>
    12.      </ul>
    13.         <ul class="blockr">
    14.             ......
    15.          </ul>
    16. </nav>
    17.  
     
  4. roboformation

    roboformation Активный пользователь

    С нами с:
    30 авг 2020
    Сообщения:
    162
    Симпатии:
    40
    Не совсем понимаю вас. Вроде, подменю работает как надо, если смотреть на вашем сайте. Что конкретно не нравится?
     
  5. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Нет, надо убрать промежуток между пунктами выпадающего меню или сделать цвет такой же как в
    самом (самих) пунктах.
    Это неполучается, проблема выше описана.
     
  6. roboformation

    roboformation Активный пользователь

    С нами с:
    30 авг 2020
    Сообщения:
    162
    Симпатии:
    40
    У вас в блоках с селекторами ul и ul li margin-bottom стоит. Обнулите его для .submenu
     
    Vladchucha нравится это.
  7. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Thanks,
    попробовал - толку нет.
    Я думаю проблема вот в чем.
    Инспектор показывает строчку
    <ul class="submenu"> серым цветом, наскольк я понимаю, это значит,
    что он не действует. И когда я смотрю на свойтва <li> внутри,
    то он показывает
    Код (CSS):
    1. nav ul li {
    2.     font-size: 1.2em;
    3.     display: inline;
    4.     list-style-type: none;
    5.     border-left: 0px solid white;
    6.     padding: 0 0.3em 0 0.5em;
    7.     font-weight: bold;
    8. }
    То есть это подтверждает, что класс .submenu
    не имеет никакой силы.
    ПОЧЕМУ - я не могу понять.
    Или ошибка вообще в другом?
     
  8. roboformation

    roboformation Активный пользователь

    С нами с:
    30 авг 2020
    Сообщения:
    162
    Симпатии:
    40
    Не знаю, как вы обнуляли, но я у вас в коде изменил вот так:
    Код (CSS):
    1. .submenu li {
    2.          margin-bottom: 0;
    3. }
    И меня пункты подменю прижались
    --- Добавлено ---
    У вас еще там вот такой коммент лежит:
    /* padding: 0 0.3em 0 0.1em !important;*/
     
    Vladchucha нравится это.
  9. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Спасибо !!!