前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS3实现图形曲线阴形和翘边阴影

CSS3实现图形曲线阴形和翘边阴影

作者头像
winty
发布2019-12-21 16:11:11
7880
发布2019-12-21 16:11:11
举报
文章被收录于专栏:前端Q前端Q

说明

本文首发于前端Q公众号,时间为2016年03月12日,由于当时没标原创,现重发一下标注原创...

正文

首先,来看看完成之后的效果图:

①曲线阴影实现:

多个阴影重叠,就是正常阴影+曲线阴影

正常情况下,有个矩形有正常的阴影,作为主投影,这时候再定义一个有一定弧度圆角的圆角矩形,然后放在正常矩形的下面,并露出一点点底部有弧度的阴影,这样的话就可以形成曲线投影的效果。例如下面这个样子:

主要代码:

html部分:

代码语言:javascript
复制
<div class="effect">
</div>

/*css部分:*/

/*曲线阴影*/
.effect{
	position: relative;
	width:500px;
	height:200px;
	margin: 0 auto;
	background-color: #ffffff;
	box-shadow:0 1px 10px rgba(0,120,215,0.7);
	-webkit-box-shadow:0 1px 10px rgba(0,120,215,0.7);
	-moz-box-shadow:0 1px 10px rgba(0,120,215,0.7);
	-o-box-shadow:0 1px 10px rgba(0,120,215,0.7);
}
/*巧用:after和:before,加上绝对定位的特点,形成一个圆角矩形*/
.effect:after,.effect:before{
	position: absolute;
	content: "";
	z-index:-1;
	top:50%;
	bottom:0;
	left:10px;
	right:10px;
	box-shadow:0 0 20px rgba(0,120,215,0.9);
	-webkit-box-shadow:0 0 20px rgba(0,120,215,0.9);
	-moz-box-shadow:0 0 20px rgba(0,120,215,0.9);
	-o-box-shadow:0 0 20px rgba(0,120,215,0.9);
	border-radius: 100px/10px;
	-webkit-border-radius: 100px/10px;
	-moz-border-radius: 100px/10px;
	-o-border-radius: 100px/10px;
	/*border-radius:100px/10px,表示的是,水平方向的半径是100px,垂直方向是10px。*/

}

②翘边阴影

原理:利用:before和:after,加上绝对定位的性质,可以形成一个矩形,这个时候结合CSS3的倾斜属性skew和旋转属性rote。就可以形成一个有旋转角度的平行四边形,这个时候再和原来的矩形重叠,则可产生翘边效果。

原理图:

主要代码:

html部分:

代码语言:javascript
复制
.wrap li img{
	width:350px;
	height:250px;
}

.wrap li:before{
	position: absolute;
	content: "";
	z-index: -2;
	width:325px;
	height:220px;
	left:22px;
	bottom:13px;
	background: transparent;
	box-shadow: 0 5px 30px rgba(0,0,0,1);
	-webkit-box-shadow: 0 5px 30px rgba(0,0,0,1);
	-moz-box-shadow: 0 5px 30px rgba(0,0,0,1);
	-o-box-shadow: 0 5px 30px rgba(0,0,0,1);
	transform:skew(-15deg) rotate(-5deg);
	-webkit-transform:skew(-15deg) rotate(-5deg);
	-moz-transform:skew(-15deg) rotate(-5deg);
	-o-transform:skew(-15deg) rotate(-5deg);
}
.wrap li:after{
	position: absolute;
	content: "";
	z-index: -2;
	width:325px;
	height:220px;
	left:22px;
	bottom:13px;
	-webkit-box-shadow: 0 5px 30px rgba(0,0,0,0.9);
	-moz-box-shadow: 0 5px 30px rgba(0,0,0,0.9);
	-o-box-shadow: 0 5px 30px rgba(0,0,0,0.9);
	box-shadow: 0 5px 30px rgba(0,0,0,0.9);
	-moz-transform:skew(15deg) rotate(5deg);
	-o-transform:skew(15deg) rotate(5deg);
	-webkit-transform:skew(15deg) rotate(5deg);
	transform:skew(15deg) rotate(5deg);
}

更多

完整代码已分享到:

http://git.oschina.net/LuckyWinty/CSS3Shadow

更多CSS3实现的动画效果demo,参考:

http://git.oschina.net/LuckyWinty/CSS3demo/tree/master/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端Q 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档