html - 用户点击后如何使 div 和输入标签保持选中状态
问题描述
我有我想设计的测验脚本,所以当用户点击 div/input 标签时,它将保持选中状态并使用另一种背景颜色。
我所做的只是当我单击 div 时,我可以看到 div 背景已更改,
而且,当我单击输入时,我可以看到文本背景颜色正在更改并保持选中状态。
但正如我所说,我希望它保持选中状态。
我还有一个问题,当我点击 div 时,输入不选择。
只有当我点击输入 - 只有这样我才能看到它被选中。
这是代码:
.quest {
padding: 5px;
background-color: #f9f9f9;
cursor: pointer;
margin-bottom: 7px;
}
.quest:hover {
padding: 5px;
background-color: #ddffff;
cursor: pointer;
margin-bottom: 7px;
}
.quest:active {
padding: 5px;
background-color: #fef9a5;
cursor: pointer;
margin-bottom: 7px;
}
.rd {
cursor: pointer;
}
.rd:checked+label {
background-color: #fef9a5;
cursor: pointer;
}
<form>
<div class="quest">
<input type="radio" name="test" class="rd" />
<label><span class="rd">test</span></label>
</div>
</form>
解决方案
嗯,我认为你必须为输入添加一个id,然后为类似于输入的id名称的标签添加属性。然后为标签设置样式以占用其包装器的空间。
如果这回答了您的问题,请检查下面的代码:
.quest {
padding: 5px;
background-color: #f9f9f9;
cursor: pointer;
margin-bottom: 7px;
position: relative;
overflow: hidden;
}
.quest:hover {
padding: 5px;
background-color: #ddffff;
cursor: pointer;
margin-bottom: 7px;
}
.quest:active {
padding: 5px;
background-color: #fef9a5;
cursor: pointer;
margin-bottom: 7px;
}
.rd {
cursor: pointer;
display: inline-block;
position: relative;
z-index: 1;
}
label {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
padding: 3px 30px 0;
}
.rd:checked + label {
background-color: #fef9a5;
cursor: pointer;
}
<form>
<div class="quest">
<input type="radio" name="test" class="rd" id="test"/>
<label for="test"><span class="rd">test</span></label>
</div>
</form>
推荐阅读
- java - Eclipse 似乎认为 CSS 文件是 Java 源代码
- java - 意外的 String.join() 行为
- reactjs - React-Table 未在启用服务器端选项的情况下加载 API 数据
- excel - 表中最后一行与未定义空格数之间的差异
- javascript - THREE.js 对单个 > 500k 多边形(面)对象的光线投射非常慢,与地球的线相交
- python - 如何在python网络浏览器中突出显示文本,如查找文本
- android - Kotlin 协程 - 如果一段时间后第一个任务没有完成,则启动另一个任务
- reactjs - 从多个后端加载翻译
- php - PHP SQL On update 从同名的其他行中删除以前的列数据
- vbscript - VBS 将文本复制到剪贴板,不带引号