【问题标题】:How to make a child div full width of browser's viewport ignoring parent's position (margin & padding) and width [duplicate]如何使浏览器视口的子div全宽忽略父级的位置(边距和填充)和宽度[重复]
【发布时间】:2018-12-19 00:27:49
【问题描述】:

This image describes the story. I want to make purple div same as green div . 有人可以解释一下如何在父级的边距和填充未知的情况下使子级 div 全宽吗?

<div class="parent">
   <div class="child1">
   </div>
   <div class="child2">
   </div>
</div>

我主要是坚持调整子 div 的边距和内边距。

注意:父 div 的宽度是边距和内边距未知 plz checkout the image red portion is parent and purple color is child, I want the purpule portion come out and take the full width of viewport

【问题讨论】:

  • 取决于您想要实现的目标。 position: fixed 将 div 设置为相对于主体,而不是父级,这可能会有所帮助。其他尝试使您的最终结果更清晰(屏幕截图或示例),因为现在很难理解您需要什么。
  • @elveti 感谢您的回复。我添加了一张图片,你可以看看link这里红色是父div,紫色和绿色是孩子。我想让紫色 div 和绿色 div 一样。

标签: html css


【解决方案1】:

您可以在 CSS 中使用 width: 100%;

.child1 {
width: 100%;
}
&lt;div class="child1"&gt;&lt;/div&gt;

【讨论】:

  • 感谢您的回复。我添加了一张图片,你能看看这个link这里红色是父div,紫色和绿色是孩子。我想让紫色 div 和绿色 div 一样。
【解决方案2】:

block-level element 总是从新行开始并占据可用的全部宽度

如果父容器有内边距,子容器仍然只能占用内容区域内剩余的可用空间。

body {
  margin: 0;
}

.parent {
  padding: 10px;
  margin: 20px;
  background: #FB061B;
}

.child {
  background: #7C73A5;
}
<div class="parent">
  <div class="child">
    child1
  </div>
  <div class="child">
    child2
  </div>
</div>

如果您知道父容器的填充量,您可以对子容器应用负的左右边距(相同的量)。这在 CSS 框架网格系统中很常见。

body {
  margin: 0;
}

.parent {
  padding: 10px;
  margin: 20px;
  background: #FB061B;
  
}

.child {
  background: #7C73A5;
  margin-left: -10px;
  margin-right: -10px;
}
<div class="parent">
  <div class="child">
    child1
  </div>
  <div class="child">
    child2
  </div>
</div>

如果你不知道父填充但只有一个子,你可以使用position: absolute; left: 0; right: 0,只要父被定位。

body {
  margin: 0;
}

.parent {
  padding: 10px;
  margin: 20px;
  background: #FB061B;
  position: relative;
}

.child {
  background: #7C73A5;
  position: absolute;
  left: 0;
  right: 0;
}
<div class="parent">
  <div class="child">
    child1
  </div>
</div>

现在,当您希望孩子全屏显示时,您现在可以在 absolutefixed 之间切换以将其从一种状态切换到另一种状态。

$(".children").click(function() {
  $(this).toggleClass("is-fixed")
});
body {
  margin: 0;
}

.parent {
  padding: 10px;
  margin: 20px;
  background: #FB061B;
  position: relative;
  height: 100px;
}

.children {
  background: #7C73A5;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
}

.is-fixed {
  top: initial;
  background: green;
  position: fixed;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">
  <div class="children">
    click to toggle between absolute/fixed
    <div>child1</div>
    <div>child2</div>
    <div>child3</div>
  </div>
</div>

【讨论】:

  • 感谢您的回复。我添加了一张图片,你能看看这个link这里红色是父div,紫色和绿色是孩子。我想让紫色 div 和绿色 div 一样。
  • 好的。您需要使用一点 js/jQuery 在position:absoluteposition:fixed 之间切换。 ` 检查最后一个 sn-p。
  • 太棒了!但是在多个孩子的情况下,他们会崩溃成一个孩子。你能帮我解决这个问题吗:)
  • 将多个孩子放入一个通用的div容器中。
  • 兄弟我想要另一个孩子就像
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多