“拿来主义”学习元素裁剪
欢迎关注: 小拾岁月,获取源码。
参考链接:https://mp.weixin.qq.com/s/TsOOhUAff6OeqPW7A9JuaQ
预期效果图
需求分析
首先从需求上来看,需要一个主元素用于展示用户头像。例外,在页面无操作的时候,显示 蒙层效果
,所以需要一个蒙层元素。最后,在鼠标移入的时候,蒙层从中心处不断以圆形方式缩减,也需要一个元素。
注意,其中元素可以使用 伪元素
实现。具体元素作用如下:
- 主元素,用于展示头像
- 蒙层元素,用于覆盖主元素
- 动画元素,用于展示圆形扩散动画
页面布局
<div class="avatar"></div>
页面样式
主元素
.avatar {
background-image: url(../img/avatar.jpeg);
background-size: contain;
background-repeat: no-repeat;
background-position: center center;
width: 200px;
height: 200px;
border-radius: 50%;
cursor: pointer;
position: relative;
border: 2px solid black;
margin: 100px auto;
}
蒙层元素
.avatar::before,
.avatar::after {
content: '';
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
border-radius: 50%;
transition: all 0.5s;
}
.avatar::before {
background: rgba(0, 0, 0, .5);
}
动画元素
.avatar::before,
.avatar::after {
content: '';
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
border-radius: 50%;
transition: all 0.5s;
}
.avatar::after {
background: inherit;
clip-path: circle(0% at 50% 50%);
}
注意,其中 clip-path
用于图形裁剪图形。具体使用方法可以参考:https://tools.jb51.net/code/css3path
关键代码
.avatar::after {
background: inherit;
clip-path: circle(0% at 50% 50%);
}
.avatar:hover::after{
clip-path: circle(50% at 50% 50%);
}
注意,通过 hover
改变裁剪尺寸,以实现圆形扩散效果。
温馨提示
更多博文,请关注:xssy5431 小拾岁月