Я пытаюсь добиться этого эффекта с помощью css3:
HTML-код выглядит примерно как
...
<header>
...
</header>
<div id="wrapper">
...
</div>
...
, а css на данный момент похож на
header {
display: block;
width: 900px;
height: 230px;
margin: 0 auto;
border: 1px solid #211C18;
...
box-shadow: 2px 4px 20px #005377;
-moz-box-shadow: 2px 4px 20px #005377;
-webkit-box-shadow: 2px 4px 20px #005377;
}
#wrapper {
width: 820px;
margin: 0 auto;
...
border-right: 1px solid #211C18;
border-bottom: 1px solid #211C18;
border-left: 1px solid #211C18;
...
box-shadow: 2px 4px 20px #005377;
-moz-box-shadow: 2px 4px 20px #005377;
-webkit-box-shadow: 2px 4px 20px #005377;
}
Чтобы получить желаемый результат, мне нужно:
Я много читал о box-shadow, и я не нашел решения, которое действительно меня радует ... Есть идеи?
Этот jsfiddle делает то, что вы хотите.
Это работает с основным элементом #wrap
, который центрирует контент и создает карту координат для абсолютно позиционированного элемента #main
. Это происходит из-за правила CSS position: relative. В итоге вы получите следующую разметку:
<div id="wrap">
<header></header>
<div id="main"></div>
</div>
Заголовок
затем помещается внутри этого и задается position: relative и z-index, чтобы установить его наложение над контейнером #main
. .
Наконец, #main
находится под заголовком
. CSS выглядит так:
/* centre content and create coordinate map for absolutely positioned #main */
#wrap {
width: 300px;
margin: 20px auto;
position: relative;
}
header, #main {
background: #fff;
/* rounded corners */
border: 1px solid #211C18;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
/* dropshadows */
box-shadow: 2px 4px 20px #005377;
-moz-box-shadow: 2px 4px 20px #005377;
-webkit-box-shadow: 2px 4px 20px #005377;
}
header {
display: block;
width: 300px;
height: 50px;
/* stack above the #main container */
position: relative;
z-index: 2;
}
#main {
width: 200px;
height: 70px;
/* stack below the header and underlap it...if that's even a word */
position: absolute;
z-index: 1;
top: 40px;
left: 50px;
}