Как стать автором
Обновить

39-й способ скругления блока. Один тэг, одна картинка.

Время на прочтение2 мин
Количество просмотров1.3K
Пару дней назад наткнулся на статью про 38 способов скругления блоков. Очень понравилось. Однако там я не встретил способа, которым пользуюсь уже около года. Он не требует лишних тэгов и требует загрузки только одной картинки (спрайт). Работает во всех современных баузерах и IE6+

Способ применим для блоков со сплошным окружающим фоном и без рамки (однако фон самого блока может быть произвольным).

Собственно изюминкой является способ размещания спрайта в блоке, где ни ширина ни высота не фиксированы. Это достигается следующим кодом:
/* применяя этот класс к блоку мы делаем его скругленным */
 .rounded{
    background: #feb;
    padding:20px;
    margin:30px auto 10px auto;
    text-align:center;
    overflow:hidden;
 }
 .rounded:before, .rounded::before, .rounded:after, .rounded::after{
    display:block;
    height:20px;
    content:url(img/corners.gif);
    background:url(img/corners.gif) top right no-repeat;
    margin:-30px -30px 10px -30px;
    padding:0;
    text-align:left;
    line-height:0;
    font-size:0;
    overflow:hidden;
 }
 .rounded:after,.rounded::after{
    margin:10px -30px -30px -30px;
 }


сам HTML выглядит так:
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html>
 <head>
  <title>Rounded corners</title>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  <link type="text/css" rel="stylesheet" media="screen" href="styles.css" />
  < !--[if lt IE 8]> 
  <script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE8.js" type="text/javascript"></script> 
  < ![endif]-- >
 </head>
 <body>
  <div class="rounded">
    У этого блока должны быть скруглены углы
  </div>
 </body>
</html>

На использование ::after и ::before внимание обращать не нужно — это лишь необходимость для корректной работы библиотеки Дэна Эдвардса, которая адаптирует этот стандартный код для IE. Кстати очень рекомендую эту библиотеку для лечения многих неприятных особенностей самого популярного браузера.

Собственно на этом и всё. Осталлось привести ссылку на архив с работоспособным примером.
Жду замечаний.

UPD: Метод работает только в режиме совместимости со стандартами, то есть при соотвествующем DOCTYPE. Для тех, кто всё ещё пишет свой код в quirks mode этот метод пока не адаптирован.

UPD2: Как обнаружил pepelsbey библиотека Дэна Эдвардса может сбоить в IE при больших объёмах CSS. Так что в данный момент разыскивается другой способ застатить IE воспринимать указанный код CSS2 корректно.
Теги:
Хабы:
Всего голосов 4: ↑4 и ↓0+4
Комментарии106

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань