这是困扰我的CSS小问题之一。
Stack Overflow周围的人如何在浏览器中始终垂直对齐复选框及其标签?
每当我在Safari中正确对齐它们(通常在输入上使用垂直对齐:基线),它们在Firefox和IE中就完全关闭了。
在Firefox中修复它,Safari和IE不可避免地被搞砸了。我每次编写表单时都在这上面浪费时间。
以下是我使用的标准代码:
<表单><div><label><input-type=“checkbox”/>标签文本</label></div></form>
我通常使用埃里克·迈耶的重置,所以表单元素相对来说没有覆盖。期待您提供的任何提示或技巧!
也许有些人也犯了和我一样的错误?这是。。。我为输入框设置了一个宽度,因为它们大多是“文本”类型,但后来忘记了覆盖复选框的宽度,所以我的复选框试图占据大量多余的宽度,因此很难在旁边对齐标签。
.checkboxlabel {
width: 100%;
vertical-align: middle;
}
.checkbox {
width: 20px !important;
}
<label for='acheckbox' class='checkboxlabel'>
<input name="acheckbox" id='acheckbox' type="checkbox" class='checkbox'>Contact me</label>
早在IE6(使用类选择器)以及Firefox、Safari和Chrome的最新版本中,提供了可点击的标签和正确的对齐方式
以下内容为浏览器(甚至IE9)提供了完美的像素一致性:
这种方法非常明智,显而易见:
创建输入和标签。将它们显示为块,以便您可以随意浮动它们。将高度和线高度设置为相同的值,以确保它们居中并垂直对齐。对于em测量,要计算元素的高度,浏览器必须知道这些元素的字体高度,并且它本身不能在em测量中设置。
这导致了一个全球适用的通用规则:
input, label {display:block;float:left;height:1em;line-height:1em;}
字体大小可根据表单、字段集或元素进行调整。
#myform input, #myform label {font-size:20px;}
在Mac、Windows、Iphone和Android上的最新Chrome、Safari和Firefox中进行了测试。以及IE9。
此方法可能适用于不高于一行文本的所有输入类型。根据需要应用类型规则。
我找到了一种在几乎所有浏览器中都能得到相同结果的方法。至少是最新的浏览器。它适用于Firefox、Chrome、Safari和Opera。在IE中,它看起来就像没有对输入或标签应用规则一样(即,它的标签仍然比输入低几个像素),所以我认为这是可以理解的。
HTML
<label class="boxfix"><input type="radio">Label</label>
CSS
.boxfix {
vertical-align: bottom;
}
.boxfix input {
margin: 0;
vertical-align: bottom;
position: relative;
top: 1.999px; /* the inputs are slightly more centered in IE at 1px (they don't interpret the .999 here), and Opera will round it to 2px with three decimals */
}