【问题标题】:Why Is My Content Less Than 100% Width?为什么我的内容小于 100% 宽度?
【发布时间】:2014-08-05 01:21:22
【问题描述】:

为什么我的内容小于 100% 宽度?

JSFiddle

http://jsfiddle.net/CSS_Apprentice/ru8f6/

HTML

<div class="container">
    <div id="header"></div>
    <div id="content">
        <div id="box1"></div>
        <div id="box2"></div>
        <div id="box3"></div>
        <div id="box4"></div>
        <span class="stretch"></span>
    </div>
    <div id="footer"></div>
</div>

CSS

.container {
    width: 100%;
    height: 100%;
    border: 1px solid black;
}

#header {
    border: 1px solid black;
    width: 100%;
    height: 50px;
}

#content {
    border: 2px solid #444;
    height: 125px;
    text-align: justify;
    -ms-text-justify: distribute-all-lines;
    text-justify: distribute-all-lines;
    padding-right: 25px;
    padding-left: 25px;
}

#content > div {
    border: 1px dashed black;
    width: 100px;
    height: 100px;
    vertical-align: top;
    display: inline-block;
    *display: inline;
    zoom: 1;
}

.stretch {
    width: 100%;
    display: inline-block;
    font-size: 0;
    line-height: 0;
}

#footer {
    border: 1px solid black;
    width: 100%;
    height: 50px;
}

我正在使用“Justify Text”技巧来对齐我的 div,但我怀疑这是导致问题的原因。这不是一个大问题,但它只是困扰我:)

【问题讨论】:

  • this (closed) question,你会发现答案有一些很好的指向各种CSS“重置”的指针。关于您是否应该使用一种,意见各不相同,但许多设计师会这样做。您将它们包含在您自己的 CSS 之前,它们有助于“驯服”浏览器默认样式,因此您知道自己的代码有一个一致的起点。他们中的大多数(如果不是全部)将删除默认边框和填充,就像在此处导致您出现问题的那个一样。

标签: html css alignment justify


【解决方案1】:

因为浏览器的默认样式表。默认情况下,HTML body 标签的边距为 8 像素。有关浏览器默认样式表的列表,请参阅 here。以及here W3C 的想法。

要“修复”这个问题,请给它margin: 0;

body {
    margin: 0;
}

【讨论】:

  • 将功劳(或责备!)归咎于为各种浏览器设计默认样式表的人会更准确...
  • @MarcAudet 更新了答案,我认为这是一些标准,因为几乎所有浏览器似乎都添加了边距
  • 我以前从未看过规范的 App D,很好看!
  • 给正文设置默认边距一个好主意。当文本正好靠在窗框边缘时,很难阅读。
  • @CSSApprentice 你正在使用witdh:100%border:1px,宽度不包括边框,所以它会推过去。您可以使用大纲或做一些其他技巧,this has some answers here
【解决方案2】:

无论您是否指定了样式,都需要呈现样式。因此,如果您从未指定marginpaddingbody(或任何其他元素,例如:paragraphh1)应该有多少,浏览器仍然必须以某种方式决定如何显示它。

您可能认为让所有未指定的值自动为零是有意义的,但是(例如)段落之间绝对没有间距可能是相当不合理的。因此,某些元素(在本例中为 body 元素)有默认值,并且由于您没有为 body 元素指定边距值,因此它采用了浏览器的默认值。

为了使这些默认值中的许多都等于零,有些人决定从“重置”开始他们的 CSS,这实际上与将一堆东西设置为您认为的值相同是逻辑上的默认起点(通常为零值)。例如,查看 Eric Meyer 的 css 重置。 http://meyerweb.com/eric/tools/css/reset/

重置后,您应该通过覆盖上面“重置”部分已经设置的代码来指定。

总而言之,如果你已经设置:

body {
    margin: 0;
}

这会使您的内容看起来像是 100%,但如果您不了解设置了默认值的想法,并且如果您自己不指定值,您将不断遇到同样的问题,则浏览器的默认值是下一个最佳值。

【讨论】:

  • 我只是在 JSFiddle 中尝试了 margin: 0 ,但实际上并没有解决它:/ 我想可能是因为我没有声明宽度,所以我尝试了 width: 100% 和这将我的内容部分推出了正文。有什么想法吗?
  • @CSSApprentice 你会注意到你放了一个 25px 的 padding-right 和 padding-left ;在您的内容中。这将使内容框具有左右 25px 的填充。有几点要提。如果您希望您的 box1、box2 向左和向右齐平,请去掉 #content 上的填充。使其填充:0。在你这样做之前,你可以放一个 background-color:blue;在#content 上,您会看到内容实际上是 100%,填充让您感觉不是,但内容实际上是向左和向右冲洗,即使没有填充调整。
  • 因此,再次声明,您可能会看到这些框,并且由于这些框没有向右和向左对齐,您可能会觉得 #content(这是当前包含的内容)框)不是 100%。但现在内容实际上是 100%。 Content 上的左右填充使盒子远离左右两侧,让你感觉它不是 100%。这就是为什么我认为您应该首先尝试放置背景颜色:蓝色;在 Content 中,这样您就可以看到当前内容框实际上是 100%,没有任何填充调整。
  • 谢谢!正是边界让我相信#content 已关闭。你知道为什么右边的内容边框会消失吗?带有 bgcolor 的新 JSFiddle:jsfiddle.net/CSS_Apprentice/ru8f6/3
猜你喜欢
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 2021-03-15
  • 2023-01-24
  • 2013-01-20
  • 1970-01-01
相关资源
最近更新 更多