html - 选中的复选框不会改变 CSS
问题描述
我已经为复选框设计了一个按钮,但是当检查复选框时,它没有应用我为按钮编写的样式。
只是想知道我做错了什么,希望它不是太明显。
html
<div class="customCheckBox"style="margin-top:10px; margin: 10px auto;">
<input class="checkbox" type="checkbox" name="check1" id="check1">
<label class="checklabel" for="check1">Directors, Managers & Professionals</label>
</div>
CSS
body {
font-family: 'Source Sans Pro', Arial, sans-serif;
font-size: 14px;
line-height: 1.429;
margin: 0;
padding: 0;
color: #000000;
}
.customCheckBox{
height: 60px;
display:flex;
width:190px;
color: #702082;
font-weight: 600;
border:3px solid #702082;
position: relative;
align-items: center;
transition: all 0.2s;
}
.customCheckBox:hover{
background-color: #702082;
color: white;
-moz-box-shadow: 3px 3px 10px rgba(0, 0, 0,0.25);
-webkit-box-shadow: 3px 3px 10px rgba(0, 0, 0, .25);
box-shadow: 3px 3px 10px rgba(0, 0, 0, .25);
}
.checklabel {
text-align:center;
font-size:1.1em;
}
.checkbox {
position:absolute;
right:-3px;
top:-3px;
width: 190px;
height: 60px;
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
border:none;
padding:0;
border-radius:0;
transition:.3s ease;
outline:0;
}
.checkbox:checked + .customCheckBox {
background-color: #702082;
color: white;
}
这里也是它的一个 Jfiddle http://jsfiddle.net/pjtmzLy5/1/。
解决方案
应该是这样的;
在 css+
中表示紧挨着前一个的内容。在你的情况下.checkbox:checked + .checklabel
。因此,如果复选框:checked
不是样式检查标签;
您需要添加默认样式,.checklabel
因此添加高度和宽度继承应该可以解决问题;而不是添加更多样式,例如justify-content & align-items
将其居中;
body {
font-family: 'Source Sans Pro', Arial, sans-serif;
font-size: 14px;
line-height: 1.429;
margin: 0;
padding: 0;
color: #000000;
}
.customCheckBox{
height: 60px;
width:190px;
color: #702082;
font-weight: 600;
border:3px solid #702082;
position: relative;
align-items: center;
transition: all 0.2s;
}
.customCheckBox:hover{
background-color: #702082;
color: white;
-moz-box-shadow: 3px 3px 10px rgba(0, 0, 0,0.25);
-webkit-box-shadow: 3px 3px 10px rgba(0, 0, 0, .25);
box-shadow: 3px 3px 10px rgba(0, 0, 0, .25);
}
.checklabel {
display:flex;
justify-content: center;
align-items: center;
text-align:center;
font-size:1.1em;
height: inherit;
width: inherit;
}
.checkbox {
position:absolute;
right:-3px;
top:-3px;
width: 190px;
height: 60px;
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
border:none;
padding:0;
border-radius:0;
transition:.3s ease;
outline:0;
}
.checkbox:checked + .checklabel {
background-color: #702082;
color: white;
}
<div class="customCheckBox"style="margin-top:10px; margin: 10px auto;">
<input class="checkbox" type="checkbox" name="check1" id="check1">
<label class="checklabel" for="check1">Directors, Managers & Professionals</label>
</div>
我建议您删除所有样式,.checkbox
因为您隐藏它只需要
.checkbox {display: none}
推荐阅读
- r - 在 R 中的 for 循环中绘图
- visual-studio - 您的项目没有引用“MonoAndroid,Version=v9.0”
- php - 如何获取数组 stdClass 对象值
- f# - 使用 FsCheck 创建记录的问题
- python-3.x - 在 python 中启动音乐
- android - ANDROID STUDIO 中没有重复的随机文本
- c++ - 为什么在失败时在 CAS 循环中首选 std::memory_order_relaxed?
- symfony - 如何将 Symfony 4.3 的默认最小 nginx 配置放在子位置?
- python - pytest 和 codecov:未找到覆盖率报告
- django - 无法使用 ListView 在模板中显示外键