【问题标题】:Label/Inputs positioned differently in Firefox than Chrome/Safari标签/输入在 Firefox 中的位置与 Chrome/Safari 不同
【发布时间】:2013-04-30 19:23:48
【问题描述】:

我正在尝试构建一个“疯狂的库”样式模板,但我遇到了一个问题,即包装在标签中的相对定位的输入在 Firefox 中意外显示,但在 Safari/Chrome 中却按预期显示。我已尝试研究可能导致此问题的原因,但我似乎无法弄清楚导致此不兼容的两个浏览器之间的区别是什么。

这是fiddle,这样您就可以更好地理解我所描述的内容。有关如何纠正此问题的任何线索?也许我需要重写我的 HTML?理想情况下,这只是一个 CSS 问题,因为此 HTML 是动态呈现的,如果可能,我宁愿不必更改后端。

这是来自 Fiddle 的 HTML/CSS:

HTML

<div class="feature" id="madlib">
  <h1>Test Test</h1>
  <div class="padded rounded border">
    <p>Dear <label>mom <input name="madlib_mom" type="text" /></label>,</p>  
    <p>Lorem ipsum <label>adjective <input name="madlib_adjective" type="text" /></label>   lorem ipsum lorem ipsum lorem ipsum <label>thank you <input name="madlib_thank_you" type="text" /></label> lorem ipsum lorem ipsum lorem ipsum lorem ipsum.</p>
    <p>Lorem ipsum lorem ipsum <label>noun 1 <input name="madlib_noun_1" type="text"
    </label> and <label>noun 2 <input name="madlib_noun_2" type="text" /></label> lorem ipsum lorem ipsummmm lorem, lorem ipsum lorem ipsum lorem ipsum <label>place <input name="madlib_place" type="text" /></label>, lorem ipsum <label>favorite food <input name="madlib_favorite_food" type="text" /></label> lorem ipsum lorem <label>good advice <input name="madlib_good_advice" type="text" /></label>.</p>
  </div>
</div>

CSS

input[type="text"] {
  display:block;  
  position:relative;  
  top:-30px;  
  border-bottom:1px solid pink;
  border-left:0;
  border-right:0;
  border-top:0;
}

label {
  display: inline-block;  
  position:relative;
  top:30px;
  margin-bottom:8px;
  padding:2px;
  text-align: center; 
  font-size:10px;
}

提前感谢您的帮助!

编辑:更明确地说,标签应该充当“疯狂的库”标签,以便它们出现在文本输入下方。在所有浏览器中,它们大致位于正确的位置,但似乎被下推的距离几乎是 Chrome 中的两倍,这导致它们与随后的文本行重叠。

【问题讨论】:

  • 标签的位置在哪里?你要把它们放在哪里?
  • 更新了更多信息。
  • 它们在 Firefox 和 Chrome 中看起来一样,位置相同,但是您可以考虑在 chrome 中将黄色轮廓变为红色,将此行添加到 css outline: none;
  • 我在我的 Chrome 版本中没有看到黄色轮廓,而且我都是最新的。有趣...

标签: html css google-chrome firefox cross-browser


【解决方案1】:

这是基于浏览器如何决定label inline-block 的基线位置之间的差异。为避免此问题,请为标签使用垂直对齐而不是默认 baseline。例如,按照这个 jsfiddle 使用 vertical-align:tophttp://jsfiddle.net/4GhLA/2/

(这里很难判断 Chrome 或 Firefox 是否符合 CSS 规范。这取决于 input 元素的 display:block 是否在 @987654327 的内联块内建立了一个行框@元素与否。)

【讨论】:

  • 奇怪!我已经阅读了相关内容,但无法重现正常工作的解决方案。很高兴看到事情就这么简单。谢谢!
  • IE9 显示了与 FF 类似的问题(当然略有不同)。这也解决了它。
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
相关资源
最近更新 更多