加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 系统 > 正文

纯CSS实现导航栏Tab切换效果

发布时间:2020-03-16 14:08:15 所属栏目:系统 来源:站长网
导读:副标题#e# 不用 Javascript,使用纯 CSS 方案,实现类似下图的导航栏切换: CSS 的强大之处有的时候超乎我们的想象,Tab 切换,常规而言确实需要用到一定的脚本才能实现。下面看看如何使用 CSS 完成同样的事情。 实现 Tab 切换的难点在于如何使用 CSS 接收

<span style="font-family: verdana, geneva;">#content1:target ~ .nav li{   

    // 改变li元素的背景色和字体颜色   

    &:first-child{   

        background:#ff7300;   

        color:#fff;   

    }   

}   

#content2:target ~ .nav li{   

    // 改变li元素的背景色和字体颜色   

    &:last-child{   

        background:#ff7300;   

        color:#fff;   

    }   

}</span>  

上面的 CSS 规则中,我们使用 ~ 选择符,在 #content1:target 和 #content2:target 触发的时候分别去控制两个导航 li 元素的样式。

至此两个问题,1. 如何接收点击事件 与 2. 如何操作相关DOM 都已经解决,剩下的是一些小样式的修补工作。

Demo戳我:纯CSS导航切换(:target伪类实现)

纯CSS实现导航栏Tab切换效果

法二:<input type="radio"> && <label for="">

上面的方法通过添加 <a> 标签添加页面锚点的方式接收点击事件。

这里还有一种方式能够接收到点击事件,就是拥有 checked 属性的表单元素, <input type="radio"> 或者<input type="checkbox"> 。

假设有这样的结构:

CSS Code复制内容到剪贴板

<input class="nav1" type="radio">   

<ul class='nav'>   

    <li>列表1</li>   

</ul>  

对于上面的结构,当我们点击 <input class="nav1" type="radio"> 单选框表单元素的时候,使用 :checked是可以捕获到点击事件的。

CSS Code复制内容到剪贴板

.nav1:checked ~ .nav li {   

  // 进行样式操作   

}  

同样用到了兄弟选择符 ~

这样,当接收到表单元素的点击事件时,可以通过兄弟选择符 ~ 操作它的兄弟元素的样式。

可以试着点击下面 codepen 中的单选框。

纯CSS实现导航栏Tab切换效果

但是,这里有个问题 我们的 Tab 切换,要点击的是<li>元素,而不是表单元素,所以这里很重要的一点是,使用 <label for=""> 绑定表单元素。看看如下结构:

CSS Code复制内容到剪贴板

<input class="nav1" id="li1" type="radio">   

<ul class='nav'>   

    <li><label for="li1">列表1</label></li>   

</ul>  

通过使用 <label> 包裹一个 <li> 元素,而 <label> 有一个属性 for 可以绑定一个表单元素。

上面的 <li> 中,有一层 <label for="li"> ,里面的 for="li1" 意思是绑定 id 为li1 的表单元素。

label 标签中的 for 定义:for 属性规定 label 与哪个表单元素绑定。

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读