Информационные технологииStfw.Ru 🔍

Как сделать блок со скругленными уголками без рисунков?

🕛 19.01.2009, 23:14
Скругленные уголки достаточно часто применяются в дизайне, однако в CSS пока нет штатного универсального средства для их добавления. Поэтому приходится использовать различные ухищрения, чтобы добиться желаемого результата. Преимущественно для создания уголков применяются изображения, поэтому интересно будет обойтись без них, только с помощью стилей.
Если увеличить фрагмент с уголком (рис. 1), то можно увидеть, что скругление образуется за счет наложения нескольких блоков, количество которых обычно бывает от трех до шести. Большее число блоков повышает радиус скругления, но и загромождает код, так что остановимся на радиусе в четыре пиксела. 



Рис. 1. Увеличенный скругленный уголок

Чтобы создать подобное скругление, достаточно добавить сверху и снизу от содержимого четыре блока, задавая им нужную высоту 1-2 пиксела и отступы по краям через стилевой атрибут margin, как показано в примере 1.

Пример 1. Стиль для создания блоков

.r1, .r2, .r3, .r4 { display: block; /* Блочный элемент */ font-size: 0; /* Размер шрифта */ height: 1px; /* Высота */ background: #f677c5; /* Цвет фона */ } .r1 { margin: 0 5px; } .r2 { margin: 0 3px; } .r3 { margin: 0 2px; } .r4 { margin: 0 1px; height: 2px; }На всякий случай ставим, что размер шрифта нулевой, так мы можем не бояться, что добавление внутрь блока текста (например, неразделяемого пробела  ) увеличит высоту. 

Теперь надо добавить эти блоки сверху и снизу от контента через какой-нибудь тег, например, <B>. Сверху блоки будут идти в возрастающем порядке, от 1 до 4, а снизу в убывающем, от 4 до 1. В примере 2 показан окончательный код.

Пример 2. Создание блока с закругленными уголками

HTML 4.01CSS 2.1IE 6IE 7Op 9.5Sa 3.1Ff 3.0

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Скругленные уголки</title> <style type="text/css"> .r1, .r2, .r3, .r4 { display: block; font-size: 0; height: 1px; background: #f677c5; } .r1 { margin: 0 5px; } .r2 { margin: 0 3px; } .r3 { margin: 0 2px; } .r4 { margin: 0 1px; height: 2px; } .block-round-content { background: #f677c5; /* Цвет фона */ padding: 10px; /* Поля вокруг текста */ } </style> </head> <body> <div class="block-round"> <b class="r1">&nbsp;</b><b class="r2">&nbsp;</b><b class="r3">&nbsp;</b><b class="r4">&nbsp;</b> <div class="block-round-content"> Цель конкурса &#8212; обнаружение предметов материального мира, обладающих колоссальной ценностью, принадлежащих живому биологическому организму, в дальнейшем именуемым драконом, и их экспроприация. </div> <b class="r4">&nbsp;</b><b class="r3">&nbsp;</b><b class="r2">&nbsp;</b><b class="r1">&nbsp;</b> </div> </body>
</html>Результат данного примера показан на рис. 2.



Рис. 2. Блок со скругленными уголками

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

Приведем еще один пример для создания блока с радиусом скругления три пиксела. Во многих случаях это наиболее оптимальный вариант, как по части дизайна, так и компактности кода (пример 3).

Пример 3. Радиус скругления три пиксела

HTML 4.01CSS 2.1IE 6IE 7Op 9.5Sa 3.1Ff 3.0

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Скругленные уголки</title> <style type="text/css"> .r1, .r2, .r3 { display: block; font-size: 0; height: 1px; background: #7da7d9; } .r1 { margin: 0 4px; } .r2 { margin: 0 2px; } .r3 { margin: 0 1px; height: 2px; } .block-round-content { background: #7da7d9; /* Цвет фона */ color: #fff; padding: 10px; /* Поля вокруг текста */ } </style> </head> <body> <div class="block-round"> <b class="r1">&nbsp;</b><b class="r2">&nbsp;</b><b class="r3">&nbsp;</b> <div class="block-round-content"> При истечении возможности понимания вышеизложенной информации вы имеете объективную возможность подать официальный запрос главному субординатору локальной виртуальной вселенной. </div> <b class="r3">&nbsp;</b><b class="r2">&nbsp;</b><b class="r1">&nbsp;</b> </div> </body>
</html>

Все рецепты HTML и CSS   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