使用边距显示div宽度100%

Ran*_*952 47 html css mobile

我想显示一个带有边距的expandable div(width: 100%)...

这是我的代码:

<div id="page">
    <div id="margin">
        "some content here"
    </div>
</div>?
Run Code Online (Sandbox Code Playgroud)

这是我的css代码:

#page {
  background: red;
  float: left;
  width: 100%;
  height: 300px;
}

#margin {
  background: green;
  float: left;
  width: 100%;
  height: 300px;
  margin: 10px;
}?
Run Code Online (Sandbox Code Playgroud)

现场演示

Vuk*_*vić 72

您可以使用calc()css功能(浏览器支持).

#page {
  background: red;
  float: left;
  width: 100%;
  height: 300px;
}

#margin {
  background: green;
  float: left;
  width: -moz-calc(100% - 10px);
  width: -webkit-calc(100% - 10px);
  width: -o-calc(100% - 10px);
  width: calc(100% - 10px);
  height: 300px;
  margin: 10px;
}?
Run Code Online (Sandbox Code Playgroud)

或者,尝试使用填充而不是边距和box-sizing: border-box(浏览器支持):

#page {
    background: red;
    width: 100%;
    height: 300px;
    padding: 10px;
}

#margin {
    box-sizing: border-box;
    background: green;
    width: 100%;
    height: 300px;
}
Run Code Online (Sandbox Code Playgroud)

  • 你必须使用`calc(100% - 10px)`(数字和负数之间的空格).对于chrome和safari也使用`-webkit`前缀,`-moz`用于FF和`-o`用于Opera! (4认同)
  • 为什么这不是 `calc(100% - 20px)`?`10px` 只会是边距的一侧,并且只会将宽度减少一半以适应所需的距离。除非我遗漏了什么。 (3认同)
  • 最好的解决方案是在现代浏览器中使用 `calc()`,对于不支持 `calc()` 的旧浏览器使用 JS 代码 + Modernizr。 (2认同)

小智 14

有时最好相反并给父div填充代替:

现场演示

我做的是将CSS更改#page为:

#page {
    padding: 3%;
    width: 94%; /* 94% + 3% +3% = 100% */

    /* keep the rest of your css */
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

然后删除marginfrom#margin

注意:这也增加了3%的顶部和底部(因此高度为6%),这使得它比300px高一点 - 所以如果你需要300px,你可以做类似的事情,padding:10px 3%;并改变height:280px;再加上300px .


小智 11

您可以使用以下CSS来实现所需的结果:

#page {
   background: red;
   overflow: auto;
}

#margin {
   background: green;
   height: 280px;
   margin: 10px
}
Run Code Online (Sandbox Code Playgroud)

  • 啊! 诀窍是没有宽度:#margin上的100%. (6认同)
  • 完全删除宽度似乎不是解决合并边距和宽度功能的问题的适当方法。 (2认同)

小智 7

通过标准实现这一目标的正确方法是:

#margin {
   background: green;
   height: 280px;
   margin: 10px;
   width: auto;
   display: block;
}
Run Code Online (Sandbox Code Playgroud)