html - 目标伪类不隐藏内容
问题描述
我正在尝试做一个水平菜单:当用户单击(或点击)一个选项时,内容出现在菜单下方,在同一页面上;当用户点击另一个选项时,新内容与旧内容重叠;每个选项的内容是可变的 - 可以短或长,是否滚动。
我尝试在标签 p 上使用“目标”,基于此链接:https ://www.w3.org/Style/Examples/007/target.en.html
但是当我使用 hr 或 div 或其他不仅是文本的标签时,此内容会出现并且在 p 标签内无法识别,应该隐藏在哪里。
body {
margin:0;
font-family: Calibri, Helvetica, Arial, sans-serif;
}
div.items p:not(:target) {display: none}
div.items p:target { display: block; }
<body>
<p class="menu">
<a href="#item1" class="menuLink">Item 1</a>
<a href="#item2">Item 2</a>
<a href="#item3">Item 3</a>
</p>
<div class="items">
<p id="item1">
11111 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin diam justo, scelerisque non felis porta, placerat vestibulum nisi. Vestibulum ac elementum massa. In rutrum quis risus quis sollicitudin. Pellentesque non eros ante. Vestibulum sed tristique massa.
<br><br>
Item 1 paragraph 2 after a break line, but appears the content after tag hr or tag div from others items.
</p>
<p id="item2">
22222 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin diam justo, scelerisque non felis porta, placerat vestibulum nisi. Vestibulum ac elementum massa. In rutrum quis risus quis sollicitudin. Pellentesque non eros ante. Vestibulum sed tristique massa.
<hr>
Item 2 paragraph 2 after an hr tag, but showed at the start; not hidden inside a p item.
</p>
<p id="item3">
33333 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin diam justo, scelerisque non felis porta, placerat vestibulum nisi. Vestibulum ac elementum massa. In rutrum quis risus quis sollicitudin. Pellentesque non eros ante. Vestibulum sed tristique massa.
<div>
Item 3 paragraph 2 after a div class, but showed at the start; not hidden inside a p item.
</div>
</p>
</div>
</body>
我做错了什么?
解决方案
看起来您可以为要隐藏的每种类型的标签添加另一个 CSS 规则。像这样的东西:
div.items hr:not(:target), div.items p:not(:target) {display: none}
div.items hr:target, div.items p:target { display: block; }
只需根据需要添加尽可能多的规则。更好的是,您可以将所有项目包装在 a 中div
,然后将p
,hr
等放入其中。
<div class="items">
<div id="item1">
<p>Some text</p>
<hr />
<p>Something else</p>
</div>
<div id="item2">
...
</div>
...
</div>
然后这样做:
div.items > div:not(:target) {display: none}
div.items > div:target { display: block; }
希望有帮助。
推荐阅读
- python - 根据操作系统导入模块的函数
- asp.net - 如何在 ExceptionFilter 中填充 ViewDataDictionary
- angular - Ionic/Angular - 选择选项未标记,选项从 API 加载
- javascript - 如何为具有不同日期值的所有任务更新/刷新 dhtmlx 甘特图中的开始日期
- r - 数据操纵:收集或传播或两者兼而有之?
- django - 如何在 Django 中合并不同的模型查询集后删除重复值
- javascript - 当字符串有盐时,crypto js des解密会中断
- flutter - 颤振飞镖布局,堆栈,定位如何在整个屏幕上拉伸材质按钮矩阵
- powerbuilder - 屏幕的细节部分未显示
- r - R中具有相同变量的多个字符向量的探索性数据分析