CSS:两个 50% 流体列不考虑最小宽度

2023-11-24

我正在尝试使用this用两个 50% 列宽代替的布局。但似乎当右列达到其“最小宽度”时,它会进入左列下方。有没有办法使用“垫片”技术来设置包装器的最小宽度,以便两列都停止调整大小。因此,消除了右列发现自己位于左列下方的问题。

我的页面如下。

<style type="text/css">

#left {
    float: left;
    width: 50%;
}

.minwidth {
    width: 500px;
    height: 0;
    line-height: 0;
}

</style>

<div id="wrapper">
    <div id="left">
        left
    </div>
    <div id="right">
        right
    </div>
    <div class="minwidth">&nbsp;</div>
</div>

问题是左列将停止调整大小,但右列将位于左列下方并继续调整大小。基本上,我想要的效果是一旦包装器宽度变低,左列和右列也停止调整大小。将垫片放入左右列中也不起作用。

是否有可能有另一种方法来获取两个 50% 宽度的列并使用垫片来正确设置最小宽度?

谢谢。

编辑: minwidth 类中的空格实际上是 &nbsp 但它已转换。 ;)


我能够根据 CSS Play 的 Stu Nicholls 的技术提出一个“不需要 HTML 表”的解决方案,我个人很喜欢它,因为它不仅可以在 IE6+ 和 FF2+ 中工作,而且它也是有效的 CSS,不需要需要任何黑客攻击。关于为什么基于 CSS 的布局比 HTML 表格更可取的论点,请参阅下文。

首先,我建议在使用 CSS 设计新页面时使用符合标准浏览器模式。有关怪异模式和标准兼容模式的说明,请查看本文来自我最喜欢的 CSS 资源网站之一。您所要做的就是在页面顶部添加特定的 DOCTYPE 元素。然后,CSS 将被迫以符合标准的模式呈现,从而减少错误和浏览器特性。如果您无法切换到标准兼容模式,则可以在怪异模式下为浏览器提供最小宽度解决方案,也可以在 CSS Play 上找到。

其次,您必须在现有标记周围添加一个额外的包装器。该包装器用于为支持 min-width 的浏览器(非 IE)设置 min-width。然后,您可以使用 * html 技巧来专门针对 IE 6,并将 Stu Nicholl 的技术应用于内部包装器。这里详细介绍了该技术,所使用的具体示例是“#2 Forstandards 兼容模式 IE”:

http://www.cssplay.co.uk/boxes/minwidth.html

最终结果相当简单。它使用以下命令创建 2 个 50% 列2 列 ALA 风格原始问题中提到的技术,具有整体最小宽度(在本例中为 500px),其中列停止调整大小,并且右列不会低于左列。我希望这有帮助!

Edit:同样的技术可用于将跨浏览器兼容的最小宽度应用于任何内容。例如,每个列不需要为 50%,并且可以使用任意数量的列。http://www.glish.com/css/是基于 CSS 的页面布局的一个很好的资源,当与这种最小宽度技术结合时,可以使用最少的、有效的 CSS 创建许多漂亮的布局。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <style type="text/css">

        /* For browsers that understand min-width */
        .width {
            width: 100%;
            min-width: 500px;
        }

        /* IE6 Only */
        * html .minwidth {
            border-left: 500px solid white;
            position: relative;
            float: left;
        }

        /* IE6 Only */
        * html .wrapper {
            margin-left: -500px;
            position: relative;
            float: left;
        }

        .left {
            float: left;
            width: 50%;
        }

        .right {
            float: left;
        }

    </style>
</head>
<body>

<div class="width">
    <div class="minwidth">
        <div class="wrapper">
            <div class="left">
                Left
            </div>
            <div class="right">
                Right
            </div>
        </div>
    </div>
</div>

</body>
</html>

现在,我建立 Stack Overflow 帐户的动机是能够响应下面的建议:“如果您想要两列,请使用表格,而不是试图强制 Div 表现得像表格”。由于我太新了,无法发表评论或投票反对,因此我正在扩大这一讨论。

Really?

有人问有关基于 CSS 的布局的问题,而您却告诉他们使用 HTML 表格来回答?

首先我要说的是,我不认为 HTML 表格是完全没有必要的。事实上,任何时候我需要显示表格数据,即关系数据,我使用 HTML 表格。 CSS 表格显示属性尚未完全支持(IE8 中即将推出!)并使用单层HTML 表格是一个有效的解决方案。查看任何 Google 网页的标记,您就会发现他们会同意。

作为一个花费大量时间编写跨浏览器兼容的基于 CSS 的布局的人,而使用表格可以在 10 分钟内完成,我同意有一个更简单的解决方案来解决这个问题。然而,仅仅因为您可以使用炸药来翻新您的厨房,并不意味着您应该这样做。下面的文章详细解释了为什么基于 CSS 的布局更可取。

http://www.chromaticsites.com/web-design-blog/2008-04-03/13-reasons-why-css-is-superior-to-tables-in-website-design/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS:两个 50% 流体列不考虑最小宽度 的相关文章