Создание css обвязки блока на градиентном фоне.

( 0 - user rating )

Описание:


В этой статье речь пойдет о создании обвязки боксов с закругленными углами с помощью css на градиентном фоне. В качестве обвзяки будет выступать фоновое изображение на градиентном фоне:

бокс с закругленными углами

В данном случае создание простой css обвязки (8 слоев) невозможно, так как в результате мы получим следующий результат:

Error sit voluptatem assusantium doloremque
laudantium, totam rem aperiam eaque ipsa quae
ab illo inventore

Как видно на этом примере, цвет внешней стороны угловых картинок отличается от общего градиентного фона. Можно сделать вывод что нам необходимо создать такую обвязку, чтоб внешний цвет угловых картинок был прозрачным...

Шаг 1

В первую очередь, для создания css обвязки на градиентном фоне нам потребуется вырезать необходимые части изображения с помощью photoshop, причем в угловых изображениях внешнюю сторону сделать прозрачной:



Вот необходимые изображения для создания css обвязки:

Для создания верхней стороны обвязки

Для создания нижней стороны обвязки

Для создания левой стороны обвязки

Для создания правой стороны обвязки

Для создания левого верхнего угла обвязки

Для создания правого верхнего угла обвязки

Для создания левого нижнего угла обвязки

Для создания правого нижнего угла обвязки

Шаг 2

Далее нужно с помощью css определить стили для будущей обвязки. Важным элементов этих стилей является:

margin

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

font-size:0; line-height:0px;

- используется исключительно для браузера IE, так как данный браузер создает дополнительные вертикальные отступы если у блочного элемента явно задана высота и она меньше используемых размеров шрифта и межстрочного растояния.
  1. класс side_left - задает изображение для левой стороны обвязки и цвет заливки бокса.
  2. класс side_right - задает изображение для правой стороны обвязки.
  3. класс side_top - задает изображение для верхней стороны обвязки.
  4. класс side_bot - задает изображение для нижней стороны обвязки.
  5. класс left_top - задает изображение для левого верхнего угла обвязки.
  6. класс right_top - задает изображение для правого верхнего угла обвязки.
  7. класс left_bot - задает изображение для левого нижнего угла обвязки.
  8. класс right_bot - задает изображение для правого нижнего угла обвязки.
Синтаксис:
.left_top {
background:url('/images/left_top.gif') left top no-repeat;
}
.right_top {
background:url('/images/right_top.gif') right top no-repeat; width:100%;
}
.side_top {
background:url('/images/side_top.gif') left top repeat-x; margin: 0 8px 0 8px; height:8px;
}
.left_bot {
background:url('/images/left_bot.gif') left bottom no-repeat;
}
.right_bot {
background:url('/images/right_bot.gif') right bottom no-repeat; width:100%;
}
.side_bot {
background:url('/images/side_bot.gif') left bottom repeat-x; margin: 0 8px 0 8px; height:8px;
}
.side_left {
background:url('/images/side_left.gif') left top repeat-y #F2A229;
}
.side_right {
background:url('/images/side_right.gif') right top repeat-y;
}

Шаг 3

Создание html разметки для обвязки. Для создания обвязки на градиентном фоне нужно использовать двойную вложенность блочных элементов для шапки и подвала обвязки и одинарную вложенность для конента.
<div class="left_top">
<div class="right_top">
<div class="side_top"></div>
</div>
</div>
<div class="side_left">
<div class="side_right">
Error sit voluptatem assusantium doloremque
laudantium, totam rem aperiam eaque ipsa quae ab illo inventore
</div>
</div>
<div class="left_bot">
<div class="right_bot">
<div class="side_bot"></div>
</div>
</div>
Результат:


Error sit voluptatem assusantium doloremque
laudantium, totam rem aperiam eaque ipsa quae
ab illo inventore

Выводы:


Данный способ является, наверно, самым простым и оптимальным для создания обвязки на градиентном фоне. Существуем много различных способов, но этот отличается своей простотой и кроссбраузерностью
Cсылки по теме:
width, background

