2
Я не знаю почему, но изменяя свойство отображения родительских перерывов на дочерние элементы.Переходы переходов на изменение отображения
HTML
<div class="grandfather">
<div class="father">
<div class="child1 children"></div>
<div class="child2 children"></div>
</div>
</div>
CSS
.grandfather{
width: 500px;
height: 500px;
background: green;
}
.father{
height: 250px;
background: red;
display: none;
}
.grandfather:hover .father{
display: block;
}
.child1,
.child2{
width: 50px;
height: 50px;
background: blue;
display: inline-block;
opacity: 0;
transition: all 1s linear;
}
.grandfather:hover .children{
opacity: 1;
}
Fiddle: http://jsfiddle.net/bdu3fno2/5/
Примечание: Я знаю, что изменение дисплей не является необходимым в данном ок se, я мог бы просто изменить непрозрачность, и все будет хорошо, но интересно узнать, почему браузеры ведут себя так: это какая-то оптимизация? Я не думаю, что это часть спецификации CSS.
использования 'видимость: hidden' /' Видимость: visible' вместо дисплея. Как вы видите, переходы не работают с изменениями отображения – Danield
... Что касается * почему * изменения отображения приводят к тому, что переходы не работают - возможно, это потому, что между ними нет перехода * между ними из-за изменений макета, которые они влекут. Свойство «видимости» отличается тем, что вы не меняете макет, просто показываете/скрываете то, что уже есть. – Danield