width:auto;会将元素撑开至整个父元素width,但是会减去子节点自己的margin,padding或者border的大小。
width:100%;会强制将元素变成和父元素一样的宽,并且添加额外的空间到这个元素的width上。就是因为这个,会导致很多问题。

使用width:100%永远都不是一个好主意。这个属性容易让人产生你正在定义一个元素可视大小,其实,你是在对这个元素的状态做了巨大的改变。

块元素会填满其父元素的整个width,因为块元素默认的是width:auto;的。

See the Pen jGgIu by liqian (@liqian) on CodePen.

下面的例子里,黑色的边框(border)代表容器父元素。蓝色和绿色表示的是一个有着红色边框,边框宽为20个像素的子节点。(border:20px solid red;),不同点在于,蓝色的子节点是width:auto;,绿色的是width:100%;的。

See the Pen H2F - March 25, 2014 #1 by liqian (@liqian) on CodePen.

 
可以看到绿色的子节点伸出了父元素。这是因为绿色的子节点设置了width:100%;使得自己的width变得和父元素一样大小,但是这个width不包含子节点自己边框的大小。这样边框就到父元素外面了;
 
 
 
对于padding和margin也是同样的作用。

See the Pen H2F - March 25, 2014 #2 by liqian (@liqian) on CodePen.

无论多的宽度是padding,margin或者border,width:auto;都不会将子节点撑破父元素。

可以看出,width:100%是将盒模型中的content拉伸得和父元素一样,而width:auto;是将这个盒模型拉伸得和父元素一样。

很多CSS问题的解决办法不是添加更多的CSS,而是去掉那些有问题的CSS,这就得需要对类似width这样的CSS样式的副作用有深刻的认识。

原文地址:http://headertofooter.com/post/80699461723/the-difference-between-width-auto-and-width-100

width:auto; 和 width:100%;的不同的更多相关文章

  1. css中width:auto和width:100%的区别是什么

    width的值一般是这样设置的: 1,width:50px://宽度设为50px 2,width:50%://宽度设为父类宽度的50% 3,还有一个值是auto(默认值),宽度是自动的,随着内容的增加 ...

  2. width:auto 和 width:100%有什么区别

    width:auto 和 width:100%有什么区别 宽度计算不同 <div class="parent"> <span class="child& ...

  3. width:100%;与width:auto;的区别

    <div> <p>1111</p> </div> div{ width:980px; background-color: #ccc; height:30 ...

  4. width:100%和width:auto区别

    在div父元素是body时 1.先看没有width限制的div <div style="border:1px solid red; margin-left:50px; margin-r ...

  5. CSS的width:100%和width:auto区别

    CSS的width:100%和width:auto区别 一.   问题 前段时间在调整树结构的时候,发现如果树的节点名称比较长的话在IE6下则不会撑开外面的元素,导致节点的名称只显示了一半,同时图标和 ...

  6. 《CSS世界》读书笔记(三) --width:auto

    <!-- <CSS世界> 张鑫旭著  --> width:auto width:auto至少包含了以下4种不同的宽度表现: 充分可利用空间.比方说,<div>.&l ...

  7. div标签width:auto无效

    1,因为div标签默认是display:block,独占一行,宽度为父元素的100%,但是高度是auto,跟随内部内容而定.所以要想 设值父元素随子元素的宽高,那么就要设置div标签为display: ...

  8. CSS 水平滚动条 bug & width auto increase bug

    CSS 水平滚动条 bug css overflow & width auto increase bug 问题排查方式 删除可疑的模块,一步步找到问题的原因,定位问题所在 寻找可能会导致 wi ...

  9. JQuery获取元素宽度.width()与.css(‘width’)两个函数的区别

    整理翻译自:http://blog.jquery.com/2012/08/16/jquery-1-8-box-sizing-width-csswidth-and-outerwidth/ 大意是: 在J ...

随机推荐

  1. Jquery 判断滚动条到达顶部或底部

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 全国OA系统下载地址(全)

    思道OAhttp://www.anyoffice.net微软.NET平台,支持64位 金和OAhttp://www.jinher.com 红帆OAhttp://www.ioffice.cn 致远OAh ...

  3. C#超时处理(转载)

    /// <summary>    /// 超时处理    ///    ///    /// </summary>    public class TimeoutChecker ...

  4. oracle约束条件状态

    Oracle完整性约束有一下4种: • DISABLE NOVALIDATE • ENABLE NOVALIDATE • DISABLE VALIDATE • ENABLE VALIDATE   •  ...

  5. 测试Kettle在增量更新的时候是否支持级联——不支持(基于mysql)

    由于LZ很像整理一下如何使用Kettle对一张表进行增量更新的时候, 同时实现对数据库中的其他表也可以实现相关的更新操作. 第一种方法想使用触发器,即在相应的hop之间添加SQL脚本step然后在st ...

  6. OC - 19.GCD

    简介 GCD(Grand Center Dispatch)是Apple为多核的并行运算提出的解决方案,纯C语言 更加适配多核处理器,且自动管理线程的生命周期,使用起来较为方便 GCD通过任务和队列实现 ...

  7. xml有哪些解析技术?区别是什么?

    xml有哪些解析技术?区别是什么? Answer: 有DOM,SAX,STAX等 (1):DOM:处理大型文件时其性能下降的非常厉害.这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且D ...

  8. Python:函数定义

    #!/usr/bin/python3 #函数 def add(a,b): return a+b print("add(2,5) = ",add(2,5)) def add2(a,b ...

  9. hdoj 1251 字典树

    代码: #include <stdio.h>#define  MAX    26 typedef struct TrieNode{     int nCount;      struct ...

  10. 【HOJ2430】【贪心+树状数组】 Counting the algorithms

    As most of the ACMers, wy's next target is algorithms, too. wy is clever, so he can learn most of th ...