作者热门文章
- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
问:如何让复选框垂直居中?在这种特殊情况下,为什么在所有元素的边距和填充均为 0 的情况下,复选框边框和包含元素之间根本没有空白?
截图:
JSFiddle:http://jsfiddle.net/TZMF5/2/
HTML:
<div class="category-item">
<span class="input-container">
<input type="checkbox"/>
</span>
</div>
CSS:
.category-item {
display: table;
border: 1px solid #cccccc;
margin: 0;
padding: 0;
}
.category-item .input-container {
display: table-cell;
margin: 0;
padding: 0;
text-align: center;
}
.category-item .input-container input {
margin: 0;
padding: 0;
vertical-align: middle;
}
SO 上也有类似的问题。找不到适合这种情况的答案。谢谢!
最佳答案
与其他输入元素一样,复选框元素受制于供应商特定的 appearance
样式 - 您可以使用 appearance:none
或 -webkit-appearance 来覆盖它:无
等等。然而,这将完全停止呈现复选框。
因此,您必须在某种程度上“使用”默认样式并实现一些覆盖,对于您给出的示例中的垂直对齐,您必须将其“提高”1px,例如:
.category-item .input-container input {
margin:-1px 0 1px 0; /* <-- here */
padding: 0;
vertical-align: middle;
}
The -moz-appearance [sic] CSS property is used in Gecko (Firefox) to display an element using a platform-native styling based on the operating system's theme.
解决方法是完全“替换”复选框元素,同时仍保留其功能——这可以通过添加 label
元素然后应用一些漂亮的 CSS 来完成,例如,如下所示:
HTML
<div class="category-item">
<div class="input-container">
<input class='checkbox' id='checkbox' type="checkbox" />
<label for='checkbox' class='checkbox'></label>
</div>
</div>
CSS
.category-item {
display: table;
border: 1px solid #cccccc;
margin: 0;
padding: 0;
height:30px;
}
.category-item .input-container {
display: table-cell;
margin: 0;
padding: 0;
text-align: center;
vertical-align: middle;
height:30px;
}
label.checkbox {
position:relative;
vertical-align: middle;
border:1px solid black;
height:10px;
width:10px;
margin:0;
padding:0;
margin:-2px 0 2px 0;
line-height:1em;
padding:0;
overflow:hidden;
display:inline-block;
}
input.checkbox {
appearance:none;
height:0;
width:0;
overflow:hidden;
display:none;
margin:0;
padding:0;
-webkit-appearance:none;
}
input.checkbox:checked +label.checkbox:before {
content:'\2713';
position:absolute;
top:-3px;
font-size:10px;
left:2px;
}
关于html - 如何在表格单元格中垂直居中复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23805018/
我是一名优秀的程序员,十分优秀!