是否可以使容器内的元素大于容器?

时间:2018-02-19 10:53:36

标签: javascript jquery html css

让我们说我有一个宽度为900px的容器,里面的所有帖子都是900px。

我想让第一个成为100%(不是900px,而是与屏幕一样大)。

这可能吗?



#container { width: 900px; background: red; }
.post { width: 900px; height: 50px; background: yellow; margin: 0 0 10px;  }
.post:first-child { background: green; }

<div id="container">
  <div class="post">Post 1</div>
  <div class="post">Post 2</div>
  <div class="post">Post 3</div>
</div>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:2)

使用给定的样式,100%的宽度将与container一样宽,因此您可以使用viewport units,例如

.post:first-child { width : 100vw; }

1vw等于视口宽度的1%)

答案 1 :(得分:1)

@fcalderan是对的。另外,我想补充一点,你可能有一个居中的容器,在这种情况下你需要一些重新定位。

说明:将框移到左侧(负margin-left),移动屏幕的一半(50vw)减去容器的一半(50%)。基本上:将盒子从当前位置向右移动,即左手边与页面中心对齐(容器宽度为+50%),然后将页面的一半向后移动到左侧(-50vw)。

#container {
  width: 400px;
  background: red;
  margin: 0 auto;
}

.post {
  width: 100%;
  height: 50px;
  background: yellow;
  margin: 0 0 10px;
}

.post:first-child {
  background: green;
  width: 100vw;
  margin-left: calc(-1 * (50vw - 50%));
}
<div id="container">
  <div class="post">Post 1</div>
  <div class="post">Post 2</div>
  <div class="post">Post 3</div>
</div>

答案 2 :(得分:0)

虽然你可以做到这一点,但我不建议......基本上你在调整大小和发现问题时都会遇到各种各样的问题。

有一些更好的选择......将容器放在容器外面,或者只是让容器全宽,并限制其他帖子的宽度。

#container { width: 100%; background: red; }
.post { width: 900px; height: 50px; background: yellow; margin: 0 0 10px;  }
.post:first-child { width: 100%; background: green; }


<div id="container">
  <div class="post">Post 1</div>
  <div class="post">Post 2</div>
  <div class="post">Post 3</div>
</div>

答案 3 :(得分:0)

我希望这对你有用。

#container {
  width: 300px;
  background: red;
  padding-top: 50px;
  }
.post { 
  width: 300px; 
  height: 50px; 
  background: yellow; 
  margin: 0 0 10px;  
  }
.post:first-child { 
  background: green;
  position: absolute;
  height: 50px;
  width: 100%;
  top: 0;
  }
<div id="container">
  <div class="post">Post 1</div>
  <div class="post">Post 2</div>
  <div class="post">Post 3</div>
  <div class="post">Post 3</div>
  <div class="post">Post 4</div>
  <div class="post">Post 5</div>
  <div class="post">Post 6</div>
  <div class="post">Post 7</div>
  <div class="post">Post 8</div>
  <div class="post">Post 9</div>
  <div class="post">Post 10</div>
  <div class="post">Post 11</div>
  <div class="post">Post 12</div>
  <div class="post">Post 13</div>
  <div class="post">Post 14</div>
</div>