我有一个包含DIV,我用作响应网格的一部分.它扩展到允许的最大宽度1280px,然后大型设备出现边距.这是我的CSS +一点点.
.container
{
margin-left:auto;
margin-right:auto;
max-width:1280px;
padding:0 30px;
width:100%;
&:extend(.clearfix all);
}
Run Code Online (Sandbox Code Playgroud)
但是在某些情况下我想横向溢出 - 假设我有一个需要全宽的背景图像或颜色.我不擅长CSS - 但是有可能实现我想要的吗?
Pau*_*e_D 23
最明显的解决方案是关闭容器...拥有全宽div然后打开一个新容器.标题"容器"只是一个类......并不是绝对要求它同时保存所有内容.
在这种情况下,您将背景颜色应用于整个宽度div,并且您不需要将颜色应用于内部受限制的div.
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
}
.container {
max-width: 80%;
border: 1px solid red;
margin: 0 auto;
}
.fullwidth {
background: orange;
}
header {
height: 50px;
background: #663399;
}
.mydiv {
/* background: orange; */
min-height: 50px;
}
footer {
height: 50px;
background: #bada55;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<header></header>
</div>
<div class="fullwidth">
<div class="container">
<div class="mydiv">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum illum veniam in delectus corrupti autem magnam. Tenetur ducimus provident nisi aut esse aliquid accusamus quas.</p>
</div>
<div class="mydiv">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum illum veniam in delectus corrupti autem magnam. Tenetur ducimus provident nisi aut esse aliquid accusamus quas.</p>
</div>
</div>
</div>
<div class="container">
<footer></footer>
</div>
Run Code Online (Sandbox Code Playgroud)
然而,对于一些他们喜欢一个单一的无所不包的容器,所以,如果你追求的是一个背景,你可以使用一个伪元素,像这样:
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
overflow-x: hidden;
}
.container {
max-width: 80%;
border: 1px solid red;
margin: 0 auto;
}
header {
height: 50px;
background: #663399;
}
.mydiv {
height: 100px;
position: relative;
}
.mydiv:after {
content: "";
position: absolute;
height: 100%;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 100vw;
background: orange;
z-index: -1;
}
footer {
height: 50px;
background: #bada55;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<header></header>
<div class="mydiv">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum illum veniam in delectus corrupti autem magnam. Tenetur ducimus provident nisi aut esse aliquid accusamus quas.</p>
</div>
<footer></footer>
</div>
Run Code Online (Sandbox Code Playgroud)
支持vw
IE9 + - 请参阅http://caniuse.com/#feat=viewport-units
有些情况下,100%宽的div需要实际内容,并且容器无法随意打开/关闭(可能是为了改装滑块).
在那些新div的高度已知的情况下,可以使用相同的技术将其定位为100%视口宽:
* {
margin: 0;
padding: 0;
}
body {
overflow-x: hidden;
}
.container {
max-width: 80%;
border: 1px solid red;
margin: 0 auto;
}
header {
height: 50px;
background: #663399;
}
.mydiv {
height: 100px;
position: relative;
}
.myslider {
position: absolute;
height: 100%;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 100vw;
background: orange;
}
footer {
height: 50px;
background: #bada55;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<header></header>
<div class="mydiv">
<div class="myslider">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum illum veniam in delectus corrupti autem magnam. Tenetur ducimus provident nisi aut esse aliquid accusamus quas.</p>
</div>
</div>
<footer></footer>
</div>
Run Code Online (Sandbox Code Playgroud)
注意:有些情况100vw
可能导致溢出,并且可能会出现水平滚动条.overflow-x:hidden
在<body>
可以参加那个..这不应该是一个问题,因为其他一切仍然在容器内.
l2a*_*lba 18
我发现这个超级有用的技巧使用vw
上margins
(来源)
示例:
.inner-but-full {
margin-left: calc(-50vw + 50%);
margin-right: calc(-50vw + 50%);
}
Run Code Online (Sandbox Code Playgroud)
演示:
html,body {
overflow-x: hidden; /* Prevent scrollbar */
}
.inner-but-full {
margin-left: calc(-50vw + 50%);
margin-right: calc(-50vw + 50%);
height: 50px;
background: rgba(28, 144, 243, 0.5);
}
.container {
width: 300px;
height: 180px;
margin-left: auto;
margin-right: auto;
background: rgba(0, 0, 0, 0.5);
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="inner-but-full"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我可以用吗 :
http://caniuse.com/#feat=viewport-units