CSS导航切换实现

实现某些动画效果

首先分析需要怎么样的效果,根据需求添加合适的css属性。

比如添加2d或者3d反转效果等。

第一个点就是如何控制点击的时候像js一样动态更改样式,这里使用这2个标签来实现。

<input><lable>

编写具体代码

利用这两个标签的for与id属性来对应是否点击,根据输入标签的类型选择复选框等。

<!--nav.html-->
<span class="logo">
<input id="menu" role="checkbox" class="toggle" type="checkbox" >
<label for="menu" class="avatar">
	<img src="···" alt="霁">
</label>
<label class="mask" for="menu"></label>
<ul class="box-shadow menu" role="menubar">
    <li role="menuitem" tabindex="0">
        <a href="/" title="首页" tabindex="0">
            首页
        </a>
    </li>
</ul>
</span>

直接从代码这里分析,一共是使用两个label对应一个隐藏的输入框,来达到 true or false 的选择。

然后根据输入框是否被选择来更改列表的样式,以达到更改样式的效果,整体上就是如此。

具体就是通过样式的选择器来实现更改。

/* style.css */
.toggle {
    display: none;
}
/* 
	遮罩层,主要在点击非toggle区域
	的主lable的时候取消选择状态
*/
.mask {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 1;
	display: none;
}
/* 根据选择器在input 被 checked的时候进行更改样式 */
.toggle:checked~.mask {
    display: block;
    -webkit-tap-highlight-color: transparent;
}

.toggle:checked~.menu {
    pointer-events: auto;
    -webkit-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
}

.toggle:checked~.avatar img {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg)
}

总结一下

利用css实现一些样式修改的效果,减少使用js进行控制样式。灵活使用一些html标签与css的选择器进行搭配使用。



奖励一下