html - 如何更改复选框输入样式,以便用户点击标签而不是实际框?
问题描述
我正在使用 HTML 和 CSS 创建一个项目,并且我希望有可以使用复选框输入选择的选项。但是,我想更改样式,以便隐藏实际的框,并且可以点击标签文本来指示选择。我可以通过将其不透明度降低为零来隐藏该框,但我正在努力将不可见的框移动到文本顶部,以便看起来文本正在被点击而不是框。这最终将成为 iOS 应用程序的一部分。
这是我所拥有的:带有可见框的当前视图和带有隐藏框的当前视图
隐藏框的外观是我想要的,但要更改背景颜色,用户必须点击文本的左侧(不可见框所在的位置)。
这是HTML:
<div class="full-input preferences">
<input type="checkbox" name="sports" value="Sports" class="preference"><label for="sports">Sports</label>
<input type="checkbox" name="pets" value="Pets" class="preference"><label for="pets">Pets</label>
<input type="checkbox" name="movies" value="Movies" class="preference"><label for="movies">Movies</label>
<input type="checkbox" name="food" value="Food" class="preference"><label for="food">Food</label>
</div>
和CSS:
.preferences {
display: flex;
flex-wrap: wrap;
flex: 2;
}
.preference {
margin: 0 .5em;
}
input[type=checkbox] {
opacity: 0;
}
input[type=checkbox] + label {
border: 1px solid #38A3B8;
padding: .3em;
border-radius: 5px;
min-width: 3em;
text-align: center;
z-index: 1;
}
input[type=checkbox]:checked + label {
background: #38A3B8;
color: white;
}
我尝试过使用绝对定位,但由于某种原因,它导致所有输入只有一个框,而不是每个输入一个框。我还尝试将输入标签放入标签标签中,但是在检查框时,我无法更改背景颜色。
解决方案
但是要改变背景颜色,用户必须点击文本的左侧(不可见框所在的位置)
那是因为您没有正确地将标签与输入字段相关联……</p>
<input type="checkbox" name="sports" value="Sports" class="preference">
<label for="sports">Sports</label>
for
属性必须引用输入字段的 ID,仅输入名称是不够的。
<input type="checkbox" id="sports" name="sports" value="Sports" class="preference">
<label for="sports">Sports</label>
这样,标签与输入字段正确关联,因此单击标签文本现在将切换复选框状态。
推荐阅读
- javascript - 具有特定目标目的地的 D3js 强制模拟
- swagger - openapi:引用列表中的现有示例
- vba - 带有“.”的 Sharepoint 列表列标题 在标题中被列为记录集中的“#”
- node.js - Angular如何显示json对象的实时值
- html - HTML/CSS 在页面底部保留一个 div 以改变页面高度
- java - 在运行时从另一个 JPanel 中的单独类文件添加自定义 JPanel
- json - 邮递员 POST 工作正常;Ruby POST 没有。如何调试差异?
- php - 如何在laravel中更新数组值
- c++ - OpenCV如何为imencode编码原始图像信息?
- javascript - 如果我不在 .then() 函数中传递参数会发生什么,它将返回什么