2015-03-31 7 views
0

My .filter-list скрыт от экрана, я хочу использовать это при наведении (идеально анимированный), используя только CSS.Анимировать снизу экрана?

При наведении указателя мыши появляется меню, изменяющее нижнее свойство, проблема в том, как я могу получить .filter-list для анимации и сидеть точно над родительским литером, не используя JS, чтобы получить его высоту и изменение нижнее значение?

HTML:

<ul> 
    <li class="small-2 columns filter-category"> 
     Category 
     <ul class="filter-list"> 
      <li>element one</li> 
      <li>element two</li> 
      <li>element three</li> 
     </ul> 
    </li> 
</ul> 

CSS:

.filter-category{ 

    &:hover ul{ 

     bottom: 100px; 
    } 

} 

.filter-list{ 

    position: absolute; 
    bottom: -99999px; 
    background: white; 
    width: 100%; 
    margin: 0; 

} 
+0

Пытались ли вы изменения .filter-лист позиции вашего CSS от "абсолютной" к чему-то еще? – user1789573

+0

Что делать, если вы использовали верхнюю часть вместо дна, чтобы расположить список за экраном? CSS 'animate: top 1s;' (или аналогичные - есть также префиксы браузера) должны позаботиться о анимации, но вы должны сказать, где это должно закончиться (можете ли вы установить это как статическое значение или необходимость получить его с помощью JS зависит от того, как выглядит страница/работает). –

+0

@MikeB. «но вы должны сказать, где это должно закончиться», это мой вопрос, как я могу это преодолеть без JS? – panthro

ответ

1

Легче всего было бы, чтобы установить дисплей: ни для фильтра-лист затем обратно на дисплей: встроенный блок на парении. Я скорректировал позиционирование для его соответствия, но вы можете изменить его далее для работы с вашим сайтом.

Есть популярные css libs, у которых есть элементы управления раскрытием, такие как bootstrap, попробуйте, если сможете.

.filter-list { 
 
    background: white; 
 
    width: 100%; 
 
    margin: 0; 
 
    visibility:hidden; 
 
} 
 
.filter-category { 
 
    position:relative; 
 
} 
 

 
ul:hover ul { 
 
    visibility:visible; 
 
} 
 

 
.filter-list-holder { 
 
    list-style:none; 
 
}
<ul> 
 
    <li class='filter-list-holder'> 
 
     <ul class="filter-list"> 
 
      <li>element one</li> 
 
      <li>element two</li> 
 
      <li>element three</li> 
 
     </ul> 
 
    </li> 
 
    <li class="small-2 columns filter-category">Category</li> 
 
</ul>

+0

Этот CSS в моем вопросе ?! – panthro

+0

Извините, не могли бы вы уточнить, что вы подразумеваете под «сидеть точно над родительским ли»? Я думал, что у тебя проблемы с тем, чтобы уль поднялась. – ferr

+0

Я хочу, чтобы он сидел точно над ним, я не уверен, сколько пикселей над ним оно. Как я могу это решить? Родительский лижет тоже жидкость. – panthro

0

Вот demo

.filter-category { 
    position: relative; 
    overflow: hidden; 
    height: 20px; //set the list height, so the child can be place on top of it 
} 
.filter-list { 
    position: absolute; 
    bottom: -60px; // hide it just below the parent so the animation is short & nice 
    background: white; 
    width: 200px; // i change it to prevent overflow-x on the body 
    margin: 0; 
    left: 0; 
} 
.filter-category:hover { 
    overflow: visible; 
} 
.filter-category:hover ul.filter-list { 
    bottom: 20px; 
    -webkit-transition: .5s ease; 
    -moz-transition: 5s ease; 
    -o-transition: .5s ease; 
    transition: .5s ease; 
} 
+0

Спасибо, но я не могу установить высоту списка, это должно быть динамическим. – panthro

Смежные вопросы