【问题标题】:Two-column layout with divs of the same class... and a space in between具有相同类的 div 的两列布局......之间有一个空格
【发布时间】:2012-10-28 02:03:36
【问题描述】:

有两个<div> 元素,每个元素都具有相同的类。很容易将它们做成两列布局:http://jsfiddle.net/Baumr/nbzHA/3/

这就是问题所在:

如何在它们之间添加空格?

创建两个单独的类并以任何一种方式浮动它们会很容易。 或者添加一个类并使用边距:http://jsfiddle.net/Baumr/sZehH/1/

但是如果他们在同一个班级/没有班级呢?

【问题讨论】:

    标签: css html css-float multiple-columns


    【解决方案1】:

    在第一个 div 上添加 class 是最好的浏览器兼容性解决方案,然后为此类添加您的样式。

    我在您的小提琴中注意到了一些事情,这使得根据您的 cmets 到 niels 获得解决方案变得复杂。您的小提琴中有一个 section 标签,它将在支持 html5 的浏览器中呈现。但是你想同时兼容 IE7 和 IE6 吗?

    IE7有多种方式,以下是其中一种:

    .section div+div {
        margin-left: 10%;
    }
    

    此解决方案使用Adjacent sibling selectors,它在第二个 div 上添加了 margin-left。而且,为了不支持section的浏览器的好处,我使用带有class=section的div而不是section标签。

    对于IE6,在两个div 之一上添加一个类是我知道的唯一解决方案。

    【讨论】:

    • 谢谢王牌!你是对的。但是有一些 JS 解决方案可以使新的 HTML5 标签在旧浏览器中兼容。但据我了解,关闭 JS 后这行不通?
    • 即使有 JS 解决方案可以使新的 HTML5 标签与旧版浏览器兼容,它也不能保证它会按预期工作。如果您有一个替代标签来支持旧版浏览器,那就更好了。是的,如果关闭JS,JS解决方案将不起作用。
    • 哦,有趣。我认为转换 HTML5 标签的 JS 解决方案非常可靠。存在什么样的问题?那么,或者,您的意思是使用<div class="section"> 而不是<section> 等等?但是从这个意义上说,这不再是 HTML5 :(
    • 这取决于您的要求,如果JS解决方案可以正确呈现<section>然后继续使用它。我对 JS 解决方案不太熟悉,我假设一些 HTML5 标签,如<video>, <audio>, <canvas> 可能有一些问题。
    【解决方案2】:

    您可以使用伪类,例如 :nth-child(n):first-child

    section div:nth-child(1) { margin-right: 10%; }

    【讨论】:

    • 感谢您的回复。是的,但 IE 不支持 :(
    • 您是否也尝试过:first-child?根据quirksmode.org,它几乎在 IE8 中工作(无论这意味着什么)......
    • 谢谢 Niels,我也打算与 IE6 和 IE7 兼容(至少像这样简单有趣的东西)。我正在尝试想出一个position: 解决方案...
    • 我没有想法,我认为你必须添加一个单独的类:(
    • 感谢您的帮助!也这么想:(但我会等待其他一些回复。如果没有人回复,我会将你的帖子标记为解决方案:)
    猜你喜欢
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多