CSS 浮动和填充
我有一个非常普通的 WordPress 博客,有主要部分(静态宽度,向左浮动)和菜单部分(除了但在示例中使用了 div,也是静态宽度,向左浮动)。
关键是 CSS 不会将填充“算作”宽度”,因此我的“主要部分”中 100% 宽的 div 看起来没问题,但即使是 1 像素填充也会破坏整个布局。
奇怪的是,当我根本没有设置宽度时 - 一切正常,这对我来说很奇怪,因为我一直认为 div 总是倾向于占用尽可能多的区域(所以 width: 100% 与没有宽度不同即使在第二种情况下 div 也... 100% 是什么?:))。
我也有一些内联块元素,这更糟糕,因为它们永远不适合布局:
我知道浮动和填充是如何工作的,但是有办法解决我的问题吗?我的意思是真正的修复,我希望我的 div 占据父主 div 的 100%,而不需要触摸菜单。我不是在寻找作弊(比如隐藏溢出)等,因为在现实世界中我的主 div 也有填充:)
I have a pretty normal Wordpress Blog, there's main section (static width, floated left) and menu section (aside but used div in example, also static width, floated left).
The point is CSS doesn't "count" paddings as "width", so 100% wide div in my "main section" looks ok, but even 1 pixel padding destroys the whole layout.
The strange thing is when I'm not setting width at all - everything works fine, what's strange to me, because I always thought divs always tend to take as much area as possible (so width: 100% is not the same as no width at all even if in the second case div takes... 100%? what the..? :)).
I have some inline-block elements also and that's even worse, because they never fit to layout:
I know how floats and paddings work, but is there a way of fixing my problem? And I mean real fix, I want my divs to take 100% of the parent-main div, without touching the menu. And I'm not looking for cheats (like overflow hidden) etc., because in real world my main div has paddings also :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
很简单,将其放在另一个 div 中,然后将 padding 应用于内部 div,宽度应用于外部:
Its simple, put it inside another one and apply padding to the inner div, width to the outer:
试试这个:
基本上,将 div 标签用 padding 包裹在 div 内,宽度=100
Try this:
basically, wrap the div tag with padding inside your div with width=100
到目前为止,最简单的方法是使用
box-sizing: border-box
属性。这适用于所有现代浏览器和 IE8+(不是 IE7!)。
如果您关心 IE7 支持,那么解决方案就会变得丑陋。
现场演示
By far the easiest way is to make use of the
box-sizing: border-box
property.This works in all modern browsers and IE8+ (not IE7!).
If you care about IE7 support, the solutions become ugly.
Live Demo