html - 当你没有定义 div 宽度时通常会发生什么?

标签 html css width

背景

通常,当我想要一个 div 填充水平空间时,我会使用 width:100%

但是,在我的一个页面上,width:100% 标记会水平扩展页面,导致右侧有一列空白,并且滚动条会出现在 x-轴。

我怀疑这是因为某些子 div 中的 padding 造成的。

无论如何,当我从 div 样式中删除 width:100% 时,问题似乎得到了解决。所以我最终得到了这个:

<div style="background:rgba(0,0,0,0.8);padding:8px;"><h1>smelle ;)</h1><?php include("navbar.php"); ?></div>

页面恢复正常,div继续填满页面的整个水平长度,右侧不再有间隙。

我的问题是...

在我当前的代码中,没有任何内容定义 div 的宽度,但它继续填充水平长度。

它工作得很好,我已经在几个浏览器上尝试过了。我只是担心这可能会在将来或使用较旧的浏览器时导致问题。

谁能告诉我这是否可以或者我应该做些什么?

最佳答案

不添加宽度是正确的。

为什么?

如果您想要“100%”,则根本不需要修改宽度,因为这是所谓的 block 级元素(具有 的元素)的标准行为display: block;,无论是默认设置还是 CSS 中的手动分配):它们在水平方向上占据尽可能多的空间。

滚动条的行为是由 outer div 上的 padding: 8px 产生的。标准盒子模型将宽度定义为元素的内部宽度,您必须在其上添加左右填充和边框以找出实际 元素的宽度。

如果您想以后避免出现此问题,可以申请

html { 
    box-sizing: border-box; 
}

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

位于第一个加载的 CSS 样式表的最顶部。这使得填充有点成为“内部填充”。与边框相同。边框和填充不再增加元素的尺寸,而是发生在内部。这是老 Internet Explorer 一直使用的盒子模型。 box-sizing 属性也允许您在现代浏览器中使用它。 content-box 是以前所谓的 W3C 盒子模型(在所有浏览器中默认,除非您指定其他内容),旧 IE 使用的现在称为 border-box。该图片显示了它(使用该图片的文章已经过时了,我不想链接到它):

enter image description here

在这里找到一个解释盒子模型的简短视频(如果您想做网页设计,这绝对是至关重要的):

https://helpx.adobe.com/dreamweaver/how-to/understanding-the-box-model.html

关于html - 当你没有定义 div 宽度时通常会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30523706/

相关文章:

javascript - 通过调整页面宽度来更改图像

html - 使图像不会将 sibling 移到一边

jquery - 主 div 中的滚动条以显示其中的 div

开箱即用的 CSS 内容溢出 IE <6

html - CSS Flexbox 图像不保留纵横比

html - 动画宽度从自动到 100%?

html - 我应该为文本使用什么标签? html5

java - 在 JEditorPane 中显示可点击的 HTML 链接

html - 居中图像 block

html - 设置表格单元格相对于列中其他单元格的宽度