本文主要介绍了菜单栏 “三” 变形为“X”css3过渡动画的实现方法。具有很好的参考价值,下面跟着小编一起来看下吧
最近要模仿一个页面,其中有一个效果就是 三 菜单栏 变形为 X 的效果,
效果如下:
图(1)初始效果
图(2)鼠标悬浮效果
思路:
三横的实现:传统可以用3个span标签来实现,但有一个更加巧妙的方法,1个标签就能实现三横效果,根据张鑫旭大神分享的利用padding用一个标签实现 三 的效果,大概原理是上中下横线分别用 border-top,背景,border-bottom。用background-clip:content-box剪裁,最后用padding上下撑开,实现三横的视觉效果,
X的实现:而变形的X也不需要额外的标签,利用其自身after before伪类 transform旋转,偏移实现。需要耐心的调整角度。
要注意的是,用padding撑开实现三横效果,触发不太灵敏,最好用一个标签包裹着icon标签,在包裹层做:hover触发
下面是代码
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
.icon{
width: 50px;
height: 10px;
padding: 10px 0;
border-top: 10px solid #000;
border-bottom: 10px solid #000;
background: #000;
background-clip: content-box;
}
.fa{
cursor: pointer;
width: 50px;
height: 50px;
transition: .3s ease;
}
.fa:hover>.icon{
border: 0;
background: none;
}
.icon:before,.icon:after{
position: absolute;
content: "";
width: 60px;
height: 60px;
transition: .3s ease;
-webkit-transition: .3s ease;
opacity: 0;
}
.icon:before{
top: -5px;
border-bottom: 10px solid #000;
}
.icon:after{
top: 15px;
border-top: 10px solid #000;
}
.fa:hover>.icon:before{
opacity: 1;
transform: rotate(135deg) translateX(5px) translateY(-25px);
-webkit-transform: rotate(135deg) translateX(5px) translateY(-25px);
}
.fa:hover>.icon:after{
opacity: 1;
transform: rotate(-135deg) translateX(20px) translateY(39px);
-webkit-transform: rotate(-135deg) translateX(20px) translateY(39px);
}
</style>
</head>
<body>
<div class="fa">
<div class="icon"></div>
</div>
<script type="text/javascript">
</script>
</body>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
|