当前位置:  开发笔记 > 前端 > 正文

无法在Safari和Chrome(WebKit)中向`<legend>`元素添加`margin`

如何解决《无法在Safari和Chrome(WebKit)中向`<legend>`元素添加`margin`》经验,为你挑选了3个好方法。

编辑:截至2012-06-11这个bug已经被修复了!https://bugs.webkit.org/show_bug.cgi?id=35981#c1

我有一些非常简单的标记:

Member Tools

我试图在legend元素的底部添加一个小的边距,这在Firefox 2和3以及IE 5-8中工作得很好,但是在Safari和Chrome中添加margin无效.据我所知legend,只是另一个块级元素,Webkit应该没有问题添加margin到它,或者我不正确?



1> Graham Conze..:

经过一些研究后,我找到了解决这个问题的方法,我认为这是解决问题的最简单的"hacky"方法.使用讨厌的webkit瞄准黑客真的不是一个选项,但我发现该-webkit-margin-collapse: separate属性似乎可以阻止元素的边缘从崩溃中解释出来.

因此,在我的场景中,以下通过在字段集中的第一个标签元素(图例右下方)的顶部添加边距来修复此问题:

fieldset > label:first-of-type
{
-webkit-margin-top-collapse: separate;
margin-top: 3px;
}

不完美,但总比没有好,其他浏览器应该正常崩溃边缘.

如果有人好奇,有人确实提交了关于这个#35981的错误报告

https://bugs.webkit.org/show_bug.cgi?id=35981

感谢大家的投入.



2> Pointy..:

好吧,真的不是 "只是另一个块级元素".也许它应该是,但事实是它本身具有布局特性,因为它应该做一些非常奇怪的事情,因为元素会去.在IE和Firefox之间,边距和填充对元素的影响有很大不同.

您是否想要

从框顶部分离内容?如果是这样,我会尝试使用padding-topfieldset本身.



3> Wex..:

很抱歉发布这样一个旧线程的答案,但实际上这是一个非常简单的解决方案,不需要任何黑客攻击.您需要做的就是在fieldset元素的顶部添加填充.

fieldset { padding: 10px 0 0; }

这可能会让我想说的更清楚:http://jsfiddle.net/8fyvY/


这个填充在IE8和7中的工作方式不同.它将填充放在图例上方.
理论上是个好主意,但是如果你在`
`中有多个``标签,那么你仍然无法获得理想的结果.
@Nic:[HTML 4 DTD](http://www.w3.org/TR/html4/sgml/dtd.html)和[HTML 5规范](http://www.w3.org/TR/html5 /forms.html#the-legend-element)甚至更严格:``可以作为`
`的第一个孩子存在,而这就是全部(尽管`
`状态的HTML5描述"组的名称由第一个传说元素给出,该元素是fieldset元素的子元素,如果有的话",可以理解为后来的``被忽略).
推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有