菜单栏 “三” 变形为“X”css3过渡动画

发表于2017-03-07 10:27:48

分享一篇文章给大家。


最近要模仿一个页面,其中有一个效果就是 三 菜单栏 变形为 X 的效果,
思路:
三横的实现:传统可以用3个span标签来实现,但有一个更加巧妙的方法,1个标签就能实现三横效果,根据张鑫旭大神分享的利用padding用一个标签实现 三 的效果,大概原理是上中下横线分别用 border-top,背景,border-bottom。用background-clip:content-box剪裁,最后用padding上下撑开,实现三横的视觉效果,
X的实现:而变形的X也不需要额外的标签,利用其自身after before伪类 transform旋转,偏移实现。需要耐心的调整角度。
要注意的是,用padding撑开实现三横效果,触发不太灵敏,最好用一个标签包裹着icon标签,在包裹层做:hover触发


下面是代码

<!doctype html>

<html>

<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>

<div></div>

</div>


<script type="text/javascript">

</script>

</body>

</html>


本文转载自:http://www.qdfuns.com/notes/31180/d20313bedb523f340bf07be173d70d02.html

评论(0)

请先登录后再评论,如果没有账号请先注册

发表评论