И снова здравствуйте! :)

 

В предыдущей статье я рассказывал, как с помощью только средств CSS3 сделать простенькое аккордеонное меню. При этом для обработки клика был использован псевдокласс  target. В данной же статье пойдёт речь об аккордеонное меню, также выполненном только средствами CSS3, но без использования target, и реагирующему на помещение мышки на пункт меню без клика. При этом для добавления стилей к соответсвующим пунктам меню будет использован другой псевдокласс - nth-of-type, с помощью которого можно получить доступ к элементу на основе нумерации в дереве элементов.

 

Итак, для начала создадим html-документ:

 


<div class="main">Пункт 1
<div>
<ul>
<li><a href="http://bulatlab.ru/">подпункт 1</a></li>
<li><a href="http://bulatlab.ru/">подпункт 2</a></li>
<li><a href="http://bulatlab.ru/">подпункт 3</a></li>
<li><a href="http://bulatlab.ru/">подпункт 4</a></li>

       </ul>

    </div>
Пункт 2
<ul>
<li><a href="http://bulatlab.ru/">подпункт 1</a></li>
<li><a href="http://bulatlab.ru/">подпункт 2</a></li>
<li><a href="http://bulatlab.ru/">подпункт 3</a></li>
<li><a href="http://bulatlab.ru/">подпункт 4</a></li>

      </ul>
Пункт 3
<ul>
<li><a href="http://bulatlab.ru/">подпункт 1</a></li>
<li><a href="http://bulatlab.ru/">подпункт 2</a></li>
<li><a href="http://bulatlab.ru/">подпункт 3</a></li>
<li><a href="http://bulatlab.ru/">подпункт 4</a></li>

      </ul>
Пункт 4
<ul>
<li><a href="http://bulatlab.ru/">подпункт 1</a></li>
<li><a href="http://bulatlab.ru/">подпункт 2</a></li>
<li><a href="http://bulatlab.ru/">подпункт 3</a></li>
<li><a href="http://bulatlab.ru/">подпункт 4</a></li>

      </ul>

  
</div>

 

Как видно разметка состоит из четырёх групп gigure с описанием figcaption (которые выполняют функцию пунктов меню). А в каждой из групп содержится список со ссылками, которые выполняют функцию подпунктов меню).

 

В раздел head документа добавим необходимые стили, в которых определим нужные размеры, цвета, время и т.п.

 


   .main { 
      height: calc(120px + 35px*4 + 1px*3); 
      overflow: hidden; box-shadow: 0 0 0 1px #808080 inset; 
      width:200px;
    } 
   
   .main > figure { 
      overflow: hidden; 
      margin: 0; 
      transition: 1s; 
   } 
   
   .main > figure ul{ list-style-type:none;}
   
   .main > figure:nth-of-type(1), .main:hover > figure:hover { 
      height: calc(120px + 35px + 1px); 
   } 
   
   .main > figure:nth-of-type(n+2), .main:hover > figure:not(:hover) { 
      height: calc(35px + 1px); 
   } 
   
   .main > figure:nth-of-type(n+3), .main:hover > figure:not(:hover) { 
      height: calc(35px + 1px); 
   } 
   
   .main > figure a{
      text-decoration: none;
      padding: 5px 5px;
      color:#777;
    }
   
   .main > figure a:hover{
      color:#444;
      text-decoration: underline;
   }
   
   .main > figure > figcaption { 
      overflow: hidden; 
      height: 35px; line-height: 35px; 
      border-bottom: 1px solid #808080; 
      text-indent: .5em; 
      color: rgb(200,200,200); 
      white-space: nowrap; 
      word-wrap: normal; 
      text-overflow: ellipsis; 
      cursor: pointer; 
      font-weight:bold;
      background: -moz-linear-gradient(#999999, #cccccc);
      background: -ms-linear-gradient(#999999, #cccccc);
      background: -o-linear-gradient(#999999, #cccccc);
      background: -webkit-linear-gradient(#999999, #cccccc);
      color:#000;   
   } 

 

Вот такое несложное меню у нас получилось…

 

 

 

В следующей статье постараюсь рассказать ещё об одном CSS3 аккордеоне без target, но уже с реагированием на клик!

 

До встречи!