Як створити стрічки на CSS3 без зображень

Крейг Баклер

Оригінал: sitepoint.com/pure-css3-ribbons

Переклад: Влад Мержевич

У минулій статті Як створити словесний бульбашку на CSS3 без картинок ми досліджували, як псевдоелементи :before і :after використовуються для створення різних ефектів. У цій статті ми використовуємо подібні техніки для створення різноманітних стрічок.

Ефект стрічки у моді. Більшість дизайнерів використовують позиціоновані зображення, але ми зробимо це за допомогою властивостей border і єдиного тегу <h2>.

<h2>Мій заголовок</h2>

Давайте візьмемо цей невеликий стиль і перекриємо через нього елемент з контентом.

/* елемент з контентом */
#page {
	width: 500px;
	padding: 50px;
	margin: 0 auto;
	background-color: #fff;
	border: 1px solid #333;
}
h2 {
	position: relative;
	width: 50%;
	font-size: 1.5em;
	font-weight: bold;
	padding: 6px 20px 6px 70px;
	margin: 30px 10px 10px -71px;
	color: #555;
	background-color: #999;
	text-shadow: 0px 1px 2px #bbb;
	-webkit-box-shadow: 0px 2px 4px #888;
	-moz-box-shadow: 0px 2px 4px #888;
	box-shadow: 0px 2px 4px #888;
}

В нашому прикладі до #page встановлені поля по 50px і рамка товщиною 1px. У заголовка є ліве відступ значенням -71px, тому він перекриває край на 20px. Звертайте увагу, ми також використовуємо position: relative для можливості позиціонувати інші елементи стрічки, якщо потрібно.

Тепер нам потрібно створити складну частину стрічки, яка проходить "за сторінкою". Як було показано в попередній статті, ми можемо використовувати властивість border для створення будь-якого типу трикутника за допомогою псевдоелемента :after нульової ширини і висоти.

h2:after {
	content: ' ';
	position: absolute;
	width: 0;
	height: 0;
	left: 0px;
	top: 100%;
	border-width: 5px 10px;
	border-style: solid;
	border-color: #666 #666 transparent transparent;
}

Це виглядає чудово і це може бути все, що вам потрібно. Але клієнти люблять сторінки, що насичені дизайном, тому трохи доробимо стрічку. По-перше, ми можемо додати форму у вигляді прапора до правого краю шляхом додавання білого трикутника через псевдоелемент :before.

Чудово, але як щодо згорнутої частини стрічки по лівому краю? Немає проблем.

h2:before {
	content: ' ';
	position: absolute;
	width: 30px;
	height: 0;
	left: -30px;
	top: 12px;
	border-width: 20px 10px;
	border-style: solid;
	border-color: #999 #999 #999 transparent;
}

Колір границі у псевдоелементу повинен співпадати з кольором фону h2, оскільки він фактично виводиться над заголовком. Зміна z-index не працює з псевдоелементами, коли є позиціонований батьківський елемент.

Будь ласка, ознайомтеся з демонстраційною сторінкою, де показані всі три стилі стрічки. Як і очікувалося, це працює в IE8, IE9, Firefox, Chrome, Safari і Opera. IE6 і IE7 показують елегантну деградацію та відображають основний заголовок. Весь CSS код міститься всередині HTML.

SEO текст: Створіть стильні стрічки за допомогою CSS3 без зображень. Дізнайтесь, як використовувати псевдоелементи для цікавих дизайнерських ефектів. Код CSS вкладений у HTML для сумісності з браузерами.

Часті запитання