2015-06-10 2 views
2

Я пытаюсь использовать анимацию CSS3, чтобы затухать элементы при загрузке страницы. При этом мне нужно установить элемент на display: none;, а затем обратно на display: block;.CSS3 Анимация, вызываемая при смене дисплея

Я хочу, чтобы анимация CSS3 использовалась при начальной загрузке элемента, а не через дисплей. Возможно ли это без отслеживания завершения анимации с помощью JavaScript? У меня есть пример JS скрипку здесь https://jsfiddle.net/L219ezkd/1/

+0

ehhh ... 'animation-iteration-count: 1'? – Amit

+0

все еще срабатывает при изменении отображения через js? –

ответ

3

Вы можете сохраните разметку как есть и вместо этого используйте свойство visibility. На элементе .hover-hide установите переключатель между hidden и visible.

Updated fiddle.

(Это работает, потому что элементы позиционируются абсолютно. Если бы они не были, visibility: hidden; бы не дать желаемого поведения, поскольку он поддерживает пространство, используемое элементом и просто скрывает это вместо того, чтобы полностью удалить его, как display: none;.)

+1

Да, я вижу, что я нахожусь в сценарии, где все в порядке, я надеялся на ответ, когда это не было необходимо (видимость), но если бы это было достаточно, спасибо –

+0

Нет проблем. Просто из любопытства, почему вы пытались избежать «видимости», если это возможно? У этого есть некоторые преимущества перед 'display', кроме того, что описано здесь. – mjswensen

+0

Главным образом из-за того, что не нужно использовать такие вещи, как положение, делая его более гибким для будущего –

1

Wrap все в контейнере и исчезают, что с помощью CSS затем показать и скрыть элементы, как вы делаете прямо сейчас:

<div class="container"> 
    <div id="hover-hide" class="fade fade-in" style="width: 100px; height: 100px; background:blue; display:block; position: absolute; top:0; left:0"> </div> 
    <div id="hover-show" style="width: 100px; height: 100px; background:red; display:none; position: absolute; top:0; left:0"></div> 
</div> 

updated fiddle

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