这是困扰我的CSS小问题之一。

Stack Overflow周围的人如何在浏览器中始终垂直对齐复选框及其标签?

每当我在Safari中正确对齐它们(通常在输入上使用垂直对齐:基线),它们在Firefox和IE中就完全关闭了。

在Firefox中修复它,Safari和IE不可避免地被搞砸了。我每次编写表单时都在这上面浪费时间。

以下是我使用的标准代码:

<表单><div><label><input-type=“checkbox”/>标签文本</label></div></form>

我通常使用埃里克·迈耶的重置,所以表单元素相对来说没有覆盖。期待您提供的任何提示或技巧!


当前回答

最简单的解决方案是

输入{垂直对齐:文本顶部;}

其他回答

<fieldset class="checks">
    <legend>checks for whatevers</legend>
    <input type="" id="x" />
    <label for="x">Label</label>
    <input type="" id="y" />
    <label for="y">Label</label>
    <input type="" id="z" />
    <label for="z">Label</label>
</fieldset>

无论如何,您应该将分组在一起的表单控件包装在它们自己的字段集中,在这里,它播放包装。设置输入/标签显示:块,输入浮动左,标签浮动右,设置宽度,控制左右边距的间距,相应地对齐标签文本。

so

fieldset.checks {
    width:200px
}
.checks input, .checks label {
    display:block;
}
.checks input {
    float:right;
    width:10px;
    margin-right:5px
}
.checks label {
    float:left;
    width:180px;
    margin-left:5px;
    text-align:left;
    text-indent:5px
}

对于跨浏览器/媒体解决方案,您可能需要同时设置边框、轮廓和线条高度。

位置:相对;在IE中的z索引和jQuery的slideUp/slideDown等动画存在一些问题。

CSS:

input[type=checkbox], input[type=radio] {
    vertical-align: baseline;
    position: relative;
    top: 3px;
    margin: 0 3px 0 0;
    padding: 0px;
}
input.ie7[type=checkbox], input.ie7[type=radio] {
    vertical-align: middle;
    position: static;
    margin-bottom: -2px;
    height: 13px;
    width: 13px;
}

jQuery:

$(document).ready(function () {
    if ($.browser.msie && $.browser.version <= 7) {
        $('input[type=checkbox]').addClass('ie7');
        $('input[type=radio]').addClass('ie7');
    }
});

样式可能需要根据<label>中使用的字体大小进行调整

PS(秒):我使用ie7js使css在IE6中工作。

一个看起来很好用的简单方法是使用垂直对齐调整复选框的垂直位置。它仍然会因浏览器而异,但解决方案并不复杂。

input {
    vertical-align: -2px;
}

参考

也许有些人也犯了和我一样的错误?这是。。。我为输入框设置了一个宽度,因为它们大多是“文本”类型,但后来忘记了覆盖复选框的宽度,所以我的复选框试图占据大量多余的宽度,因此很难在旁边对齐标签。

.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的最新版本中,提供了可点击的标签和正确的对齐方式

硬编码复选框的高度和宽度,删除其填充,并使其高度加上垂直边距等于标签的行高度。如果标签文本是内联的,请浮动复选框。Firefox、Chrome和IE7+都以相同的方式呈现以下示例:http://www.kornea.com/css-checkbox-align