>
- означает наследование от родителя.Некомбинированные анимации могут пропускать кадры и увеличивать совокупное смещение макета.
Анимация, выполняемая за пределами этапа компоновки, может выглядеть «рваной» (т. е. не быть плавной) на медленных телефонах или во время выполнения ресурсоемких задач в основном потоке. Дергающиеся анимации могут увеличивать показатель Cumulative Layout Shift (совокупное смещение макета, CLS) вашей страницы. Снижение CLS помогает улучшить оценку производительности в Lighthouse.
.home-slider__carousel.animate {
display: block;
padding-bottom: 82px;
position: relative;
}
.animate__body {
width: calc(100% - 1px);
display: flex;
align-items: start;
transform: skew(-35deg);
position: relative;
height: 26px;
overflow: hidden;
}
.animate__body::before,
.animate__body::after {
content: '';
height: 100%;
width: 50%;
flex: 1 1;
position: absolute;
top: 0;
left: 0;
}
.animate__body::before {
background: #0d0087;
animation: anima1 3s linear forwards infinite;
z-index: 1;
}
.animate__body::after {
background: #e34126;
height: 65.39%;
animation: anima2 3s linear forwards infinite;
}
@keyframes anima1 {
0% {
transform: translateX(-100%);
}
33.33% {
transform: translateX(0);
}
100% {
transform: translateX(0);
}
}
@keyframes anima2 {
0% {
transform: translateX(-100%);
}
33.33% {
transform: translateX(0);
}
66.66% {
transform: translateX(100%);
}
100% {
transform: translateX(100%);
}
}
.pagelayer-col-holder:hover > .pagelayer-wp_nav_menu {
opacity: 1;
}
a.prev,
a.next {
background-color: #ffffff;
position: relative;
overflow: hidden;
}
a.prev::after,
a.next::after {
content: '';
background-image: linear-gradient(90deg, #fd712c 0%, #f21780 100%);
position: absolute;
z-index: -1;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
a.prev:hover,
a.next:hover {
color: #fff;
background-color: transparent;
}
.card
.card__date
.card__image
.card__info
.card__icon
<div class="card">
<div class="card__date"><span class="card__day">25</span> april</div>
<picture class="card__picture">
<img class="card__image" src="https://unsplash.it/1000/300" alt="">
</picture>
<div class="card__info">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur sequi enim quia, voluptatibus laborum atque magnam sapiente sint expedita quas! Similique aspernatur quod optio quasi ducimus tempora commodi, maxime vel!</p>
<button class="card__btn">+</button>
</div>
</div>
*, *::before, *::after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.card {
display: flex;
flex-wrap: wrap;
}
.card__date {
order: 1;
background-color: yellow;
padding: 10px;
display: flex;
flex-direction: column;
align-items: center;
}
.card__day {
font-size: 30px;
}
.card__info {
order: -1;
position: relative;
padding: 20px;
}
.card__btn {
position: absolute;
bottom: 10px;
right: 10px;
background: none;
border: 0;
font-size: 30px;
}
.card__image {
object-fit: cover;
display: block;
}
.card__picture {
overflow: hidden;
display: flex;
justify-content: center;
}
.card__picture,
.card__info {
flex-grow: 1;
flex-basis: 50%;
flex-shrink: 0;
background-color: orange;
}
.float-left {
float: left;
margin: 1rem 1rem 1rem 0;
}
.float-right {
float: right;
margin: 1rem 0 1rem 1rem;
}
const classChoice = (elementsSelector, className1, className2) => {
let images = document.querySelectorAll(elementsSelector);
for (let i=0; i<images.length; i++) {
if (i%2 === 0) {
images[i].classList.add(className1);
} else {
images[i].classList.add(className2);
}
}
};
window.addEventListener('DOMContentLoaded', (event) => {
classChoice('.article__content img', 'float-right', 'float-left')
});
nav a {
position: relative;
}
nav a:hover::after {
left: 50%;
tranform: translateX(-50%);
}