Как добавить Smooth CSS из выпадающего меню

0

Мне удалось создать меню с выпадающим меню (подменю) с помощью CSS. Но я не могу добавить гладкий эффект выпадающего меню для моего кодирования. Я попытался добавить -moz-переход и многое другое. Я не знал, где добавить этот переход, чтобы сделать обычное раскрывающееся меню плавным выпадающим меню.

Ниже мой HTML-код

<div id='cssmenu'>
<ul>
   <li class='active'><a href='index.html'><span>Home</span></a></li>
   <li class='has-sub'><a href='#'><span>Products</span></a>
      <ul>
         <li class='has-sub'><a href='#'><span>Product 1</span></a>
            <ul>
               <li><a href='#'><span>Sub Item</span></a></li>
               <li class='last'><a href='#'><span>Sub Item</span></a></li>
            </ul>
         </li>
         <li class='has-sub'><a href='#'><span>Product 2</span></a>
            <ul>
               <li><a href='#'><span>Sub Item</span></a></li>
               <li class='last'><a href='#'><span>Sub Item</span></a></li>
            </ul>
         </li>
      </ul>
   </li>
   <li><a href='#'><span>About</span></a></li>
   <li class='last'><a href='#'><span>Contact</span></a></li>
</ul>
</div>

Вот css

<style media="screen" type="text/css">
    #cssmenu ul,
    #cssmenu li,
    #cssmenu span,
    #cssmenu a {
      margin: 0;
      padding: 0;
      position: relative;
    }
    #cssmenu {
      height: 49px;
      border-radius: 5px 5px 0 0;
      -moz-border-radius: 5px 5px 0 0;
      -webkit-border-radius: 5px 5px 0 0;
      background: #fefefe;
      background: -moz-linear-gradient(top, #fefefe 0%, #eee9f0 100%);
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fefefe), color-stop(100%, #eee9f0));
      background: -webkit-linear-gradient(top, #fefefe 0%, #eee9f0 100%);
      background: -o-linear-gradient(top, #fefefe 0%, #eee9f0 100%);
      background: -ms-linear-gradient(top, #fefefe 0%, #eee9f0 100%);
      background: linear-gradient(top, #fefefe 0%, #eee9f0 100%);
      border-bottom: 2px solid #db000b;
      width: auto;
    }
    #cssmenu:after,
    #cssmenu ul:after {
      content: '';
      display: block;
      clear: both;
    }
    #cssmenu a {
      background: #fefefe;
      background: -moz-linear-gradient(top, #fefefe 0%, #ececec 100%);
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fefefe), color-stop(100%, #ececec));
      background: -webkit-linear-gradient(top, #fefefe 0%, #ececec 100%);
      background: -o-linear-gradient(top, #fefefe 0%, #ececec 100%);
      background: -ms-linear-gradient(top, #fefefe 0%, #ececec 100%);
      background: linear-gradient(top, #fefefe 0%, #ececec 100%);
      color: #000;
      display: inline-block;
      font-family: Helvetica, Arial, Verdana, sans-serif;
      font-size: 12px;
      line-height: 49px;
      padding: 0 20px;
      text-decoration: none;
    }
    #cssmenu ul {
      list-style: none;
    }
    #cssmenu > ul {
      float: left;
    }
    #cssmenu > ul > li {
      float: left;
    }
    #cssmenu > ul > li > a {
      color: #000;
      font-size: 12px;
    }
    #cssmenu > ul > li:hover:after {
      content: '';
      display: block;
      width: 0;
      height: 0;
      position: absolute;
      left: 50%;
      bottom: 0;
      border-left: 10px solid transparent;
      border-right: 10px solid transparent;
      border-bottom: 10px solid #db000b;
      margin-left: -10px;
    }
    #cssmenu > ul > li:first-child > a {
      border-radius: 5px 0 0 0;
      -moz-border-radius: 5px 0 0 0;
      -webkit-border-radius: 5px 0 0 0;
    }
    #cssmenu > ul > li.active:after {
      content: '';
      display: block;
      width: 0;
      height: 0;
      position: absolute;
      left: 50%;
      bottom: 0;
      border-left: 10px solid transparent;
      border-right: 10px solid transparent;
      border-bottom: 10px solid #db000b;
      margin-left: -10px;
    }
    #cssmenu > ul > li.active > a {
      -moz-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1);
      -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1);
      box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1);
      background: #ececec;
      background: -moz-linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ececec), color-stop(100%, #ffeeff ef));
      background: -webkit-linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
      background: -o-linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
      background: -ms-linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
      background: linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
    }
    #cssmenu > ul > li:hover > a {
      background: #ececec;
      background: -moz-linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ececec), color-stop(100%, #ffeeff ef));
      background: -webkit-linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
      background: -o-linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
      background: -ms-linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
      background: linear-gradient(top, #ececec 0%, #ffeeff ef 100%);
      -moz-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1);
      -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1);
      box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1);
    }
    #cssmenu .has-sub {
      z-index: 1;
    }
    #cssmenu .has-sub:hover > ul {
      display: block;
    }
    #cssmenu .has-sub ul {
      display: none;
      position: absolute;
      width: 200px;
      top: 100%;
      left: 0;
    }
    #cssmenu .has-sub ul li {
      *margin-bottom: -1px;
    }
    #cssmenu .has-sub ul li a {
      background: #db000b;
      border-bottom: 1px dotted #ff0f1b;
      filter: none;
      font-size: 11px;
      display: block;
      line-height: 120%;
      padding: 10px;
      color: #ffffff;
    }
    #cssmenu .has-sub ul li:hover a {
      background: #a80008;
    }
    #cssmenu .has-sub .has-sub:hover > ul {
      display: block;
    }
    #cssmenu .has-sub .has-sub ul {
      display: none;
      position: absolute;
      left: 100%;
      top: 0;
    }
    #cssmenu .has-sub .has-sub ul li a {
      background: #a80008;
      border-bottom: 1px dotted #ff0f1b;
    }
    #cssmenu .has-sub .has-sub ul li a:hover {
      background: #8f0007;
    }
    </style>
  • 0
    Вы можете использовать [twitter bootstrap] [1], которые предоставляют очень хорошее выпадающее меню [1]: getbootstrap.com
  • 0
    JQuery slideDown ()?
