
通过调整 HTML 结构与巧妙运用 :target 伪类配合兄弟选择器,可在不依赖 JavaScript 的前提下,实现点击锚点显示目标区块、隐藏其余所有内容(包括触发用的 标签)的效果。
通过调整 html 结构与巧妙运用 `:target` 伪类配合兄弟选择器,可在不依赖 javascript 的前提下,实现点击锚点显示目标区块、隐藏其余所有内容(包括触发用的 `` 标签)的效果。
要达成“点击链接显示对应内容,同时隐藏自身及其他所有非目标元素”的效果,关键在于改变 DOM 结构逻辑——将锚点 放入目标 ⚠️ 注意事项: 该方案规避了 JavaScript 操作 DOM 的复杂性,兼顾可维护性、可访问性与性能,是纯前端锚点式单页内容切换的理想实践。✅ 推荐结构:语义化 + 可控性更强
<div id="a" class="page">
<a href="https://www.php.cn/link/0361f1baaa8ed070dfe62ae2245bcbed">a</a>
<div class="content">this is a id</div>
</div>
<div id="b" class="page">
<a href="#b">b</a>
<div class="content">this is b id</div>
</div>
<div id="c" class="page">
<a href="#c">c</a>
<div class="content">this is c id</div>
</div>
✅ 对应 CSS:纯 CSS 驱动显示/隐藏逻辑
.page {
display: inline-block; /* 保持块级行为,避免换行干扰 */
}
.content {
display: none;
}
/* 当前目标页显示其 content,隐藏自身 anchor */
.page:target > .content {
display: block;
}
.page:target > a {
display: none;
}
/* 隐藏所有非目标 .page 元素(及其子元素) */
.page:target ~ :not(.page:target) {
display: none;
}
? 扩展建议(可选增强)
.content {
opacity: 0;
transform: translateY(10px);
transition: opacity 0.3s ease, transform 0.3s ease;
}
.page:target > .content {
opacity: 1;
transform: translateY(0);
}
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











