添加 CSS 悬停效果到更改 div 的复选框下的标签
Add CSS hover effect to label under checkbox that alters div
如何在输入标签下添加CSS悬停效果?
我正在尝试寻找没有 div ID 的通用解决方案。
现场演示可以在 JSFiddle 上找到
https://jsfiddle.net/AugerHybrid/8u045Lpc
勾选时应该expand/shrink对应div
它应该显示悬停效果以指示标签是可点击的。
<!DOCTYPE html>
<html lang="en">
<head>
<title>checkbox expand div</title>
<meta charset="UTF-8" />
<style>
.case {
position: relative;
margin-bottom: 1em;
}
.case label {
display: inline-block;
background-color: coral;
box-sizing: border-box;
width: 100%;
}
.case input {
text-align: center;
height: 55px;
position: absolute;
left: 0;
top: 0;
opacity: 0;
cursor: pointer;
}
.project-input {
width: 100%;
height: 20px;
display: block;
}
.projectcontent {
max-height: 50px;
transition: max-height 0.15s ease-out;
overflow: hidden;
background-color: #888;
}
.case .project-input:checked + .projectcontent {
max-height: 2000px;
overflow: visible;
transition: max-height 0.3s ease-out;
}
</style>
</head>
<body>
<main>
<h1>Expand divs</h1>
<div class="case">
<label for="project-input">
<h2>Click here to expand/shrink this div</h2></label
>
<input type="checkbox" class="project-input" title="Expand / Shrink" />
<div class="projectcontent">
<p>Lorem ipsum<br />dolor sit amet.</p>
<p>consectetur<br />adipiscing elit.</p>
<p>sed do eiusmod<br />tempor incididunt.</p>
<p>ut labore et<br />dolore magna aliqua.</p>
</div>
</div>
<div class="case">
<label for="project-input">
<h2>Click here to expand/shrink this div</h2></label
>
<input type="checkbox" class="project-input" title="Expand / Shrink" />
<div class="projectcontent">
<p>Lorem ipsum<br />dolor sit amet.</p>
<p>consectetur<br />adipiscing elit.</p>
<p>sed do eiusmod<br />tempor incididunt.</p>
<p>ut labore et<br />dolore magna aliqua.</p>
</div>
</div>
</main>
</body>
</html>
TLD'R - 添加 .case label:hover
角色。完全隐藏输入(例如使用 clip
)并匹配标签 for
和输入 id
属性。
详细解释
可以在label中加上:hover
来做悬停效果。 这里的问题是输入出现在标签的顶部,因此标签不会“捕捉”悬停。
解决方法是完全隐藏输入。 问题 现在点击标签没有任何反应。
解决方案是匹配标签for
和输入id
属性所以点击标签将选中/取消选中输入。
如何在输入标签下添加CSS悬停效果? 我正在尝试寻找没有 div ID 的通用解决方案。
现场演示可以在 JSFiddle 上找到 https://jsfiddle.net/AugerHybrid/8u045Lpc
勾选时应该expand/shrink对应div
它应该显示悬停效果以指示标签是可点击的。
<!DOCTYPE html>
<html lang="en">
<head>
<title>checkbox expand div</title>
<meta charset="UTF-8" />
<style>
.case {
position: relative;
margin-bottom: 1em;
}
.case label {
display: inline-block;
background-color: coral;
box-sizing: border-box;
width: 100%;
}
.case input {
text-align: center;
height: 55px;
position: absolute;
left: 0;
top: 0;
opacity: 0;
cursor: pointer;
}
.project-input {
width: 100%;
height: 20px;
display: block;
}
.projectcontent {
max-height: 50px;
transition: max-height 0.15s ease-out;
overflow: hidden;
background-color: #888;
}
.case .project-input:checked + .projectcontent {
max-height: 2000px;
overflow: visible;
transition: max-height 0.3s ease-out;
}
</style>
</head>
<body>
<main>
<h1>Expand divs</h1>
<div class="case">
<label for="project-input">
<h2>Click here to expand/shrink this div</h2></label
>
<input type="checkbox" class="project-input" title="Expand / Shrink" />
<div class="projectcontent">
<p>Lorem ipsum<br />dolor sit amet.</p>
<p>consectetur<br />adipiscing elit.</p>
<p>sed do eiusmod<br />tempor incididunt.</p>
<p>ut labore et<br />dolore magna aliqua.</p>
</div>
</div>
<div class="case">
<label for="project-input">
<h2>Click here to expand/shrink this div</h2></label
>
<input type="checkbox" class="project-input" title="Expand / Shrink" />
<div class="projectcontent">
<p>Lorem ipsum<br />dolor sit amet.</p>
<p>consectetur<br />adipiscing elit.</p>
<p>sed do eiusmod<br />tempor incididunt.</p>
<p>ut labore et<br />dolore magna aliqua.</p>
</div>
</div>
</main>
</body>
</html>
TLD'R - 添加 .case label:hover
角色。完全隐藏输入(例如使用 clip
)并匹配标签 for
和输入 id
属性。
详细解释
可以在label中加上
:hover
来做悬停效果。 这里的问题是输入出现在标签的顶部,因此标签不会“捕捉”悬停。解决方法是完全隐藏输入。 问题 现在点击标签没有任何反应。
解决方案是匹配标签
for
和输入id
属性所以点击标签将选中/取消选中输入。