CSS: Сглаженный переход между секциями

Рассмотрим сглаженный переход между секциями/блоками с картинкой на странице. Без стилизации переход выглядит в нашем случае как на следующей картинке:

Т.е. видим явную границу картинки и последующего блока.

HTML код:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<link rel="stylesheet" href="style.css">
	<title>Document</title>
</head>
<body>
	<section class="section1">
		<img src="img/banner1.jpg" class="fitBg" alt="">
		<div class="content">
			<h2>Lorem ipsum dolor.</h2>
			<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eaque doloremque laudantium reprehenderit facere exercitationem ex aliquam animi voluptatibus vitae tempore architecto totam illo quibusdam hic libero nostrum, nesciunt id illum.</p>
		</div>
	</section>
	<section class="section2">
		<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Consectetur quis esse asperiores repellat quibusdam quam labore consequuntur soluta. Consequatur impedit sequi aspernatur ratione nulla cupiditate quo quidem. Commodi, officiis earum?</p>
	</section>
	<section class="section3">
		<img src="img/banner2.jpg" class="fitBg" alt="">
		<div class="content">
			<h2>Lorem ipsum dolor.</h2>
			<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eaque doloremque laudantium reprehenderit facere exercitationem ex aliquam animi voluptatibus vitae tempore architecto totam illo quibusdam hic libero nostrum, nesciunt id illum.</p>
		</div>
	</section>
</body>
</html>

CSS:

*{
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	font-family: Verdana, Geneva, Tahoma, sans-serif;
	color: #ffffff;
	font-size: 10px;
}

body{
	background: #111;
}

section{
	position: relative;
	padding: 100px;
}

.section1, .section3{
	position: relative;
	width: 100%;
	min-height: 55vh;
	display: flex;
	justify-content: center;
	align-items: center;
}

.section1 .content, .section3 .content{
	position: relative;
	max-width: 900px;
	text-align: center;
	z-index: 2;
}

.section1 .content h2, .section3 .content h2{
	font-size: 4em;
}

.section1 .content p, .section3 .content p{
	font-size: 1.2em;
}

.section2{
	height: 100%;
	padding: 70px 150px;
	display: flex;
	justify-content: center;
	align-self: center;
}

.section2 p{
	font-size: 2em;
}

.fitBg{
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0.8;
}

Для перехода будем использовать псевдоэлементы before и after. К фону псевдоэлементов применим линейный градиент:

.section1:before{
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 400px;
	z-index: 1;
	background: linear-gradient(to top, #111, transparent);
}

.section3:after{
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 400px;
	z-index: 1;
	background: linear-gradient(to bottom, #111, transparent);
}

В итоге получим красивый плавный переход:

Всем хорошего дня 🙂

При перепубликации активная ссылка на этот блог обязательна.
Поблагодарить автора 🙂
 руб.