css3实现阴影

                     最近在学习html与css3基础,看到有一节课用css3实现曲线阴影与翘边阴影,便将这个做了出来。基本代码实现如下:


 <!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>css3实现曲线与翘边阴影</title>
  <style>
  ul,li{
     list-style:none;
      margin:0;
      padding:0;
 }


.wrap{
      width:700px;
      height:200px;
      margin:50px auto;
      background:#fff;
 }


.wrap h1{
      font-size:24px;
      text-align:center;
      line-height:200px;
 }


.effect{
      box-shadow:0px 1px 4px rgba(0,0,0,0.8),0px 0px 40px rgba(0,0,0,0.1) inset;/*外、内阴影*/
      position:relative;/*给其定位,让阴影重叠*/
 }


.effect:before,.effect:after{/*背面设置两个盒子,使阴影更为深*/
content:"";
position:absolute;/*给其定位,让阴影重叠*/
z-index:-1;/*在盒子的后面*/
background:#fff;
top:50%;/*设置其距离父盒子位置所在*/
bottom:0;/*四个方向的值必须全部设置*/
left:10px;
right:10px;
border-radius:100px/10px;/*水平/垂直方向的半径*/
box-shadow:0 0px 20px rgba(0,0,0,0.8);
/*下面的盒子的外阴影*/
}


.box{width:980px;
     height:auto;
     overflow:hidden;
     clear:both;
     margin:0 auto;
}


.box li{width:300px;
        height:220px;
        margin:20px 10px;
        float:left;
        border:2px solid #efefef;/*显示边框,相框*/
        background:#fff;
        position:relative;
        text-align:center;
        line-height:220px;
        font-size:30px;
        box-shadow:0 1px 4px rgba(0,0,0,0.3),0 0 60px rgba(0,0,0,0.1) inset;
/*给照片的框添加阴影,为直角阴影*/
}


.box li:before{
content:'';
position:absolute;
z-index:-1; 
background:transparent;/*透明*/
width:90%;
height:80%;
left:20px;
bottom:8px;
transform:skew(-12deg) rotate(-4deg);/*旋转倾斜*/ 
box-shadow:0 8px 20px rgba(0,0,0,0.6)/*设置阴影效果*/
}


.box li:after{
content:'';
position:absolute;
z-index:-1; 
background:transparent;
width:90%;
height:80%;
right:20px;
bottom:8px;
transform:skew(12deg) rotate(4deg); /*向右斜切*/
box-shadow:0 8px 20px rgba(0,0,0,0.6)
}
.box li img{display:block;
            width:290px;
            height:210px;
            margin:5px;
}
  </style>
 </head>
 <body>
   <div class="wrap effect">
   <h1>Shadow Effect</h1>
   </div>
   <ul class="box">
      <li><img src="images/photo1.jpg"/></li>
      <li><img src="images/photo2.jpg"/></li>
      <li><img src="images/photo3.jpg"/></li>
  </ul>
 </body>
</html>


学完这个知识点后,总结了一下用到的知识点,实质上做出来的阴影效果是让阴影重叠。

1、阴影设置颜色和透明度时,用rgba,直接设置。

box-shadow:10px 10px 10px 10px;分别为水平,垂直距离,模糊程度,模糊距离,阴影值可为负值,代表着方向

box-shadow可设置一个或多个阴影,多阴影设置时逗号隔开。

Inset:内阴影

2、

曲线阴影实现原理:在盒子本身后面再添加,用到:after与:before

:after 选择器:在被选元素的后面插入内容 :before 选择器:在被选元素的前面插入内容 说明:需使用content属性来指定要插入的内容

设置下面的阴影(红色),为确定它的曲线阴影,需要设置其四个方向的值,让自动计算它的位置。或者设置盒子的宽高。

3、border-radius:100px/10px;/*水平/垂直方向的半径*/,不能用空格,border-radius:100px10px;,这样设置显示的是对角的半径

4、曲线阴影效果=1个直角阴影+2个重叠的曲线阴影(2个重叠的曲线阴影要放在直角阴影的下面)

5、翘边阴影,添加两个盒子重叠,翘边阴影是需要给盒子做变换的,翘边阴影盒子变换成平行四边形的宽度比直角阴影盒子的大,所以需要设置width;90%;因为阴影距顶部还有点距离所以设置height;80%;

翘边,两个盒子叠加,底部为平行四边形

 倾斜旋转之后

6、overflow的作用是:如果在这个.BOX盒子中的内容或者图片width和height超出了.BOX设置的width和height,那么超出的部分会隐藏并且不占位置。 clear的作用是:清除.BOX左右两边的浮动,这样无论屏幕尺寸多大,这个.BOX始终占满屏幕中的这一行位置。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值