如何根据自己的宽度而不是父 div 将 CSS 边距/填充设置为子 div?

Posted

技术标签:

【中文标题】如何根据自己的宽度而不是父 div 将 CSS 边距/填充设置为子 div?【英文标题】:How to set css margin/padding to a child div based on its own width, and not of parent? 【发布时间】:2016-03-30 22:01:45 【问题描述】:

例如:

<div class="parent">
  <div class="child">
  </div>
</div>

在这里,通常如果我将边距设置为 20%,则它是父宽度的 20%。但我希望孩子根据自己的宽度计算边距。有没有可能?

编辑:

(橙色)边距应根据(绿色)子级的宽度计算。 IE。绿框越宽,边距越大。 (或者在我的情况下更少)。

基本类似于margin:auto。但我不想使用它,因为我们不想让它完全居中对齐。

【问题讨论】:

孩子的宽度是怎么设置的?我的意思是,如果您在 CSS 中明确设置像素宽度,您可以在 CSS 中将边距设置为特定数量的像素(即 - 20% 的任何值),而忘记整个百分比。如果您没有为孩子明确设置宽度,那么您可以轻松编写一些javascript来计算孩子的宽度,然后适当地设置边距。如果你想走这条路,请告诉我。 相对单位:%、em、rem、vh、vw 绝对单位:px、pt 所有相对单位都必须有可比较的东西,AFAIK 使用 px 肯定会让元素独立存在。如果您想要灵活性但需要更多控制,请尝试将 rem 用于小规模,将 vh 和 vw 用于大规模。 没有截图或涂鸦,我真的不知道你在问什么。为孩子添加边距听起来很容易,但那太简单了。 【参考方案1】:

只要将子div嵌套在父div中,子div的属性就会相对于父div的属性。

【讨论】:

【参考方案2】:

使用不可见的div

例如如果要在子 div 的 20% 左侧设置边距,只需将子 div 的宽度设置为 84%,将 div 的宽度设置为 16%。 另外,请使用id,而不是class

<div id="parent">
    <div class="invisible"></div>
    <div id="child">...</div>
</div>

style.css:

.invisible 
  display:none;

另外,将其余divs 中的display 设置为inline-block 以使它们水平对齐。

【讨论】:

【参考方案3】:

position:relative 中设置父Div 和% 中的边距,并在pixel 中为子元素提供修复heightwidth 以及marginpixel 要么 第二种方式,用position relative设置父div,用position absolute为子元素设置left right and width

【讨论】:

以上是关于如何根据自己的宽度而不是父 div 将 CSS 边距/填充设置为子 div?的主要内容,如果未能解决你的问题,请参考以下文章

【DIV+CSS】div 子容器大于父容器宽度

CSS 的设置 div子节点怎么自适应 父节点的高度呢 父节点没有设置高度值的

CSS - 盒子模型宽度

CSS控制,子div的高度自适应父div的高度

css教程

用CSS如何让节点宽度自动填满