Как сделать работу перехода CSS "назад"?

Итак, у меня есть этот переход при наведении, который создает границу внизу элемента, который зависнет. Все хорошо там, но когда мышь покидает элемент, граница просто исчезает, а я хочу, чтобы она снова "отводила" назад. Codepen

HTML:

<div class="object">

<p>Object</p>

</div>

CSS

* {
background-color: #222;
color: white;
font-family: sans-serif;
font-size: 30pt;
}

p {
 width: 200px;
height: 100%;
margin-top: 70px;
text-align: center;
transition: 0.2s border-bottom;
-webkit-transition: 0.2s border-bottom;
margin: auto;
margin-top: 50px;
}

p:hover {
  border-bottom: 5px solid white;
}

Как мне сделать это, как можно проще? Спасибо, 3

Ответ 1

Переходы работают в обоих направлениях автоматически.

Проблема, с которой вы столкнулись, заключается в том, что border-style не является атрибутом, который может быть анимирован, поэтому он мгновенно изменяется.

Это означает, что когда вы его наводите, он становится solid мгновенно, а затем тратит время на 5px.

Но когда вы его открываете, он становится none мгновенно, и вы не можете видеть анимацию ширины.

Сделать состояние по умолчанию (не зависающее) явным, чтобы border-width - это единственное, что меняется при его зависании.

Добавить

border-bottom: 0px solid white;

к правилам для p.

Ответ 2

Добавьте border-bottom: 0px solid white в p. Css хочет знать, куда вернуться!: D

Ответ 3

Я не знаю, может ли это помочь, но в моем случае я просто сделал так:

Над:

.<nameOfClass>:hover{
 transition: width 0.4s ease-in-out;
}

Не более:

.<nameOfClass>:not(:hover){
 transition: width 0.4s ease-in-out;
}

Ответ 4

для перехода добавьте анимированный класс к элементу, который вы хотите перевести

.animate 
 { 
  transition: all .5s;
  -moz-transition: all .5s;
  -webkit-transition: all .5s;
  -o-transition: all .5s;
  -ms-transition: all .5s;
 }

Теперь, когда вы добавляете этот класс в свой элемент, он будет совершать переход как при наведении, так и при наведении.