форум вебмастероff на AlfaSpace.NET

Ubuntu и Linux |реактивный бесплатный хостинг | Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга | правила форума

  Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ °
Форум вебмастеров на AlfaSpace.NET / Создание сайта / [CSS] Закругляем края блоков без картинок
Автор Сообщение
acsid
Alfa Guru

2466
# Дата: 31 Янв 2006 10:07 ° Поправил: acsid


Вот очень полезная вещь вэб мастерам нового поколения:


Наверника все уже успели познакомится с новым дизайном @mail.ru, должен заметить, он изменился в хорошую сторону. Что сразу кидается в глаза: практически у всех блоков нет острых краев - везде выжат один пиксель с угла.



Действительно, любой более менее вменяемый web дизанер скажет, что острых углов у подобных блоков быть по идее не должно и что практически в любом случае их надо закруглять, хотя бы выжимая один пиксель. Решил глянуть как это сделано у мейла...

Ужаснулся. Цитирую:

<style>div.plash{width:100%;background-color:#00468C;text-align:center ;}div.cor{width:100%;height:1px;background-image:url('http://img.mail. ru/1.gif');background-repeat:no-repeat;text-align:right;background-col or:#D9D9D9;}div.plash div.cor, td.bg1 div.cor, table.header div.cor{background-color:#00468C;}</style><table cellpadding=0 cellspacing=0 border=0 width=29% align=left><tr><td width=17% rowspan=2><img src=http://www.mail.ru/0.gif width=5 height=1></td><td width=83%><img src=http://www.mail.ru/0.gif width=240 height=1></td></tr><tr><td><div class=plash><div class=cor><img src=http://www.mail.ru/1.gif width=1 height=1></div><img src=http://www.mail.ru/mail/ru/images/logon.gif width=176 height=48 alt=Mail.Ru vspace=3><div class=cor><img src=http://www.mail.ru/1.gif width=1 height=1></div></div>

Суть, думаю, понятна. Блок нарезается таблицей и вставляется <div>, с бэкграундом в один белый пиксель. Впринципе, все ведь работает во всех браузерах и у пользователей обычных нареканий нет. Но мы то с вами крутые разработчики и критиковать чужей код у нас в крови шучу. Просто хочу показать как можно достаточно просто, без лишних затрат, ьаблиц и картинок "выжать" пиксели по краям у блока.



Начнем.
<div class='block'>Какой-то текст</div>

Создаем <div> с нужным текстом/ссылкой и присваеваем ей class='block'.



Все просто. Теперь создадим небольшой стиль для данного блока.

<style>
.block{
background:#666;
color:white;
font-weight:bold;
font-family:tahoma, verdana, arial;
width:200px;
font-size:12px;
text-align:center;
padding:4px 0;
}
</style>
<div class='block'>Какой-то текст</div>


Теперь, собственно, выжимаем пиксели. Я использую свой собственный прием, но это не факт что я один такой умный. Я не притендую на 5+ за этот способ, возможно можно намного проще/красивее, но, меня он устраивает. Смысл простой - нужно добавить до и после нажего <div> какой-либо тег (я использовал <span>, но можно и любой другой), который представляет из себя линию, смещенную на 1 пиксель вправа от блока и длинной на 2 пикселя меньше.



Демонстрирую:
<style>
.block{
background:#666;
color:white;
font-weight:bold;
font-family:
tahoma, verdana, arial;
width:200px;
font-size:12px;
text-align:center;
padding:4px 0;
}
.top-line{
width:198px;
margin-left:1px;
border-bottom:1px solid #666;
display:block;
font-size:0; // для IE
}</style>
<span class='top-line'></span>
<div class='block'>Какой-то текст</div>


К сожалению нельзя использовать один и тот же <span> тег для верхней и нижней линии, в IE между блоком и нижней линеей получается прозрачное пространство в один пиксель, это очевидно, ведь у нас border-bottom чертит линию. Поэтому чтобы начертить нижнюю линию нам нужен <span> другово, похожего класса.


<style>
.block{
background:#666;
color:white;
font-weight:bold;
font-family:tahoma, verdana, arial;
width:200px;
font-size:12px;
text-align:center;
padding:4px 0;
}
.top-line{
width:198px;
margin-left:1px;
border-bottom:1px solid #666;
display:block;
font-size:0;
}
.bottom-line{
width:198px;
margin-left:1px;
border-top:1px solid #666;
display:block;
font-size:0;
}
</style>
<span class='top-line'></span>
<div class='block'>Какой-то текст</div>
<span class='bottom-line'></span>

В итоге мы получаем кроссбраузерный код (протестил в IE6, FF 1.5, Opera 9).




Сразу заметный его недостаток - надо заранее знать длину блока. Это порой неудобно, тем более для резиновых сайтов. Решение этой проблемы найдено :


<style type="text/css">
body{
padding: 20px;
background-color: #FFF;font: 100.01% Verdana,Arial,sans-serif}
h1,h2,p{margin: 0 10px}
h1{font-size: 250%;color: #FFF}
h2{font-size: 200%;color: #f0f0f0}
p{padding-bottom:1em}
h2{padding-top: 0.3em}
div#rnd{ margin: 0 10%;background: #9BD1FA}

b.rtop, b.rbottom{display:block;background: #FFF}
b.rtop b, b.rbottom b{display:block;height: 1px;overflow: hidden; background: #9BD1FA}
b.r1{margin: 0 5px}
b.r2{margin: 0 3px}
b.r3{margin: 0 2px}
b.rtop b.r4, b.rbottom b.r4{margin: 0 1px;height: 2px}
</style>

<div id="rnd">
<b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
<h1>округляем углы div'a</h1>
<p>Кажется, получилось</p>
<h2>Даже без графики</h2>
<p>Одесса</p>
<b class="rbottom"><b class="r4"></b><b class="r3"></b><b class="r2"></b><b class="r1"></b></b>
</div>



P.S. как видно CSS код не оптимизирован, 4 строки из 5-ти для классов линий идентичны. Не стал я это делать так как в данном коде нет никакого родительского тега. А назначать стиль глобально для тега <span> будет неверно. Если вы будете использовать данный код для своих проектов - будет оптимальнее одинаковые строки в стиле для линий вынести под тег родительского блока, который будет у вас. Например так:

<style>
.block{
background:#666;
color:white;
font-weight:bold;
font-family:tahoma, verdana, arial;
width:200px;
font-size:12px;
text-align:center;
padding:4px 0;
}
#menu span{
width:198px;
margin-left:1px;
display:block;
font-size:0;
margin-right:2px;
}
.top-line{
border-bottom:1px solid #666;
}
.bottom-line{
border-top:1px solid #666;
}
</style>
<div id='menu'>
<span class='top-line'></span>
<div class='block'>Какой-то текст</div>
<span class='bottom-line'></span></div>


By FAQ Master

У Фокса есть свой тэг округления краёв: -moz-border-radius:7px;

#ugolkov_net {
position:absolute;
WIDTH:145px;
HEIGHT:70px;
background:#0D3E52;
line-height:14px;
border:2px solid #125975;
-moz-border-radius:7px;
background-repeat:no-repeat;
}

maxtat
pda killer

1518
# Дата: 31 Янв 2006 12:18



круто, только легче картинкой сделать. Ради каких-то пары килобайт?

acsid
Alfa Guru

2466
# Дата: 31 Янв 2006 12:21


maxtat
ну это не модно..уже

admin
powered by admin

7231
# Дата: 1 Фев 2006 07:36


круто

FAQ Master
Участник

439
# Дата: 1 Фев 2006 08:19


acsid
Хорошо написано.. молодец. Может кому пригодится.

У Фокса есть свой тэг округления краёв: -moz-border-radius:7px;

#ugolkov_net {position:absolute; WIDTH:145px; HEIGHT:70px; background:#0D3E52; line-height:14px; border:2px solid #125975; -moz-border-radius:7px; background-repeat:no-repeat; }

l1nk0ln
Участник

269
# Дата: 22 Мар 2006 13:52


acsid
Молодец, тебя реально можно назвать Alfa Guru - супер!!!

Андрей
Алексеевич

2123
# Дата: 22 Мар 2006 14:10


Я видел эту статью я nnm, до 31 Янв 2006 08:07


gl_SPICE
Участник

1823
# Дата: 22 Мар 2006 14:16


<style><!--
.pxburn { width=1; height=1; background=#FFFFFF; }
--></style>
<table width="50%" height="50%" cellspacing="0" cellpadding="0" bgcolor="#000000">
<tr><td class="pxburn"></td><td></td><td class="pxburn"></td></tr>
<tr><td></td><td><p align="center"><font color="#FFFFFF">Бе-Бе-Бе</font></td><td></td></tr>
<tr><td class="pxburn"></td><td></td><td class="pxburn"></td></tr>
</table>

acsid
Alfa Guru

2466
# Дата: 22 Мар 2006 15:09 ° Поправил: acsid


Андрей
эту статью я nnm, до 31 Янв 2006 08:07
я и не говорил что я её написал
gl_SPICE
молодца)

l1nk0ln
Участник

269
# Дата: 22 Мар 2006 15:18


acsid
Все равно молодец!

acsid
Alfa Guru

2466
# Дата: 22 Мар 2006 15:20


l1nk0ln
Думаю тебе в твоей нюке пригодится

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:35846, gzipped size:10912

Mp3 Download || Мир Спанч боба || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]