当前位置: 首页 > 面试题库 >

如何对齐复选框及其标签始终跨浏览器

段超
2023-03-14
问题内容

这是困扰我的CSS小问题之一。Stack Overflow周围的人们如何垂直对齐 checkboxes 以及他们
labels
始终如一的 跨浏览器 ?每当我在Safari中正确对齐它们(通常vertical-align: baseline在上使用input)时,它们在Firefox和IE中就完全关闭了。在Firefox中进行修复,不可避免地将Safari和IE弄乱了。每次编写表单时,我都会在此上浪费时间。

这是我使用的标准代码:

<form>

    <div>

        <label><input type="checkbox" /> Label text</label>

    </div>

</form>

我通常使用Eric Meyer的重置,因此表单元素相对而言是覆盖不大的。期待您提供的任何提示或技巧!


问题答案:

经过一个多小时的调整,测试和尝试不同样式的标记后,我认为我可能有一个不错的解决方案。该特定项目的要求是:

  1. 输入必须在自己的行上。
  2. 复选框输入需要在所有浏览器中都与标签文本垂直对齐(如果不一致)。
  3. 如果标签文本自动换行,则需要缩进(因此不要在复选框下方自动换行)。

在进行任何解释之前,我只为您提供代码:

label {

  display: block;

  padding-left: 15px;

  text-indent: -15px;

}

input {

  width: 13px;

  height: 13px;

  padding: 0;

  margin:0;

  vertical-align: bottom;

  position: relative;

  top: -1px;

  *overflow: hidden;

}


<form>

  <div>

    <label><input type="checkbox" /> Label text</label>

  </div>

</form>

代码假定您使用的是类似Eric
Meyer的重置,该重置不会覆盖表单输入的边距和填充(因此会将边距和填充重置放置在输入CSS中)。显然,在实际环境中,您可能会嵌套/覆盖东西以支持其他输入元素,但我想让事情保持简单。

注意事项:

  • *overflow声明是一个内联IE hack(星级属性hack)。IE 6和7都会注意到它,但是Safari和Firefox将适当地忽略它。我认为这可能是有效的CSS,但条件注释会更好。只是为了简单起见使用它。
  • 据我所知,在vertical-align所有浏览器中唯一一致的语句是vertical-align: bottom。在Safari,Firefox和IE中,设置此值然后相对向上定位几乎相同,只有一个或两个像素差异。
  • 使用对齐的主要问题是IE在输入元素周围粘了很多神秘的空间。它不是填充或边距,而是该死的持久性。在复选框上设置宽度和高度,然后overflow: hidden由于某种原因而切断了多余的空间,并使IE的定位与Safari和Firefox非常相似。
  • 毫无疑问,根据文本的大小,您需要调整相对位置,宽度,高度等,以使外观看起来正确。

希望这对别人有帮助!除了今天早上正在研究的项目之外,我没有在其他项目上尝试过这种特定技术,因此,如果您发现一些更一致的方法,请务必进行尝试。



 类似资料:
  • 问题内容: 有时候,这种AJAX会触发,有时却不会,我来解释一下。 habit.js 仅在加载显示页面并刷新它之后才会触发,以便终端看起来像这样: 仅加载显示页面一次将无法完成工作,因为选中标记不会触发AJAX(请注意上面的所有GET和下面的GET缺少,我认为这与涡轮链接有关)。 该 显示页面 称为AJAX 这就是AJAX触发的 源代码days_missed_controller.rb 。 这是

  • 问题内容: 如何关闭当前的浏览器标签?以下无效。 要么 要么 问题答案: 试试这个: 来源:https : //vaadin.com/forum/#!/ thread/ 235330

  • 问题内容: 这应该工作: 它可以在Firefox中运行,但不能在Chrome中运行(可能未在IE中运行,未经测试)。 一个更有趣的示例: 是将选项元素与DOM分离的唯一选择吗?我需要稍后再显示给他们,所以这不会很有效。 问题答案: 不幸的是,您不能在所有浏览器中隐藏元素。 在过去,当我需要这样做时,我就设置了它们的属性,就像这样… 然后,我使用了这段CSS,在浏览器中支持隐藏的位置…

  • 问题内容: Webkit的过渡结束事件称为webkitTransitionEnd,Firefox为transitionEnd,歌剧为oTransitionEnd。用纯JS处理所有这些的好方法是什么?我应该浏览器嗅探吗?还是分别实施?我还没有发生过其他事情? 即: 要么 问题答案: Modernizr中使用了一项技术,对它进行了改进: 然后,只要需要过渡结束事件,就可以调用此函数:

  • 问题内容: 将单选按钮/复选框与文本正确对齐的最干净方法是什么?到目前为止,我一直使用的唯一可靠的解决方案是基于表的: 有些人可能会对此表示不满。我刚刚花了一些时间(再次)研究无表解决方案,但失败了。我尝试了浮动,绝对/相对定位和类似方法的各种组合。它们不仅主要默默地依赖于单选按钮/复选框的估计高度,而且在不同的浏览器中的行为也有所不同。理想情况下,我想找到一种不假设大小或浏览器特殊问题的解决方案

  • 关于此自定义CSS单选按钮(下面的代码片段或@https://codepen.io/Zaku/pen/xrKMgb)... 为什么Safari显示模糊的CSS元素? 这在Chrome完美工作,但不是Safari... 这是一件大事,因为大多数iPhone 你知道为什么会发生这种情况以及如何解决吗?