У меня есть элемент с 2-мя псевдоэлементами (.card-title::before
и .card-title::after
) с переходом, который меняет ширину с 0 на 40 пикселей.
Исходная скорость перехода составляет 0,5 с, но для демонстрацииДля этого я изменил его на 15 с, чтобы вы могли четко видеть, что псевдоэлемент ::before
запускается до ::after
.
Если вы его не видите, попробуйте открыть фрагмент кода вполная страница.
Почему это так и как мне решить эту проблему?
Я могу обойти это, добавив очень короткую (например, 0,05 с) задержкуна ::before
, но я думаю, вы понимаете, почему мне не нравится эта идея.
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
display: grid;
place-items: center;
height: 100vh;
background: #eee;
}
.card {
height: 100px;
width: 100px;
}
.card-body {
color: white;
height: 100%;
background: #777;
}
.card-title {
position: relative;
background: yellow;
height: 45px;
}
.card-title::before {
content: '';
position: absolute;
background: red;
width: 0;
top: 0;
bottom: 0;
right: 100%;
z-index: -1;
transition: width 15s linear;
}
.card-title::after {
content: '';
position: absolute;
background: red;
width: 0;
top: 0;
bottom: 0;
left: 100%;
z-index: -1;
transition: width 15s linear;
}
/* Hover effect */
.card-body:hover .card-title::before,
.card-body:hover .card-title::after {
width: 40px;
}
<div class="card">
<div class="card-body">
<h3 class="card-title"></h3>
</div>
</div>