Jump to content
  • 0

Оцените решение


mnstrsound
 Share

Question

Стоит такая проблема:

ff85c10bc576c41de6f607da201b0744.png

То бишь блок с красиво оформленной прозрачной рамкой.

Вот решение:

HTML:


<!doctype html>
<html>
<head>
<title>Deluxe</title>
<link rel="stylesheet" type="text/css" href="css/style2.css" />
</head>
<body>
<div class="border">
<span class="top tl"></span>
<span class="top tr"></span>
<span class="bottom bl"></span>
<span class="bottom br"></span>
<div class="out">
<div class="in">
<div class="content">
adsdasdasdasdasdasdasdasdasdasda<br>
adsdasdasdasdasdasdasdasdasdasda<br>
adsdasdasdasdasdasdasdasdasdasda<br>
adsdasdasdasdasdasdasdasdasdasda<br>
adsdasdasdasdasdasdasdasdasdasda<br>
</div>
</div>
</div>
</div>
</body>
</html>

CSS:


html{
background:url(../img/html_bg.gif) repeat-x;
}
.border{
position:relative;
margin: 100px 100px;
max-width:500px;
min-width:300px;
/*width:500px;
border:1px solid #ddd;*/
overflow:hidden;
}
.top{
display: block;
position:absolute;
height:46px;
top:0;
background:url(../img/border-bg.png) no-repeat top left;
}
.tl{
width:100%;
right:45px;
}
.tr{
right:0;
width:45px;
}
.bottom{
display: block;
position:absolute;
height:46px;
bottom:0;
background:url(../img/border-bg.png) no-repeat bottom left;
}
.bl{
width:100%;
right:45px;
}
.br{
right:0;
width:45px;
}
.out{
background:url(../img/leftborder-bg.png) repeat-y;
margin: 46px 0;
}
.in{
background:url(../img/rightborder-bg.png) repeat-y right;
width:100%;
}
.content{
margin:0 23px;
background:#010101;
color:#fff;
}

Картинки:

3b6cc1755ae3142bc7079d01f688b075.png

6260a5a21b615307ed7d78643809e157.png6aa7e89be1483562e745f65a5e930aa7.png

Искал решение в интернете - плохо искал. Сам написал. Посоветуйте решения покороче и попроще если существуют.

  • Like 1
Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Через :before, :after, box-shadow.

А то, что вы сделали, ну да, плохо искали. http://chikuyonok.ru/2009/10/decor/

box-shadow разве можно оформить с border-ом?

Мое решение вроде не сильно плохое - по вертикали полностью резиновое, по горизонтали немного тянется.

А план действий с псевдоклассами?

Link to comment
Share on other sites

  • 0

Чтоб как-то оценить, нужно сначала определить хоть какие-то требования... А так блок, ну и блок. И решений - валом.

Это решение сейчас можно считать несколько устаревшим. И оно, насколько понимаю, вполне стандартное "из учебника". Не значит, что его нельзя использовать (хозяин-барин), но возможности CSS3 позволяют сделать то же самое (или близко к этому) без использования изображений и позиционирования.

Используется несколько вложенных блоков. Внутреннему задается вертикальный градиент в фоне, border-radius и box-shadow без размытия. Дальше идет блок с opacity. Дальше - блок с border:dashed. И снова - тень. Учитываем, что прозрачность передается потомкам. Играемся с внутренней/наружной тенью и... готово. Все отступы делаются через padding, без всяких position и overflow.

Единственное отличие в итоге может быть в отображении "стежков" - они будут не овальные (или какие там?), а прямоугольные. Но это увидят только дизайнер макета и верстальщик. Ну и по браузерам нужно отдельно посмотреть.

Edited by Kray Storm
Link to comment
Share on other sites

  • 0

Чтоб как-то оценить, нужно сначала определить хоть какие-то требования... А так блок, ну и блок. И решений - валом.

Это решение сейчас можно считать несколько устаревшим. И оно, насколько понимаю, вполне стандартное "из учебника". Не значит, что его нельзя использовать (хозяин-барин), но возможности CSS3 позволяют сделать то же самое (или близко к этому) без использования изображений и позиционирования.

Используется несколько вложенных блоков. Внутреннему задается вертикальный градиент в фоне, border-radius и box-shadow без размытия. Дальше идет блок с opacity. Дальше - блок с border:dashed. И снова - тень. Учитываем, что прозрачность передается потомкам. Играемся с внутренней/наружной тенью и... готово. Все отступы делаются через padding, без всяких position и overflow.

Единственное отличие в итоге может быть в отображении "стежков" - они будут не овальные (или какие там?), а прямоугольные. Но это увидят только дизайнер макета и верстальщик. Ну и по браузерам нужно отдельно посмотреть.

Надо решать вопросы кроссбраузерности, мое решение вплоть до 7 ie подходит.

Нормальное решение.

То бишь вполне часто такое можно встретить? Мне бы хотелось конечно более короткого кода и полной резины.

Link to comment
Share on other sites

  • 0

Для полной резины надо нарезать 4 угла и 4 стороны, и раскидать их абсолютом внутри контейнера. Будет работать везде кроме ИЕ6. В своей верстке я делаю так: http://jsfiddle.net/m6Keu/

  • Like 2
Link to comment
Share on other sites

  • 0

Для полной резины надо нарезать 4 угла и 4 стороны, и раскидать их абсолютом внутри контейнера. Будет работать везде кроме ИЕ6. В своей верстке я делаю так: http://jsfiddle.net/m6Keu/

А для углов используешь метод звездочки с позиционированием фона?

Link to comment
Share on other sites

  • 0

Отличное решения как для начала текущего тысячилетия.

В наши дни я бы сделал на базе одного дива и :before :after

Или же, что мне больше по душе, в рамках graceful degradation, при помощи градиентов и border-radius

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy