纯CSS3实现H5常见的三横杠菜单点击变叉动画
本文摘要
汉堡(三横杠)菜单是移动菜单的开关,所以很多人会追求它的样式设计、动画设计如何更美观好看,本文介绍3款纯CSS3实现的汉堡(三横杠)菜单点击变叉动画。 效果图 < class="alignnone size-medium wp-image-73391" src="http://blog.jsudo.com/wp-content/uploads/2023/06/20230616
汉堡(三横杠)菜单是移动菜单的开关,所以很多人会追求它的样式设计、动画设计如何更美观好看,本文介绍3款纯CSS3实现的汉堡(三横杠)菜单点击变叉动画。
效果图
< class="alignnone size-medium wp-image-73391" src="http://blog.jsudo.com/wp-content/uploads/2023/06/202306161405405862-300x112.gif" alt="" width="300" height="112" />HTML
下面是3款菜单的HTML结构,它们的代码是一样的,不同的是它们的CSS样式。- <divclass="hamburger"id="hamburger-1"onclick="this.classList.toggle('is-active')"><spanclass="line"></span><spanclass="line"></span><spanclass="line"></span></div>
- <divclass="hamburger"id="hamburger-2"onclick="this.classList.toggle('is-active')"><spanclass="line"></span><spanclass="line"></span><spanclass="line"></span></div>
- <divclass="hamburger"id="hamburger-3"onclick="this.classList.toggle('is-active')"><spanclass="line"></span><spanclass="line"></span><spanclass="line"></span></div>
div标签有一个onclick
属性,这是鼠标点击事件,点击图标后三横杠和叉这两个图标以动画形式切换。CSS
下面是3款菜单的CSS样式。示例1
- #hamburger-1.is-active.line:nth-child(2){
- opacity:0;
- }
- #hamburger-1.is-active.line:nth-child(1){
- -webkit-transform:translateY(13px)rotate(45deg);
- -ms-transform:translateY(13px)rotate(45deg);
- -o-transform:translateY(13px)rotate(45deg);
- transform:translateY(13px)rotate(45deg);
- }
- #hamburger-1.is-active.line:nth-child(3){
- -webkit-transform:translateY(-13px)rotate(-45deg);
- -ms-transform:translateY(-13px)rotate(-45deg);
- -o-transform:translateY(-13px)rotate(-45deg);
- transform:translateY(-13px)rotate(-45deg);
- }
示例2
- #hamburger-2{
- position:relative;
- -webkit-transition:all0.3sease-in-out;
- -o-transition:all0.3sease-in-out;
- transition:all0.3sease-in-out;
- }
- #hamburger-2.is-active{
- -webkit-transform:rotate(45deg);
- -ms-transform:rotate(45deg);
- -o-transform:rotate(45deg);
- transform:rotate(45deg);
- }
- #hamburger-2:before{
- content:"";
- position:absolute;
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box;
- width:70px;
- height:70px;
- border:5pxsolidtransparent;
- top:calc(50%-35px);
- left:calc(50%-35px);
- border-radius:100%;
- -webkit-transition:all0.3sease-in-out;
- -o-transition:all0.3sease-in-out;
- transition:all0.3sease-in-out;
- }
- #hamburger-2.is-active:before{
- border:5pxsolid#ecf0f1;
- }
- #hamburger-2.is-active.line{
- width:35px;
- }
- #hamburger-2.is-active.line:nth-child(2){
- opacity:0;
- }
- #hamburger-2.is-active.line:nth-child(1){
- -webkit-transform:translateY(13px);
- -ms-transform:translateY(13px);
- -o-transform:translateY(13px);
- transform:translateY(13px);
- }
- #hamburger-2.is-active.line:nth-child(3){
- -webkit-transform:translateY(-13px)rotate(90deg);
- -ms-transform:translateY(-13px)rotate(90deg);
- -o-transform:translateY(-13px)rotate(90deg);
- transform:translateY(-13px)rotate(90deg);
- }
示例3
- #hamburger-3{
- -webkit-transition:all0.3sease-in-out;
- -o-transition:all0.3sease-in-out;
- transition:all0.3sease-in-out;
- }
- #hamburger-3.is-active{
- animation:smallbig0.6sforwards;
- }
- @keyframessmallbig{
- 0%,100%{
- -webkit-transform:scale(1);
- -ms-transform:scale(1);
- -o-transform:scale(1);
- transform:scale(1);
- }
- 50%{
- -webkit-transform:scale(0);
- -ms-transform:scale(0);
- -o-transform:scale(0);
- transform:scale(0);
- }
- }
- #hamburger-3.is-active.line:nth-child(1),#hamburger-3.is-active.line:nth-child(2),#hamburger-3.is-active.line:nth-child(3){
- -webkit-transition-delay:0.2s;
- -o-transition-delay:0.2s;
- transition-delay:0.2s;
- }
- #hamburger-3.is-active.line:nth-child(2){
- opacity:0;
- }
- #hamburger-3.is-active.line:nth-child(1){
- -webkit-transform:translateY(13px)rotate(45deg);
- -ms-transform:translateY(13px)rotate(45deg);
- -o-transform:translateY(13px)rotate(45deg);
- transform:translateY(13px)rotate(45deg);
- }
- #hamburger-3.is-active.line:nth-child(3){
- -webkit-transform:translateY(-13px)rotate(-45deg);
- -ms-transform:translateY(-13px)rotate(-45deg);
- -o-transform:translateY(-13px)rotate(-45deg);
- transform:translateY(-13px)rotate(-45deg);
- }
CSS解释
我们看到,CSS主要代码是使用transition 和 transform 两个属性来实现,这两个是动画属性。下面文章详述了这两个属性的使用。 相关文章
加速度是一家专注于为企/事业单位的供应链提供数字化营销/服务的公司,产品线涵盖线上营销策划、商城开发、智慧园区、智能客服和企微SCRM系统,应用于营销推广-线上交易-销售管理-物流配送和服务支持等,致力于帮助企业开发更具投资价值的“数字”资产产品。
添加客服微信获取更多内容










