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

[1] width:100% 并不包含margin-left  margin-right的属性值,直接取其父容器的宽度加上含margin-left /margin-right的值。如果设置了margin那新的width=width+2*margin(细心观察)就会发现加了  margin相对应的边就会多出设置的空白。而且会多出横向滚动条因为宽度已经超出了屏幕的范围。(这条相对于父容器是body)。

[2] width:auto(auto是width的默认值)包含margin-left/margin-right的属性值。其值包含margin-left /margin-right的值。width:auto总是占据整行!!!这其中margin的值已经包含其中了(也就是一整行)如果要设置margin的值那就用一整行然后减去margin的值就得到了现在的宽度了。减去的这个值就是相应边得空白。显著的特征是这个没有横向滚动条出现也就是宽度没有增加。

[3] 在IE6下显示不正常,但是在IE8和IE9下显示正常,可能是IE8和IE9对width:100%的解析与IE6不同所致,但是两者对width:auto的解析是一致的

---------------------------------------------------------------------------------------------------------------------------------------------------------------

margin-top失效的原因与解决办法:

在css2.1中,水平的margin不会被折叠。 
垂直margin可能在一些盒模型中被折叠: 
1、在常规文档流中,2个或以上的块级盒模型相邻的垂直margin会被折叠。 
最终的margin值计算方法如下: 
a、全部都为正值,取最大者; 
b、不全是正值,则都取绝对值,然后用正值减去最大值; 
c、没有正值,则都取绝对值,然后用0减去最大值。 
注意:相邻的盒模型可能由DOM元素动态产生并没有相邻或继承关系。 
2、相邻的和模型中,如果其中的一个是浮动的(floated),垂直margin不会被折叠,甚至一个浮动的盒模型和它的子元素之间也是这样。 
3、设置了overflow属性的元素和它的子元素之间的margin不会被折叠(overflow取值为visible除外)。
4、设置了绝对定位(position:absolute)的盒模型,垂直margin不会被折叠,甚至和他们的子元素之间也是一样。 
5、设置了display:inline-block的元素,垂直margin不会被折叠,甚至和他们的子元素之间也是一样。 
6、如果一个盒模型的上下margin相邻,这时它的margin可能折叠覆盖(collapse through)它。在这种情况下,元素的位置(position)取决于它的相邻元素的margin是否被折叠。 
a、如果元素的margin和它的父元素的margin-top折叠在一起,盒模型border-top的边界定义和它的父元素相同。 
b、另外,任意元素的父元素不参与margin的折叠,或者说只有父元素的margin-bottom是参与计算的。如果元素的border-top非零,那么元素的border-top边界位置和原来一样。 
一个应用了清除操作的元素的margin-top绝不会和它的块级父元素的margin-bottom折叠。 
注意,那些已经被折叠覆盖的元素的位置对其他已经被折叠的元素的位置没有任何影响;只有在对这些元素的子元素布局时,border-top边界位置才是必需的。 
7、根元素的垂直margin不会被折叠。 
浮动的块级元素的margin-bottom总是与它后面的浮动块级兄弟元素(floated next in-flow block-level sibling)的margin-top相邻,除非那个同级元素使用了清除操作。 
浮动的块级元素的margin-top和它的第一个浮动块级子元素(floated first in-flow block-level child)的margin-top相邻(如果该元素没有border-top,没有padding-top,并且子元素没有使用清除操作)。 
浮动的块级元素的margin-bottom如果符合下列条件,那么它和它的最后一个浮动块级子元素的margin-bottom相邻(如果该元素没有指定padding-bottom或border): 
a、指定了height:auto 
b、min-height小于元素的实际使用高度(height) 
c、max-height大于元素的实际使用高度(height) 
如果一个元素的min-height属性设置为0,那么它所拥有的margin是相邻的,并且它既没有border-top和border- bottom,也没有padding-top和padding-bottom,它的height属性可以是0或auto,它不能包含一个内联的盒模型(line box),它所有的浮动子元素(如果有的话)的margin也都是相邻的。 
当一个元素拥有的margin折叠了,并且它使用了清除操作,那么它的margin-top会和紧随其后的兄弟元素的相邻margin折叠,但结果是它的margin将无法和其块级父元素的margin-bottom折叠。 
折叠操作是以padding、margin、border的值为基础的(即在浏览器解析所有这些值之后),折叠后的margin计算将覆盖已使用的不同margin的值。

转载于:https://www.cnblogs.com/stoninsky/p/3567722.html

