Закругляем углы

Закругляем углыСуществует не мало способов создать контейнер для текста с закругленными углами. Но тот который я хочу описать понравился мне своей простотой и гибкостью.

Перед вами простой и быстрый способ создать блок с закругленными углами, не ограниченый по высоте и ширине.

Все что нам для этого нужно это 5 минут времени и четыре картинки уголков. Да, к сожалению браузеры поддерживающие свойство border-radius пока не в большинстве, а мы верстаем для людей, а не для браузеров, так что без картинок не обойтись.

Здесь мы используем принцип вложенности элементов и фоновые картинки, распределенные по углам. Соответственно нам нужно четыре вложенные друг в друга контейнера и четыре картинки уголков, по количеству углов :)

HTML:

<p>
    <span>
        <span>
            <span>
                Много текста
            </span>
        </span>
    </span>
</p>
<p id="two">
    <span>
        <span>
            <span>
                Много текста
            </span>
        </span>
</span>
</p>
<p id="three">
    <span>
        <span>
            <span>
                Много текста
            </span>
        </span>
    </span>
</p>

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

Теперь перейдем к стилям. В этом способе есть одно небольшое неудобство. Цвет фона страницы должен совпадать с цветом уголков. То есть если надо изменить фон страницы, то без Фотошопа не обойтись, так как придется изменять цвет уголков. Кстати вот они:

Смотрим на CSS:

body {
    background-color: #0084C7; /*Цвет должен соответствовать цвету уголков*/
}

p {
    color: black;
    background: white url("images/left_top.gif") top left no-repeat;
    margin: 0 0 20px 0;
}

p span {
    display: block; /* переводим все span'ы из лэерных элементов в блочные */
    background: url("images/right_top.gif") top right no-repeat;
}

p span span {
    background: url("images/right_bottom.gif") bottom right no-repeat;
}

p span span span {
    padding: 2em;
    min-height: 1px; /* обязательно для автоматического создания высоты */
    background: url("images/left_bottom.gif") bottom left no-repeat;
}
/*исправление для IE 6*/
    * html p span span span {
    height: 1px; /* IE6 проигнорирует это свойство и задаст высоту по контенту */
}

Уголки задаются начиная от верхнего левого угла контейнера, так же как и координаты в HTML. Думаю что из названий background-image все понятно.

Во внутреннем, третьем span‘е обязательно нужен min-height любого значения и исправление height для Интернет Эксплорера 6, который мы прописываем с помощью * html хака. Я выставил значение 1px, так как IE6 все равно его проигнорирует и растянет высоту блока до высоты контента.

Вот и все. Можно посмотреть рабочий пример, а можно скачать вместе с картинками, одним архивом.

Эта запись была опубликована в рубрике CSS. Вы можете следить за комментариями к этой записи.

Комментарии

  1. Gorik написал:

    Интересный подход. Вот только у меня по работе почему-то вечно попадаются блоки с закруглёнными углами и сложным дизайном (много всяких теней/градиентов), так что приходится придумывать всякие извращения :(

  2. neutrino написал:

    to Sam

    чем же он лучше? зачем для простой верстки подключать javascript? а если он отключен в браузере?

    to Gorik

    да, у меня тоже часто бывает такое, приходится изворачиваться :)

  3. pepelsbey написал:

    Вот это я бы назвал идеальным способом ;)

  4. neutrino написал:

    to pepelsbey

    Согласен, этот способ круче, особенно понравилось “Install Mysql 3.23 using yum, Perl 5.8, and /usr/bin/fortune” :)

    Но 84 шага это многовато, так что лучше уж мой…

  5. Sam написал:

    А чем плох java script?
    Ну отключат – будут квадратные уголки.

    Зато как красиво:

    Nifty Corners Cube™
    One call. Two parameters. Three sizes.

  6. Sam написал:

    Код побило :( В общем там один div.

  7. neutrino написал:

    Ну не знаю. Мне претит сама мысль о базовой верстке страниц с помощью javascript.

  8. Дмитрий написал:

    вот тут куча способов:
    http://www.smileycat.com/miaow/archives/000044.html
    мне больше всего этот понравился:
    http://www.roundedcornr.com/rc1.php

  9. neutrino написал:

    В чем существенное отличие понравившегося способа от описаного мной?

    Да, способов много, есть лучше, есть хуже, в прочем в посте я все описал.

  10. Artem.Chertov написал:

    как-то странно вы рассуждаете…
    а как же 4 запроса на сервер?! а как же диалап?

  11. vadime написал:

    а вот тут генератор округлостей есть http://www.neuroticweb.com/recursos/css-rounded-box/:)

  12. neutrino написал:

    Только не понятно :)

  13. theUg написал:

    Круглые уголки — базовая вёрстка? А мне претит использование четырёх вложенных элементов для рисования сраных круглых уголков. :D

  14. neutrino написал:

    Хех, в последнее время я уже перестал делить верстку на сложную и простую. Это вертска и все тут. Сверстать можно практически все. А уголки это так, частность.

Leave a Reply

Your email is never published nor shared. Required fields are marked *

*

You may use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>