引导元素100%宽度


95

我要创建交替的100%彩色块。附件中说明了“理想”情况以及当前情况。

所需的设置:

http://i.imgur.com/aiEMJ.jpg

目前:

http://i.imgur.com/3Sl27.jpg

我的第一个想法是创建一个div类,为其提供背景颜色,并为其提供100%的宽度。

.block {
    width: 100%;
    background: #fff;
}

但是,您可以看到这显然不起作用。它仅限于容器区域。我试图关闭容器,但也没有用。


您能否包括您正在使用的代码?如果没有这些,我只能说您必须确保div的包含标签的宽度没有设置为100%以外
Michael Peterson 2012年

嗨,迈克尔,感谢您的回复。这是我正在使用的代码部分: <div class="container"> <div class="row"> <div class="span12"><img src="img/logo.png" width="960px"></center></div> <div class="block">content</div>
user1589214,2012年

Answers:


77

container类是有意不是100%的宽度。根据视口的宽度,它的固定宽度是不同的。

如果要使用屏幕的整个宽度,请使用.container-fluid

引导程序3:

<body>
  <div class="container-fluid">
    <div class="row">
      <div class="col-lg-6"></div>
      <div class="col-lg-6"></div>
    </div>
    <div class="row">
      <div class="col-lg-8"></div>
      <div class="col-lg-4"></div>
    </div>
    <div class="row">
      <div class="col-lg-12"></div>
    </div>
  </div>
</body>

引导程序2:

<body>
  <div class="row">
    <div class="span6"></div>
    <div class="span6"></div>
  </div>
  <div class="row">
    <div class="span8"></div>
    <div class="span4"></div>
  </div>
  <div class="row">
    <div class="span12"></div>
  </div>
</body>

1
.row需要一个.container或本例中的.container-fluid。
netAction 2014年

1
如果您使用的是较早版本的引导样式表,container-fluid则将导致水平滚动条。为了解决这个问题添加到您的样式表.container-fluid{ padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; }
查理

29

这是通过Bootstrap 3实现所需设置的方法:

<div class="container-fluid">
    <div class="row"> <!-- Give this div your desired background color -->
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    ... your content here ...
                </div>
            </div>
        </div>
    </div>
</div>

container-fluid零件确保您可以在整个宽度上更改背景。该container部分可确保您的内容仍以固定宽度包裹。

这种方法有效,但是我个人不喜欢所有嵌套。但是,到目前为止,我还没有找到更好的解决方案。


3
实际上,它看起来像“两个容器都不可嵌套” getbootstrap.com/css/#overview-container,因此在这里可以期待一些问题(但是我认为我仍然会使用您的解决方案)。
ThibautBarrère2014年

值得注意的是,容器流体类在bootstrap 3.0中不可用,但在3.1及更高版本中可用
Dev

29

快速回答

  1. 使用多个没有嵌套 .container小号
  2. .container您想要的全角背景包裹在其中div
  3. 将CSS背景添加到包装div中

小提琴:简单:https ://jsfiddle.net/vLhc35k4/,容器边框:https : //jsfiddle.net/vLhc35k4/1/
HTML:

<div class="container">
  <h2>Section 1</h2>
</div>
<div class="specialBackground">
  <div class="container">
    <h2>Section 2</h2>
  </div>
</div>

CSS: .specialBackground{ background-color: gold; /*replace with own background settings*/ }

更多信息

不要使用嵌套的容器

很多人会(错误地)建议您使用嵌套容器。
那么,你应该不是
它们不被嵌套。(请参阅文档中的“容器”部分)

这个怎么运作

div是一个块元素,默认情况下跨过文档主体的整个宽度-存在全角功能。它也具有其内容的高度(如果没有另外指定)。

引导容器不需要是人体的直接子代,它们只是具有一些填充物和可能具有一些屏幕宽度可变的固定宽度的容器。

如果基本网格.container具有一定的固定宽度,则它也将自动水平居中。
因此,是否将其表示为:

  1. 身体的直系子女
  2. 一个直接的孩子基本 div是身体的直接孩子。

“基本”divdiv指没有CSS更改其边框,内边距,尺寸,位置或内容大小。实际上只是带有display: block;CSS的HTML元素,可能还有背景。
但是,当然,设置类似垂直的CSS(高度,padding-top等)不应破坏引导网格:-)

Bootstrap本身正在使用相同的方法

...遍布它自己的网站,并在“ JUMBOTRON”示例中:http ://getbootstrap.com/examples/jumbotron/


1
这个答案是非常彻底和坚定的,他坚信将容器嵌套在其他容器中是一个“非常糟糕的主意”(例如,在Ghostbusters中“穿越河流”很糟糕),他指出了Bootstrap网站上的参考资料来支持这一点。有人建议在一个简单的div内包含一个容器,而Boostrap在其Jumbotron示例中使用此技术的事实告诉我jave.web是今天的赢家!
大众(Volksman)

该巨型机示例消除了我所有的问题。
亚历山大·金

有时无法关闭容器并打开新的全用容器。解决方法。在下面的答案比较好!
RubbelDeCatc

20

