代码之家  ›  专栏  ›  技术社区  ›  Milan BabuÅ¡kov

firefox 2和seamonkey的css clearfix问题

  •  0
  • Milan BabuÅ¡kov  · 技术社区  · 15 年前

    我正在使用 yaml 布局和知名度 clearfix css 以确保带浮动的容器得到扩展。

    在火狐3、IE6、IE7、IE8、Opera 9和Google Chrome上一切都很好,但我对火狐1、火狐2和SeaMonkey有异议。问题是ClearFix容器扩展得太多,如您在网站上看到的:

    http://www.slagalica.tv/game/mojbroj

    这是的截图 Firefox 2 Firefox 3 致使。

    更新: Screenshots on BrowserShots.org

    不幸的是,统计数据显示超过10%的访问者使用的是FF2,所以我不能简单地忽略这个问题。我尝试删除或调整ClearFix CSS的某些部分,但无论我做什么,TimeDiv(绿色)与页面的其余部分之间都有很大的空白。

    有人知道如何解决这个问题吗?

    更新2:我终于放弃了,贴上了表标签,在几分钟内解决了这个问题。所以,不要试图研究HTML源代码——问题已经不明显了。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Natalie Downe    15 年前

    因此,如果你看一看最初的文章,这篇文章促进了对所有内容的明确定位,你会注意到作者建议,由于该修复已经过时,读者应该看一篇关于SitePoint的文章。这篇SitePoint文章指出了一个我已经使用了很长时间的方法。

    很简单,如果您给了父溢出:隐藏并确保它在IE中有“布局”,那么这将清除内部的浮动。

    
    <div id="wrapper">
         <div id="leftcol">
              Text
         </div>
         <div id="rightcol">
             text
         </div>
    </div>
    

    然后是相应的CSS:

    
    #wrapper{
      overflow:hidden;
      width: 100%;
    }
    #leftcol{
      float:left;
      width: 50%;
    }
    #rightcol{
      float:right;
      width: 50%;
    }
    

    在上面的示例中,我使用了 width: 100% 为IE提供布局,但也可以很容易地使用 zoom: 1 height: 1% 如果你愿意的话。

    尝试用这种技术替换ClearFix,您的问题应该得到解决。

    记住这项技术,注意你的内部宽度,否则你可能会被剪切,这是很重要的重写包装在你的打印样式表作为溢出:可见,否则它将只打印第一页。但多年来我一直在生产中成功地使用这种方法,我从未遇到过任何无法解决的问题。

        2
  •  0
  •   SpliFF    15 年前

    ClearFix只是懒惰或痴迷的纯粹主义者的黑客。在你需要的地方放置一个清理区(在你的区的底部),然后继续生活。

    <div>
       ... floated content ...
       <div style="clear:both"></div>
    </div>
    

    顺便说一句,声称这破坏了语义的纯粹主义者是不正确的。HTML规范没有定义 <div> . 最坏的情况下,它混合了风格/结构,但当站点在未来重新设计时,它几乎不需要负担,而且纯CSS解决方案变得实用。

        3
  •  0
  •   Chris Sobolewski    15 年前

    我用浏览器截图来观察它,我真的很努力地想弄清楚它在ff2、3和chrome中的区别。我没看见。

    不过,看看你的页面,为什么不沿着这些线做点什么呢?

     <div id='wrapper'>
          <div id="leftcol">
               Text
          </div>
          <div id="rightcol">
              text
          </div>
          <div id="foot">
               text
          </div>
     </div>
    

    CSS:

     #wrapper{
          min-height:1%; //to fix IE6 floats escaping ancestor div
     }
     #leftcol{
          float:left;
     }
     #rightcol{
         float:left;
     }
     #foot{
     clear:both;
     }
    
        4
  •  0
  •   Milan BabuÅ¡kov    14 年前

    似乎这是一个bug,并在较新版本中修复。但是,为了保持兼容性,必须使用表而不是CSS。