将子宽度设置为父级宽度,包括边框

时间:2016-09-16 11:33:37

标签: html css css3

如何设置.inner类的宽度和对齐方式以匹配其父级的宽度?

可能的解决方案是:

  • 设置box-sizing: content-boxleft: -1px(边框大小)
  • 设置left: -1pxright: -1px

但我认为这些解决方案并不完美,因为您必须知道父级的边框大小和/或您必须使用box-sizing: content-box,但我想避免这种情况。

此外,我不能只改变DOM层次结构,因为我想重新设计由JS框架生成的元素

您知道更好的解决方案吗?

*, *:before, *:after{
  box-sizing: border-box;
 }

.outer{
  border: 1px solid black;
  width: 50%;
  position: relative;
  }

.inner{
  position: absolute;
  top: 100%;
  left: 0px;
  width: 100%;
  border: 1px solid black;
  // box-sizing: content-box;
  // left: -1px;
 }
<div class="outer">
  text
  <div class="inner">Inner</div>
</div>  

3 个答案:

答案 0 :(得分:1)

一个选项可能是使用css3 outline property,其功能与border类似,但不会为元素添加宽度。

答案 1 :(得分:0)

我认为最简单的解决方案是:

(所有其他设置都没有帮助 - 您 拥有left: -1px;,无法将其链接到边框粗细。

&#13;
&#13;
.outer{
  border: 1px solid black;
  width: 50%;
  position: relative;
  }

.inner{
  position: absolute;
  top: 100%;
  width: 100%;
  border: 1px solid black;
  left: -1px;
 }
&#13;
<div class="outer">
  text
  <div class="inner">Inner</div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

.outer{
  border: 1px solid black;
  width: 50%;
  position: relative;
  }

.inner{
  position: relative;
  top: 100%;
  left: 0px;
  width: 100%;
  border-top: 1px solid #000;
 }

这是你在找什么?您可以使用外部div的边框,因为它已经位于底部并延伸到外部div的宽度。

您需要的只是border-top: 1px solid #000;