อัพเดท 4
เช่นเดียวกับการอัปเดต 3 แต่ด้วย css ที่ทันสมัย (= กฎน้อยลง) ดังนั้นจึงไม่จำเป็นต้องมีการวางตำแหน่งพิเศษในองค์ประกอบหลอก
#box {
background-color: #3D6AA2;
width: 160px;
height: 90px;
position: absolute;
top: calc(10% - 10px);
left: calc(50% - 80px);
}
.box-shadow:after {
content:"";
position:absolute;
width:100%;
bottom:1px;
z-index:-1;
transform:scale(.9);
box-shadow: 0px 0px 8px 2px #000000;
}
<div id="box" class="box-shadow"></div>
อัพเดท 3
คำตอบก่อนหน้าทั้งหมดของฉันใช้มาร์กอัปพิเศษเพื่อสร้างเอฟเฟกต์นี้ซึ่งไม่จำเป็นต้องทำ ผมคิดว่านี้มากแก้ปัญหาการทำความสะอาด ... เคล็ดลับเพียงอย่างเดียวคือการเล่นรอบกับค่าที่จะได้รับการวางตำแหน่งที่เหมาะสมของเงาเช่นเดียวกับความแรงที่เหมาะสม / ความทึบของเงา นี่คือซอใหม่โดยใช้องค์ประกอบหลอก :
http://jsfiddle.net/UnsungHero97/ARRRZ/2/
HTML
<div id="box" class="box-shadow"></div>
CSS
#box {
background-color: #3D6AA2;
width: 160px;
height: 90px;
margin-top: -45px;
margin-left: -80px;
position: absolute;
top: 50%;
left: 50%;
}
.box-shadow:after {
content: "";
width: 150px;
height: 1px;
margin-top: 88px;
margin-left: -75px;
display: block;
position: absolute;
left: 50%;
z-index: -1;
-webkit-box-shadow: 0px 0px 8px 2px #000000;
-moz-box-shadow: 0px 0px 8px 2px #000000;
box-shadow: 0px 0px 8px 2px #000000;
}
อัพเดท 2
เห็นได้ชัดว่าคุณสามารถทำได้โดยใช้พารามิเตอร์พิเศษใน CSS-shadow ตามที่ทุกคนเพิ่งชี้ไป นี่คือตัวอย่าง:
http://jsfiddle.net/K88H9/821/
CSS
-webkit-box-shadow: 0 4px 4px -2px #000000;
-moz-box-shadow: 0 4px 4px -2px #000000;
box-shadow: 0 4px 4px -2px #000000;
นี่จะเป็นทางออกที่ดีกว่า พารามิเตอร์พิเศษที่เพิ่มเข้ามามีคำอธิบายดังนี้:
ความยาวที่สี่คือระยะการแพร่กระจาย ค่าบวกทำให้รูปร่างเงาขยายในทุกทิศทางตามรัศมีที่ระบุ ค่าลบทำให้รูปร่างเงาหดตัว
UPDATE
ตรวจสอบตัวอย่างที่ jsFiddle: http://jsfiddle.net/K88H9/4/
สิ่งที่ฉันทำคือสร้าง "องค์ประกอบเงา" ที่จะซ่อนอยู่ด้านหลังองค์ประกอบจริงที่คุณต้องการมีเงา ฉันสร้างความกว้างของ "องค์ประกอบเงา" ให้มีความกว้างน้อยกว่าองค์ประกอบจริงตาม 2 เท่าของเงาที่คุณระบุ จากนั้นฉันจัดตำแหน่งให้ถูกต้อง
HTML
<div id="wrapper">
<div id="element"></div>
<div id="shadow"></div>
</div>
CSS
#wrapper {
width: 84px;
position: relative;
}
#element {
background-color: #3D668F;
height: 54px;
width: 100%;
position: relative;
z-index: 10;
}
#shadow {
background-color: #3D668F;
height: 8px;
width: 80px;
margin-left: -40px;
position: absolute;
bottom: 0px;
left: 50%;
z-index: 5;
-webkit-box-shadow: 0px 2px 4px #000000;
-moz-box-shadow: 0px 2px 4px #000000;
box-shadow: 0px 2px 4px #000000;
}
คำตอบเดิม
ใช่คุณสามารถทำได้ด้วยไวยากรณ์เดียวกับที่คุณให้ไว้ ค่าแรกจะควบคุมตำแหน่งในแนวนอนและค่าที่สองจะควบคุมตำแหน่งในแนวตั้ง ดังนั้นเพียงแค่ตั้งค่าแรกเป็น0px
และที่สองเป็นค่าออฟเซ็ตที่คุณต้องการดังนี้:
-webkit-box-shadow: 0px 5px #000000;
-moz-box-shadow: 0px 5px #000000;
box-shadow: 0px 5px #000000;
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเงากล่องตรวจสอบสิ่งเหล่านี้:
ฉันหวังว่านี่จะช่วยได้.
box-shadow-bottom
ซึ่งไม่มีอยู่และไม่ได้รับการสนับสนุนจากใคร ดูnicolasgallagher.com/css-drop-shadows-without-images/demoสำหรับเทคนิค box-shadow ที่ถูกต้อง