首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在页面约束中保持浮动的div

在页面约束中保持浮动的div
EN

Stack Overflow用户
提问于 2013-11-11 12:46:22
回答 2查看 500关注 0票数 0

我不确定没有javascript是否能做到这一点,但我希望它有一个解决方案。考虑一下这个小提琴:http://jsfiddle.net/PPeYH/

代码语言:javascript
复制
* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
.content {
    border: 1px solid;
    min-height: 3em;
}
.container {
    max-width: 600px;
    margin: 0 auto;
    overflow: hidden;
    clear: both;
}
#placeholder-body {
    position: relative;
    border: 0;
}
.split-tile {
    float: left;
}
.split-left {
    width: 60%;
}
.split-left .content {
    margin-left: auto;
    margin-right: 0;
    max-width: 360px;
}
.split-right {
    width: 40%;
}
.split-right .content {
    margin-left: 0;
    margin-right: auto;
    max-width: 240px;
}
代码语言:javascript
复制
<div><div class="content container">Header</div></div>
<div id="placeholder-body">
    <div><div class="content container">Some content</div></div>

    <div class="tile-1 split-tile split-left">
        <div class="content">60% width.</div>
    </div>
    <div class="tile-2 split-tile split-right">
        <div class="content">40%</div>
    </div>

    <div><div class="content container">Some content</div></div>
</div>
<div><div class="content container">Footer</div></div>

您在这里看到的结构是RWD结构的简化版本。我们需要整个布局留在它的边界内。如果您将浏览器宽度向上或向下更改,您将看到标记为"60%“和"40%”的div不尊重其馀div的边界。

你可能会问:“你为什么不直接把60%和40%的div包在一个容器里呢?”这里介绍的DOM结构是在一个已经很复杂的系统中使用CMS来部署的。要改变这一点,需要的不仅仅是一点点重构。我将不得不忍受这些瓷砖的布局方式。

所以我的问题是:是否有一种方法可以在中间的div上实现60/40的分割,这样他们就可以保持布局其余部分的左右边,只使用css?

更新:我也不能将#占位符体限制为最大宽度,因为我的设计人员希望我为结构中的某些div制作全宽度的背景色。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-11 12:57:17

如果您可以修改#placeholder-body样式,那么解决方案很简单:

代码语言:javascript
复制
#placeholder-body {
    max-width: 600px;
    margin: auto;
}

工作样本:http://jsfiddle.net/PPeYH/1/

另一种可能性是:

代码语言:javascript
复制
.split-tile {
    margin: auto;
    max-width: 600px;
    width: 100%;
}
.split-left .content {
    width: 60%;
}
.split-right .content {
    margin-left: auto;
    width: 40%;
}
.split-left {
    height: 0;
}

这里没有使用浮点数,但左标题的高度设置为0,但溢出是可见的,所以看起来很好。问题是当它的内容比正确的标题长。您也可以在split-right上设置负的上边距,而不是在split-left上将高度设置为0,但您必须知道确切的高度。

工作样本:http://jsfiddle.net/PPeYH/3/

除此之外,还可以从CSS3查询媒体和CSS3:

代码语言:javascript
复制
@media screen and (min-width: 638px) {
    .split-left {
        width: 360px;
        margin-left: calc(50% - 300px);
    }
    .split-left .content {
        width: 360px;
    }
    .split-right {
        width: 240px;
        margin-right: calc(50% - 300px);
    }
    .split-right .content {
        margin-left: 0;
        width: 240px;
    }   
}

工作样本:http://jsfiddle.net/PPeYH/5/

票数 5
EN

Stack Overflow用户

发布于 2013-11-11 12:52:32

如果您将拆分块插入到另一个容器中,则小提琴可以工作。

代码语言:javascript
复制
<div class="container">
    <div class="tile-1 split-tile split-left">
        <div class="content">
            60% width.
        </div>
    </div>
    <div class="tile-2 split-tile split-right">
        <div class="content">
            40%
        </div>
    </div>
</div>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19906731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档