css中margin属性的探究相关推荐

  1. HTML5中margin属性应用,CSS中margin属性及其使用探究

    本文向大家描述一下CSS中margin属性的用法,主要包括其属性,使用过程中会遇到的问题,以及一些高级应用等内容,相信本文介绍一定会让你有所收获. CSS中margin问题及使用 margin属性为C ...

  2. html怎么设置左偏移量,CSS中margin属性的偏移量详解(代码示例)

    本篇文章给大家介绍一下CSS中margin属性的偏移量,有感兴趣的朋友可以看一看. 话不多说,我们直接进入正题~ 我们先来看一个具体的例子(相关推荐:CSS学习手册) 代码入下:HTML文件和CSS文 ...

  3. CSS中margin属性详解

    margin属性概述 margin是CSS层叠样式表中用来规定围绕在元素边框周围空白区域范围的属性. 该接受任何长度单位,可以是像素.英寸.毫米或 em. 相关属性 margin 可以单独改变元素的上 ...

  4. css中margin属性值百分比的使用

    margin使我们使用得很频繁的一个属性,用来设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度,可以有 1 到 4 个值.例子:margin:10px 5px 15px 20px; 说明: 属 ...

  5. css margin属性 auto,css中margin:auto属性的使用方法

    css中margin:auto属性的使用方法 发布时间:2020-06-25 10:53:17 来源:亿速云 阅读:221 作者:Leah 今天就跟大家聊聊有关css中margin:auto属性的使用 ...

  6. 在html中设置margin属性,css中margin的4个属性

    CSS中:margin:auto与margin: 0 auto;有什么区别 CSS中:margin:auto与margin: 0 auto;有什么区别.有的网站中写的是前者意思不同.margin:au ...

  7. php中border属性,css中display属性和border属性常遇问题讲解

    本篇文章给大家带来的内容是关于css中display属性和border属性常遇问题讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助.因为HTML很少有太复杂的问题,所以直接写一篇关于 ...

  8. CSS中margin和padding的区别

    padding.margin都是边距的含义,关键问题得明白是什么相对什么的边距.padding是控件的内容相对控件的边缘的边距,margin是控件边缘相对父空间的边距. 在CSS中margin是指从自 ...

  9. html border 边距,css中border-sizing属性的用法

    这篇文章给大家介绍的文章内容是关于css中border-sizing属性的用法,有很好的参考价值,希望可以帮助到有需要的朋友. box-sizing用于更改用于计算元素宽度和高度的默认的 CSS 盒子 ...

  10. 在CSS中clear属性的妙用

    这里向大家描述一下在CSS中clear属性妙用,图片和文字元素出现在另外元素中,那么它们(图片和文字)可称为浮动元素(floatingelement).使用clear属性可以让元素边上不出现其它浮动元 ...

最新文章

  1. HokeyPokey — WWDC讲师特供XCode插件高仿版的设计与实现
  2. Python求解线性方程组
  3. 【Demo】采购订单收货Bapi
  4. linux利用命令重置大量密码
  5. C++(STL):04---智能指针之weak_ptr
  6. Python 程序和 C 程序的整合
  7. 太赞了!性能超越谷歌MobileNet!ECCV2020重磅推出MobileNeXt !
  8. mysql存储过程中删除定时器_mysql创建存储过程,定时任务,定时删除log 莫大人...
  9. java模拟浏览器http请求_java使用HttpClient模拟浏览器请求
  10. 树莓派开启samba服务
  11. linux缓存机制buffer/cache/swap
  12. owncloud个人私有云 一键安装包操作指南
  13. 从Linux服务用命令直接拿文件保存到本机
  14. c语言链栈,链栈 C语言实现
  15. ps 透明底和改变颜色
  16. 为了让你在“口袋奇兵”聊遍全球,java面试代码题
  17. ubuntu无法使用man
  18. AMBA之AHB总线
  19. JavaScript流程控制-循环(循环(for 循环,双重 for 循环,while 循环,do while 循环,continue break))
  20. jam 掘金study_召唤队友 ing!机器学习 Study Jam 第二季课程现已开放

热门文章

  1. Web的Cookies,Session,Application
  2. 数据库中常用使用场景
  3. android 属性翻牌动画,如何在Android中利用TextSwitcher实现一个文字上下翻牌效果
  4. eclipse、EditPlus等编辑器选中列(块)的方法
  5. 计算机组成原理——第四章
  6. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-7.接口配置文件自动映射到属性和实体类配置...
  7. 这次聊聊Promise对象
  8. awk --- 常用技巧
  9. ios判断点击的坐标点
  10. java笔记:SpringSecurity应用(二)