【发布时间】:2020-01-15 16:40:01
【问题描述】:
我正在以http://codepen.io/Idered/pen/AeBgF 为起点实现 CSS 阅读更多/阅读更少功能。
我对其进行了修改以处理<p> 标签与<li> 列表项。
我无法在 http://bit.ly/1L5vMm7 的页面上使用代码
这是我的 CSS 版本:
input.read-more-state {
display: none;
}
p.read-more-target {
font-size: 0;
max-height: 0;
opacity: 0;
transition: .25s ease;
}
input.read-more-state:checked ~ div.read-more-wrap p.read-more-target {
font-size: inherit;
max-height: 999em;
opacity: 1;
}
input.read-more-state ~ label.read-more-trigger:before {
content: 'Read more';
}
input.read-more-state:checked ~ label.read-more-trigger:before {
content: 'Read less';
}
label.read-more-trigger {
cursor: pointer;
display: inline-block;
}
这是我的 HTML:
<input class="read-more-state" id="read-more-controller" type="checkbox">
<div class="read-more-wrap">
<p>Lorem ipsum dolor sit amet...</p>
<p class="read-more-target">Lorem ipsum dolor sit amet...</p>
<p class="read-more-target">Lorem ipsum dolor sit amet...</p>
<p class="read-more-target">Lorem ipsum dolor sit amet...</p>
</div>
<label class="read-more-trigger" for="read-more-controller"></label>
如果您能发现与 RM/RL 实用程序有冲突的地方,请告诉我。
【问题讨论】:
-
您正在使用同级选择器,CSS 在选择元素时无法向上遍历 DOM。将
input和label移动到div上方。 -
谢谢@Harry,我会在修复后回帖。
-
好的,虽然这是有道理的@Harry,“阅读更多”/“阅读更少”控制链接 [now] 显示在内容上方而不是内容中。不知道为什么它适用于 Codepen 作者而不是我的文档流。
-
将
<input>放在<div>之前,以便您可以使用兄弟选择器。将<label>放在<div>之后,使其显示在内容下方。 -
Put the <input> before the <div> so that you can use the sibling selector. Put the <label> after the <div> so it appears below the content.我从 @DarkFalcon 开始,显示更多内容不可点击。立即查看该页面。
标签: css css-selectors toggle