Комментарии  

 
0 # Дмитрий 2009-03-01 01:07 Подскажите пожалуйста?
Не могу понять.. когда вставляю
список ul в контейнер созданный данным способом
у меня между верхней частью и серединой появляется пустота
то же самое и внизу…
и как вы выровнили текст? вложенный контейнер?
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Дмитрий 2009-03-01 02:40 Очень надеюсь на вашу помощь!
не могу найти решение…
Ответить | Ответить с цитатой | Цитировать
 
 
0 # ni_x 2009-03-01 02:43 1. Если у Вас уголки очень мелкие то обязательно для тех контейнеров нужно использовать font-size:0; line-height:0px;. А вообще старайтесь, чтоб уголки были по больше. Я знаю эту проблему. Попробуйте еще поставить в контейнеры с уголками vertical-align:top. В списках не используйте маргины - тоже могут быть проблемы.
2. Текст выровнял паддингом (пользуйтесь фаербагом, что увидеть как сделано)
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Дмитрий 2009-03-01 02:50 углы 18*18
заполняющие элементы 9*2
другие варианты текста ставлю все ок,
список вставляю сразу верх и низ от центральной части отезжют…
к сожалению ссылку дать не могу так как страничка пока еще на компе..
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Павел 2009-05-14 21:48 Цитирую Дмитрий:
углы 18*18
заполняющие элементы 9*2
другие варианты текста ставлю все ок,
список вставляю сразу верх и низ от центральной части отезжют…
к сожалению ссылку дать не могу так как страничка пока еще на компе..

может проблема с ие? когда я делаю углы иногда бывает пустое пространство.. под ними надо сделать фиксированную высоту и overflow:hidden .
Ответить | Ответить с цитатой | Цитировать
 
 
0 # ni_x 2009-03-01 03:39 Ну я к сожалению не могу по такому описанию сказать как это можно исправить и в чем вообще может быть проблема. Но судя по описанию проблема не в обвязке, а именно в списках, хотя не факт. Насколько я знаю, списки очень капризные существо.. скорей всего копать нужно именно их Ответить | Ответить с цитатой | Цитировать
 
 
0 # электродвигатели аир 2009-06-12 13:06 вы не могли бы выложить исходник в архиве , а то столько описания много , аж читать не охота Ответить | Ответить с цитатой | Цитировать
 
 
0 # ni_x 2009-06-12 23:14 Не вижу в этом смысла. Исходники это листинг стилей и html, который написан выше. Ответить | Ответить с цитатой | Цитировать
 
 
0 # электродвигатели аир 2009-06-12 23:25 А Графика ??? Ответить | Ответить с цитатой | Цитировать
 
 
0 # ni_x 2009-06-13 00:28 а графику подставляйте уже свою. Ответить | Ответить с цитатой | Цитировать
 
 
0 # Дмитрий 2009-06-26 04:31 У меня с обвязкой проблем не возникло… Но вопросик есть. Я хочу использовать эту обвязку как textarea, но как можно использовать свой цвет, бэкграунд колор с этим параметром? Да и бразуер еще добовляет полоску прокрутки… Или можно использовать другой параметр? Нужно просто многоярусное заполнение поля… Ответить | Ответить с цитатой | Цитировать
 
 
-1 # ni_x 2009-06-26 14:13 Для textarea убирай бордер и ставь оферфлоу авто или хиден. Ответить | Ответить с цитатой | Цитировать
 
 
-1 # Дмитрий 2009-06-26 17:19 http://img386.imageshack.us/gal.php?g=53339538.jpg
Вот что я имел ввиду. Слева, я изменил параметр на textarea, и все что я писал в css не учитывается(в поле ввода). Справа, у меня стоит инпут и все нормально. Может быть есть какой нибудь другой параметр - что бы учитывалась и графика из ксс, и что бы поле ввода была многоярусная?
p.s. вот так выглядит код
Ответить | Ответить с цитатой | Цитировать
 
 
-1 # ni_x 2009-06-26 21:23 дай стили которые ты используешь Ответить | Ответить с цитатой | Цитировать
 
 
-1 # Дмитрий 2009-06-26 23:41 Cтиль всего постоения обвязки? Или как? Вот поле ввода в обвязке:
table.input tr.middle td.center input {
font-family:Arial, Helvetica, sans-serif;
font-size:10px;
line-height:normal;
color:#A7ADB6;
padding:0 0 0 0px;
border:none;
width:95%;
height:12px;
background: #000000;
overflow: hidden;
}
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Дмитрий 2009-06-26 17:21 чё-то он не выложился в прошлый коммент)) Ответить | Ответить с цитатой | Цитировать
 

Добавить комментарий


Защитный код
Обновить

Переводы


Selectutorial

Селекторы в действии

listutorial

Изображения для маркеров списка

css screencast