我们在做表单的时候经常会使用到这样的结构:

<fieldset>
    <legend>哪些浏览器legend标签设定的宽度有效</legend>
    <input type="checkbox" value="ie6" name="width" id="ie6" checked="checked" /><label for="ie6">IE6</label>
    <input type="checkbox" value="ie7" name="width" id="ie7"checked="checked" /><label for="firefox">IE7</label>
    <input type="checkbox" value="firefox2" name="width" id="firefox2" /><label for="firefox2">Firefox2</label>
    <input type="checkbox" value="firefox3" name="width" id="firefox3" /><label for="firefox3">Firefox3</label>
    <input type="checkbox" value="opera" name="width" id="opera" checked="checked" /><label for="opera">Opera9.0+</label>
    <input type="checkbox" value="safari" name="width" id="safari"checked="checked" /><label for="safari">Safari3.0+</label>
</fieldset> 

当我们使用 CSS 给 legend 标签设定固定宽度时:

legend {
    background:red;
    width:500px;
}

在 IE6、IE7、Opera9.0+、Safari3.0+ 都正能常显示,而在 Firefox2 和 Firefox3 中宽度却失效。

在这里我们不去深究为什么,只探讨解决的方法:

我们可以通过在 legend 标签内添加一个标签,并给标签设定所需要的宽度,此宽度的单位不可为百分比(%):

HTML 修改为:

<fieldset>
    <legend><span>哪些浏览器legend标签设定的宽度有效</span></legend>
    <input type="checkbox" value="ie6" name="width" id="ie6" checked="checked" /><label for="ie6">IE6</label>
    <input type="checkbox" value="ie7" name="width" id="ie7"checked="checked" /><label for="firefox">IE7</label>
    <input type="checkbox" value="firefox2" name="width" id="firefox2" /><label for="firefox2">Firefox2</label>
    <input type="checkbox" value="firefox3" name="width" id="firefox3" /><label for="firefox3">Firefox3</label>
    <input type="checkbox" value="opera" name="width" id="opera" checked="checked" /><label for="opera">Opera9.0+</label>
    <input type="checkbox" value="safari" name="width" id="safari"checked="checked" /><label for="safari">Safari3.0+</label>
</fieldset> 

CSS 修改为:

legend span {
    background:red;
    width:500px;
    display:block;
}

可参考:《how to set width of LEGEND tags in FF》

正淳 同时也提供了另外的一种解决方案,无需修改结构,仅修改样式即可:

legend {
    background:red;
    text-indent:-600px;
    padding-left:600px;

    /*IE下还原初始方式,只设定宽度*/
    *width:600px;
    *text-indent:0;
    *padding-left:0; 
}

题外话:CSS 的兼容其实并不难,多尝试多实践就可以解决,最重要的是自己要去动手,只有动手了才会有更多的收获,才会有更深的印象。



共有14 条评论

  1. 1. 头像 Robin

    下班了,留个脚印。

  2. 2. 头像 xin

    看了,学习,

  3. 3. 头像 smoke520

    飘过一个影子,记下了。

  4. 4. 头像 linxz

    正淳的方法是类似于margin-bottom padding-bottom设置等高的方式。这样虽然少了一个span标签,但感觉通过负值来设定不是十分好。

    个人还是比较喜欢加上span来实现。

  5. 5. 头像 arthuridea

    很好~ 怿飞总能带给我们一些有用的东西。。

  6. 6. 头像 hoorace

    不错,写的很有深度!学习了!不过FF在设置CSS的时候,好多地方都需要有
    display的属性的。

  7. 7. 头像 纯真

    又一个很少用到的标签

  8. 8. 头像 永远的冰点

    fieldset 以前都没用过的标签 ,学习了!

  9. 9. 头像 xss

    题外话:CSS 的兼容其实并不难,多尝试多实践就可以解决,最重要的是自己要去动手,只有动手了才会有更多的收获,才会有更深的印象。

    就是,但经常遇到这种人,一遇到问题就到论坛,群里面去问。很热心的回复了后,他会说:“解是解决了,但是什么原因造成的呢?”,囧,很佩服他的学习精神,但我只知道解决办法,原因不详。

  10. 10. 头像 Gary

    “CSS 的兼容其实并不难,多尝试多实践就可以解决,最重要的是自己要去动手,只有动手了才会有更多的收获,才会有更深的印象。”说得太对了

  11. 11. 头像 股吧

    这篇文章给我的印象非常深刻!

  12. 12. 头像 kinstrace

    很喜欢实例讲解,给人影响深刻,实用

  13. 13. 头像 gafish

    正淳的 htmlcssjs.com 这个域名竟然失效了

  14. 14. 头像 zoowar

    这就要问下浏览器生产商了

发表评论

(必填)

(必填,会为您保密)

评论仅支持“a、abbr、strong、em、blockquote、code”几个简单的标签