0

0

css 想制作简单标签切换效果怎么办_hover 与 active 伪类配合

P粉602998670

P粉602998670

发布时间:2026-01-20 13:40:02

|

249人浏览过

|

来源于php中文网

原创

纯 CSS 实现标签切换必须用 :checked + radio,因 :hover 和 :active 无法保持状态;:focus-within 和 :has() 兼容性差不可靠;JS 方案应仅切换 class 以最小侵入。

css 想制作简单标签切换效果怎么办_hover 与 active 伪类配合

:hover:active 做标签切换效果不现实

直接靠 :hover:active 无法实现「点击后保持选中状态」的标签切换——因为这两个伪类都是临时触发的::hover 鼠标移入时生效、移出即失效;:active 只在鼠标按下瞬间存在,松开就消失。它们都不具备“记忆状态”的能力。

真正可用的 CSS 方案是 :checked +

想纯 CSS 实现可切换、可保持的标签效果,必须借助表单控件的状态。最稳定的做法是用隐藏的 配合 :checked 伪类,再用相邻兄弟选择器(~+)控制对应内容显隐。

  • 所有 必须有相同 name 属性,确保单选互斥
  • 每个 for 属性需指向对应 id,或包裹 实现点击穿透
  • 被选中的 后面的内容区域,用 input:checked ~ .panel 这类选择器控制显示
这里是首页内容
这里是关于内容

CSS 中用 input#tab1:checked ~ .panels .panel:nth-child(1) 控制显示,其余类推。

:focus-within:has() 尚未普适,别依赖

虽然现代 CSS 提供了 :focus-within(配合 tabindex)和实验性 :has(input:checked),但:

立即学习前端免费学习笔记(深入)”;

MusicAI
MusicAI

AI音乐生成工具

下载
  • :focus-within 依赖键盘焦点,对鼠标用户不友好,且失去焦点后状态丢失
  • :has() 在 Safari 15.4+ 和 Chrome 105+ 才支持,Firefox 仍需手动开启实验功能,线上项目基本不可用
  • 两者都无法替代 :checked 的语义明确性和兼容性(IE9+ 支持)

如果非要用 JS,最小侵入写法是切换 class

真要放弃纯 CSS,最轻量的做法是只用 JS 切换一个 .active 类,其他全由 CSS 控制:

document.querySelectorAll('.tab-btn').forEach(btn => {
  btn.addEventListener('click', () => {
    document.querySelectorAll('.tab-btn, .tab-panel').forEach(el => {
      el.classList.remove('active');
    });
    btn.classList.add('active');
    const target = document.querySelector(btn.dataset.target);
    if (target) target.classList.add('active');
  });
});

对应 CSS 只需写 .tab-btn.active.tab-panel.active 样式即可。这样 JS 不参与样式计算,维护成本低,也方便后续加动画。

容易被忽略的是:radio 方案里,若默认没设 checked,首次加载时所有面板都可能隐藏——务必检查初始状态是否显式声明。

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

524

2023.06.15

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

263

2023.07.27

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

758

2023.07.28

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

539

2023.08.01

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

761

2023.08.10

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

605

2023.08.10

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

560

2023.08.21

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

396

2023.08.22

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 21.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号