css - 高度相对于宽度的多个垂直 div

标签 css html

我的部分 css 布局设置了相对于宽度的 div 高度,以便所有屏幕尺寸的宽高比都相同。这样我就不会专门​​将 div 的高度设置为 px 值 - 高度只是宽度的纵横比。如果您以前没有遇到过这种技术,here is a good explanation .

到我的具体问题...

考虑到这一点,我创建了以下简单的 div,它的宽度是高度的两倍:(to see it in action please see this fiddle)

<html>
    <head>
       <style type="text/css">
.container
{
    position:relative;
    width:50%;/*half the width of the whole page*/
    margin:auto;/*center the whole thing*/
}
.relative_container
{
    background-color:blue;
    position:absolute;
    width:100%;
    top:0;
    left:0;
}
.set_height
{
    width:100%;
    height:100%;
    margin-top:50%;/*aspect ratio 2:1*/
}
       </style>
    </head>
    <body>
        <div class='container'>
            <div class='relative_container'>
                <div class='set_height'></div>
            </div>
        </div>
    </body>
</html>

到目前为止一切都很好。但是我想在第一个下添加另一个相同的 div。正如您在 this fiddle 中看到的那样,我无法让它们以任何方式显示,只能相互叠加。毫无疑问,答案在于清除 div as demonstrated here但我想不通。

最佳答案

您的 relative_container 类是绝对定位的,因此它将两个 div 放置在 top:0, left:0 处,宽度和高度相同(因此它们彼此重叠)。这对您正在做的事情没有意义。

如果您将定位更改为相对,并将 float: left 添加到您的奇怪命名的 relative_container,您将获得所需的行为,因为它们将“ float ”到父 div 中最左边的位置。

此外,您的“清晰”div 没有做任何事情。 clear 属性告诉其他 div 不要 float 到给定 div 的右/左。如果您的 div 的宽度为 100%(即它填满了父级),那么它旁边无论如何都不能 float 。

示例 1:http://jsfiddle.net/NKRPe/13/

编辑: This second example在不使用虚拟 div 的情况下完成相同的任务。请注意,可以使用 padding-toppadding-bottom

关于css - 高度相对于宽度的多个垂直 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14671410/

相关文章:

css - 如何在CSS中具有任意选择器?

jquery - 当我在 JqueryMobile 中单击时如何在 ListView 上添加颜色

javascript - 我的随机报价生成器按钮不显示报价。 (不适用于 CodePen 或 Sublime,仅适用于 Stack Overflow)

Javascript 根本无法与 HTML 页面一起使用

CSSBuilder 可以在没有 Griffon 的情况下使用吗?

javascript - 单击按钮后更改模式的内容

jquery - CSS折 Angular 效果透明背景

javascript - 前置两个div,counter click的计数相同

html - 响应式设计无法使用 chrome 开发工具,但浏览器可以

javascript - jQuery ajax - 没有 jQuery css