Теги:
drop-down-menu

4 ответа

1

Когда вы написали "гладкое меню CSS", которое вы имели в виду без javascript и только CSS?

Если это так, используйте переход css уровня 3.

#cssmenu ul ul { 
    /* this will apply to inner UL, adapt to your desired selector */
    -webkit-transition: height 0.3s ease-in-out;
    -o-transition: height 0.3s ease-in-out;
    -moz-transition: height 0.3s ease-in-out;
    transition: height 0.3s ease-in-out;
}

[РЕДАКТИРОВАТЬ]

Если он не работает для вашего контекста, возможно, это потому, что нет высоты для вашего внутреннего элемента UL.

#cssmenu .has-sub:hover > ul {
  display: block;
  height:auto; /* add this */
}
#cssmenu .has-sub ul {
  display: none;
  position: absolute;
  width: 200px;
  height:0; /* add this */
  top: 100%;
  left: 0;
}

Для получения дополнительной информации о теме для кросс-браузерного решения, найдите сеть для генератора перехода css

  • 0
    Хорошо, вы использовали только CSS .. !! мой upvote для вас .. !!
  • 0
    Я пытался добавить вышеупомянутое в мой CSS, но вывод такой же, как и раньше
Показать ещё 2 комментария
0

Я использую это http://cssdeck.com/labs/pure-css3-smooth-drop-down-menu

Это меню создано только в CSS3, которое вдохновлено этим сообщением на Forrst! Это состоит из вложенной структуры ul для создания второго уровня меню, которое изначально скрыто с непрозрачностью, равной 0. Когда ссылка зависнет, соответствующая ul отображается и покачивается вниз. Это достигается путем установки его непрозрачности на 1 и изменения его верхнего смещения, когда он зависает в сочетании с переходами CSS3 для плавного анимирования процесса.

Проверьте код и поиграйте с ним столько, сколько захотите :)

  • 0
    Приветствую пользователя3065369. Вам предлагается пройти экскурсию по вопросам и ответам. Вы найдете полезные советы о том, чтобы не размещать ссылку, которая больше похожа на объявление, чем на ответ. stackoverflow.com/tour
0

u может использовать jquery для смягчения эффектов для вашего меню dropdwon, вот один пример

http://devsnippets.com/article/slick-drop-down-menu-with-easing-effect-using-jquery-css.html

0

Я бы рекомендовал использовать что-то более обширное, например jQuery, чтобы дать вам желаемый эффект. Здесь ссылка на эффект "аккордеона", который звучит как то, что вы собираетесь делать. Расположение меню аккордеона полностью настраивается - так что не беспокойтесь, если вам не нравится дизайн макета по умолчанию.

http://jqueryui.com/accordion/#default

Добавление jQuery на вашу веб-страницу занимает около 30 секунд, но дает вам целую вечность полезных дополнений, анимаций и интерактивной обработки контента для вашей страницы!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню