【问题标题】:Fullwidth child DIV inside wrapper包装器内的全角子 DIV
【发布时间】:2014-08-30 15:26:35
【问题描述】:

我会直奔主题。 我有一个宽度为 100% 的子 div,它位于具有固定宽度的包装器下。我想知道如何使子 div “爆发”并具有 100% 的全屏页面宽度。 代码是这样的,我尝试使用相对/绝对定位但没有运气。

<div class="wrapper">
    <div class="banners">
        <div class="first"><img src="http://placehold.it/200x200"></div>
        <div class="second"><img src="http://placehold.it/200x200"></div>
    </div>
</div>

小提琴可以找到here

除了“banners”div 之外,该 div 的上方和下方还有几个部分,这就是“banners”在包装器中的原因

【问题讨论】:

  • 如果您不希望它包含其他元素,那么包装器的目标是什么?
  • 如果你可以使用 jquery,你可以使用$(window).width(); 获取浏览器视口,然后使用setAttribute('style','') 更改样式
  • @yosh,横幅 div 上方/下方还有几个部分
  • @claudiu,你能解释一下吗,我不是真正的 jquery/js 专家
  • 使用position: absolute,您可以强制.banners 具有屏幕的全宽或最近的父非静态块。但是,一旦.banners 退出内容流,以下元素将受到影响。会知道.banners的身高吗?

标签: html css responsive-design


【解决方案1】:

您可以将绝对位置添加到.banners,但这会将.banners 容器定位在与上述元素相关的绝对位置。

.banners {
  position: absolute;
  width: 100%;
  left: 0;
  top: 0;
}

一个例子:http://jsfiddle.net/qMYQw/

【讨论】:

  • 是的,这会起作用,但在横幅 div 的下方和上方还有一些部分
  • 如果.banners有一个特定的高度,你可以给下一个兄弟元素添加一个边距,以保持横幅后面兄弟元素的正确位置。
【解决方案2】:

在您发表评论后,我在此处更新了您的 div:http://jsfiddle.net/qMYQw/1/ 所以你给你的img一个id,这样你就可以很容易地通过js调用它。然后你得到浏览器视口:

var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)

然后你改变样式:

var z = document.getElementById('changed');
z.setAttribute('style','width:'+w+'px');

你可以放 z.setAttribute('style','border:1px solid blue;width:'+w+'px'); 如果你想要额外的 CSS。

如果您需要 50%,那么您可以轻松做到这一点:

var w = (Math.max(document.documentElement.clientWidth, window.innerWidth || 0))/2;

您也可以将其应用于其他 div。

【讨论】:

  • 非常感谢克劳迪乌!这很接近,但我不知道我是否解释得足够好。目前,它们被“锁定”在盒子里,它们需要像这样是全角的:i.imgur.com/Kzhzn1f.jpg
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 2016-10-01
相关资源
最近更新 更多