【发布时间】:2013-04-22 11:17:35
【问题描述】:
我有一个复选框,我通过隐藏输入和定位嵌套在标签中的跨度来设置样式。见http://jsfiddle.net/rz6np/
HTML:
<input id="confirm" type="checkbox" name="confirm" value="1" required="required" />
<label for="confirm"><span>+</span>Confirm</label>
CSS:
input[type="checkbox"] {
display: none;
}
form input[type="checkbox"] + label span {
display: inline-block;
width: 16px;
height: 16px;
margin: 1px 10px 5px 0;
vertical-align: middle;
cursor: pointer;
border: 1px solid grey;
color: #fff;
font-size: 15px;
padding: 2px 2px;
}
input[type="checkbox"]:checked + label span {
color: #000;
}
由于输入被隐藏,这意味着 html5 required 弹出窗口不显示。有没有办法强制显示?
【问题讨论】:
-
没有。如果用户看不到它,告诉用户该字段无效有什么好处?弹出窗口是输入元素本身的一部分。
-
@cimmanon 我已经隐藏了输入,所以我可以设置复选框的样式
-
所以不要设计它?浏览器不知道您出于“样式”目的而隐藏它,它只知道用户无法访问它,因为它是隐藏的。
-
@cimmanon 如果这是我的项目,我不会,但这是为客户的设计:\
-
您可以“隐藏”复选框而不实际隐藏它。例如,jquery-ui 通过
width: 1; height: 1; clip: rect(0 0 0 0)之类的复选框来执行此操作。但是,我不知道这会如何影响弹出窗口。