css - CSS仅在复选框检查时向下滑动
问题描述
我正在寻找在没有 JS 的情况下对复选框检查创建滑动效果,所以纯 css。问题是我们不能在这个页面上使用 JS。
我看过很多网站,但他们都说不同的东西,而且大多数都使用 JS。
我的 HTML:
<label>
<input class="open-content" type="checkbox">
<div class="label-container">
<div style="color: #EC008C; font-size: 20px; font-weight: 700;">Open this tab</div>
<div style="font-size: 32px; font-weight: 700;">+</div>
</div>
<div class="content-open fade-new">Show this content with slidedown</div>
</label>
我的 CSS:
<style type="text/css">
.open-content:checked ~ .content-open {
visibility: visible!important; max-height: none!important;
padding: 20px 0px 20px 20px;
margin-top: 30px;
}
.fade-new {
transition: visbility 0.3s ease-in-out, max-height 0.3s ease-in-out;
}
.content-open {
max-height: 0px;
visibility: hidden;
background-color: #F5F5F5;
}
</style>
但它不是动画的。我使用不透明度 0 到 1 来制作漂亮的动画,但如果可以使用复选框 + 纯 CSS,我更喜欢向下滑动。有谁知道如何做到这一点?
解决方案
是的,可以使用复选框 hack创建纯 CSS 向下滑动。
在此示例中,我将 与 分开<label>
并<input>
通过以下方式链接它们:
- 给
<input>
一个id
- 给出
<label>
一个匹配的for
属性
工作示例(版本 1):
这个版本向下滑动。
.open-content {
display: none;
}
.label-text {
position: relative;
display: block;
z-index: 12;
height: 32px;
line-height: 32px;
padding: 6px;
color: #EC008C;
font-size: 20px;
font-weight: 700;
background-color: rgb(255, 255, 255);
cursor: pointer;
}
.label-text::after {
content: '+';
display: inline;
color: rgb(0, 0, 0);
font-size: 32px;
font-weight: 700;
vertical-align: bottom;
}
.content {
position: relative;
display: inline-block;
z-index: 6;
padding: 6px;
background-color: #F5F5F5;
opacity: 0;
transform: translateY(-50px);
transition: all 0.6s linear;
}
.open-content:checked ~ .content {
opacity: 1;
transform: translateY(0);
}
<input id="open-content" class="open-content" type="checkbox">
<label class="label-text" for="open-content">
Open this tab
</label>
<div class="content">
<p>Show this content with slidedown</p>
</div>
工作示例(版本 2):
这个版本展开。
.open-content {
display: none;
}
.label-text {
position: relative;
display: block;
z-index: 12;
height: 32px;
line-height: 32px;
padding: 6px;
color: #EC008C;
font-size: 20px;
font-weight: 700;
background-color: rgb(255, 255, 255);
cursor: pointer;
}
.label-text::after {
content: '+';
display: inline;
color: rgb(0, 0, 0);
font-size: 32px;
font-weight: 700;
vertical-align: bottom;
}
.content {
position: relative;
display: inline-block;
z-index: 6;
padding: 6px;
height: 0;
background-color: #F5F5F5;
opacity: 0;
overflow: hidden;
transition: all 0.6s linear;
}
.open-content:checked ~ .content {
opacity: 1;
height: 120px;
}
<input id="open-content" class="open-content" type="checkbox">
<label class="label-text" for="open-content">
Open this tab
</label>
<div class="content">
<p>Show this content with slidedown</p>
<p>Show this content with slidedown</p>
<p>Show this content with slidedown</p>
</div>
延伸阅读:
推荐阅读
- git - 如何使用包含“/”的个人访问令牌通过 https 进行 git clone?
- python - Python:将 x,y,z 数据转换为以 x,y 作为元组键的字典
- arrays - 从 Matlab 导出到 Stata 的数字和字符串数组
- keras - 当我应用有状态 LSTM 并重置状态时,有什么方法可以使用 EarlyStopping Keras 函数?
- vba - 带有 VB_PredeclaredId = True 的 VBA 工厂与“匿名”实例的优缺点
- ios - 如何触发 LAErrorBiometryNotEnrolled 和 LAErrorPasscodeNotSet 的生物识别错误?
- java - 使用 JPA 使用 @ElementCollection 从 @CollectionTable 中删除条目
- css - 粘性位置在基于浮动的布局中不起作用,但在基于浮动的布局之外起作用
- python - 尝试按数字列对熊猫数据框进行排序,但得到奇怪的输出
- python - 量化字符串之间字符转置数量的快速方法(python或内部库)