有使用vw的解决方法。当您无法创建新的流体容器时很有用。在经典的“容器” div中,此尺寸将为全尺寸。

.row-full{
 width: 100vw;
 position: relative;
 margin-left: -50vw;
 left: 50%;
}

之后,出现了侧边栏问题(由于@Typhlosaurus),使用此js函数解决了此问题,并在文档加载和调整大小时调用它:

function full_row_resize(){
    var body_width = $('body').width();
    $('.row-full').css('width', (body_width));
    $('.row-full').css('margin-left', ('-'+(body_width/2)+'px'));
    return false;
}

3
这非常接近理想的答案,不需要更改整体页面布局,有时就足够了,但是滚动条存在一些细微问题。.row-full将填充整个窗口,而忽略滚动条,与之不同的是,根据滚动条是否不透明,容器流体将使用或不使用滚动条来填充整个窗口。
暴龙

哇。js达到了目的,我一直在寻找解决方案几个小时。我的问题是,内容是在cms中输入的,因此无法更改外部html。真的很想知道是否有没有js的解决方案。
drooh

这很棒。谢谢你。
Ali Kouroshfar


6

如果您不能更改HTML布局:

.full-width {
    width: 100vw;
    margin-left: -50vw;
    left: 50%;
}
<div class="container">
  <div class="row">
    <div class="col-xs-12">a</div>
    <div class="col-xs-12">b</div>
    <div class="col-xs-12 full-width">c</div>
    <div class="col-xs-12">d</div>
  </div>
</div>

演示:http//www.bootply.com/tVkNyWJxA6



2

有时无法关闭内容容器。我们使用的解决方案有些不同,但是由于firefox滚动条的大小,可以防止溢出!

.full-width {
 margin-top: 15px;
 margin-bottom: 15px;
 position: relative;
 width: calc(100vw - 10px);
 margin-left: calc(-50vw + 5px);
 left: 50%;
}

这是一个示例:https : //jsfiddle.net/RubbelDeKatz/wvt9253q


对于Bootstrap 4,这是迄今为止最好的答案。干杯!
蓝精灵地铁

1

抱歉,也应该要求您提供CSS。.container { width: 100%; }照原样,基本上,您需要查看的是在您的CSS中给容器div赋予样式,然后只要您不给它们自己的宽度,封闭的div将继承此样式。您还缺少一些关闭标记,并且至少在本节代码中,</center>关闭了一个<center>没有打开的标记。我不确定您是否要在包含您的内容的div中创建图像或将其放在单独的div中,因此我创建了两个示例。我将img的宽度更改为100px只是因为jsfiddle提供了一个较小的查看区域。让我知道这不是您想要的东西。

内容和图片分开:http : //jsfiddle.net/QvqKS/2/

同一div中的内容和图像(img向左浮动):http : //jsfiddle.net/QvqKS/3/


0

我想知道为什么有人会尝试“覆盖”容器的宽度,因为它的目的保持其内容有一些填充,但是我遇到了类似的情况(这就是为什么我想共享我的解决方案,即使有答案)。

在我的情况下,我希望将所有内容(所有页面)呈现在一个容器中,所以这是_Layout.cshtml中的代码片段:

<div id="body">

    @RenderSection("featured", required: false)

    <section class="content-wrapper main-content clear-fix">
        <div class="container">
            @RenderBody()
        </div>
    </section>
</div>

在我的首页索引页面上,我有一个背景标题图像,我想填充整个屏幕宽度,因此解决方案是使Index.cshtml像这样:

@section featured {
<!-- This content will be rendered outside the "container div" -->
<div class="intro-header">
    <div class="container">SOME CONTENT WITH A NICE BACKGROUND</div>
</div>
}

<!-- The content below will be rendered INSIDE the "container div" -->
<div class="content-section-b">
    <div class="container">
        <div class="row">
          MORE CONTENT
        </div>
    </div>
</div>

我认为这比尝试解决方法要好,因为创建节的目的是允许(或强制)视图动态替换布局中的某些内容。


0

尽管有人提到在这种情况下您将需要使用.container-fluid,但您还必须从引导程序中删除填充。


0

以下答案无论如何都不是最佳选择,但我需要在保持内部div完全伸展的同时保持其在容器中的位置。

https://jsfiddle.net/fah5axm5/

$(function() {
    $(window).on('load resize', ppaFullWidth);

    function ppaFullWidth() {
        var $elements = $('[data-ppa-full-width="true"]');
        $.each( $elements, function( key, item ) {
            var $el = $(this);
            var $container = $el.closest('.container');
            var margin = parseInt($container.css('margin-left'), 10);
            var padding = parseInt($container.css('padding-left'), 10)
            var offset = margin + padding;

            $el.css({
                position: "relative",
                left: -offset,
                "box-sizing": "border-box",
                width: $(window).width(),
                "padding-left": offset + "px",
                "padding-right": offset + "px"
            });
        });
    }
});

0

我将使用两个单独的“容器” div,如下所示:

<div class="container">
   /* normal*/
</div>
<div class="container-fluid">
   /*full width container*/
</div>

切记,容器流体不会遵循您的断点,而是一个全宽度的容器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.