1、元素分为块级元素和行内元素,

块级元素可以设置宽高,会自动换行,并且会发生相邻margin的合并问题。行内元素设置宽和高无效,以水平方向排列,(行内元素,绝对定位,浮动元素不会发生外边距合并)并且垂直方向的margin和padding都是无效的。

2、display

display可以取值为none,inline,inline-block,block,inherit以及table相关的属性,如table,table-cell等,display属性规定元素应该生成的框的类型。

3、float

float可以取值none(默认),left,right,inherit。float浮动是在与原位置在同一水平线上进行向左或向右浮动,会脱离文档流,所以不会撑开父元素的高度,非浮动元素的同辈元素的排版会与浮动元素发生覆盖,但是非浮动元素的内文字会被挤走。

4、position

position可以取值static(默认),relative,absolute,fixed和inherit。static处于正常流,按元素的html排版布局,left,right,top,bottom和z-index无效。relative也是处于文档流中,但它按照自身原来的位置进行定位,进行定位的时候其它元素的位置保持不变,也就是说变得只有它自己。absolute是绝对定位,相对于最近的一个不为static的父元素进行定位,如果没有则相对于根元素html,如果没有设left或者top,则它也会脱离文档流,但是会呆在原来的位置。absolute的定位是相对于父元素的padding定位的,但是不包括border,不管box-sizing是border-box还是content-box。fixed相对于视口(viewport)进行绝对定位,也就是相对于浏览器的窗口,不会随着文档的移动而移动,IE6不支持fixed。

5、相互影响

(1)如果display为none,这是就不产生盒子,所以会忽略position和float,否则
(2)如果position的值为absolute或fixed,float会被转换为none,display会按下表进行转换,否则继续
display转换表
设置值 计算值
inline-table table
inline, run-in, table-row-group, table-column, table-column-group,table-header-group, table-footer-group, table-row, table-cell,table-caption, inline-block block
其他,如list-item 同设定值

(3)如果position不是绝对布局,这时,如果float不为none或者该元素是跟元素,则依旧按上表进行转换。
(4)否则如果,position不是绝对布局,并且float为none不浮动,且不是跟元素,display就取设置值。

6、margin,overflow,padding和position,display,float的影响,其实都是一些BFC的知识,理解了BFC就好了。

(1)position,display,float不会影响padding。
(2)如果父元素设置了overflow为hidden或auto,那么就会消除float不会撑开父布局的问题。
(3)position的定位是相对于父元素的padding进行定位的。
(4)margin外边距的合并问题会受overflow,position,float,以及display的影响。
(5)overflow不一定可以隐藏position:absolute的元素,如果后代元素的包含块是整个视区(通常指浏览器内容可视区域,可以理解为body元素)或者是该容器(定义了overflow的元素)的父级元素时,则不受影响。所以,要想彻底剪裁它的所有子元素,它不但要有overflow:hidden,而且还要作为所有子元素的包含块(position定位)。

相邻的外边距会合并为一个外边距,这里的相邻意味着两个或多个外边距没有被非空内容,padding,border或clear隔开,并且位于普通流中。计算方法,如果都是正值,则取最大者,如果都是负值,取绝对值最大者,如果一正一负,则相加。
相邻的盒模型中,如果其中的一个是浮动的(floated),垂直margin不会被折叠。
设置了overflow属性的元素和它的子元素之间的margin不会被折叠。
设置了绝对定位(position:absolute)的盒模型,垂直margin不会被折叠。
设置了display:inline-block的元素,垂直margin不会被折叠。






position,display,float,overflow,margin,padding之间的相互影响的更多相关文章

  1. css position, display, float 内联元素、块级元素

    position属性:position属性指出一个元素的定位方法.有4种可能值:static, relative, absolute or fixed: static:默认值,元素按照在文档流中出现的 ...

  2. Office WPS如何让页与页之间不相互影响

    在一个页面结束的位置点击插入-分页符,完了之后测试按回车下一页的内容有没有跟着往下跑,如果还是跟着往下跑的,再插入一次分页符,一般插入多次之后就不会跟着跑了,但是插的太多会有空白页面   测试按回车, ...

  3. HTML表格中各元素之间属性之间的相互影响

    开发了一个动态表格制作程序,用的是谷歌浏览器.发现几个现象,记录如下: 1.按照技术文档的说法,正规的表格样式如下: <table> <caption>标题</capti ...

  4. 对CSS中的Position、Float属性的一些深入探讨

    对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个CSS属性,对于这两个属性的使用上面可能大多数人存在一些模糊与不 ...

  5. 装载:对CSS中的Position、Float属性的一些深入探讨

    对CSS中的Position.Float属性的一些深入探讨   对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个 ...

  6. CSS布局 ——从display,position, float属性谈起

    页面布局,或者是在页面上做些小效果的时候经常会用到 display,position和float 属性,如果对它们不是很了解的话,很容易出现一些莫名其妙的效果,痛定思痛读了<CSS Master ...

  7. CSS布局 ——从display,position, float属性谈起(转)

    CSS布局 ——从display,position, float属性谈起   页面布局,或者是在页面上做些小效果的时候经常会用到 display,position和float 属性,如果对它们不是很了 ...

  8. html5的float属性超详解(display,position, float)(文本流)

    html5的float属性超详解(display,position, float)(文本流) 一.总结 1.文本流: 2.float和绝对定位都不占文本流的位置 3.普通流是默认定位方式,就是依次按照 ...

  9. 前端(七)—— 盒模型之display、overflow、隐藏、border、margin、样式支持,层级结构

    display.overflow.隐藏.border.margin.样式支持,层级结构 一.盒模型之display 1.三种样式 block 块 inline 内联/行内 inline-block 内 ...

随机推荐

  1. XML-为XML添加DTD-Schema方法

    以后都按照如下方式为XML添加dtd或者schema 1,一般从源码jar包里找dtd文件,拷贝到自己的本地目录中: 比如mybatis在如下目录中有dtd :~/ mybatis-3.2.2-sou ...

  2. docker应用笔记

    first install it: 首先安装: apt install docker.io 基本概念: 镜像:相当于虚拟机里的磁盘文件,里面有一套配置好的系统,应用程序 容器:相当于一个虚拟机实例,一 ...

  3. 【轉】JS,Jquery获取各种屏幕的宽度和高度

    Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...

  4. angularui 自定义选项卡

    ng-include 选取ng-template <!DOCTYPE html> <html lang="en" ng-app="myApp" ...

  5. css预处理器less和scss之sass介绍(二)

    本来打算整理jQuery Mobile来着,但是没有研究明白,所以接着上个周的继续介绍... [scss中的基础语法]   1.scss中的变量 ①声明变量:$变量名:变量值 $width:100px ...

  6. S3C2440 时钟设置分析(FCLK, HCLK, PCLK)

    时钟对于一个系统的重要性不言而喻,时钟决定了系统发送数据的快慢,高性能的芯片往往能支持更快速度的时钟,从而提供更好的体验. S3C2440的输入时钟频率是12MHZ,对于这款芯片,显然速度是不够的,所 ...

  7. Opengl4.5 中文手册—E

    索引 A      B    C      D     E     F     G H      I     J      K     L     M     N O      P    Q      ...

  8. socket端口外网无法连接解决方法

    用socket做了个程序,本地测试没有问题,发布到服务器上时连接不上,用telnet测试连接失败 服务器上netstat -a 查看端口情况,127.0.0.1绑定端口9300处于监听状态,如下图: ...

  9. shell查找指定时间段内的文件

    #!/bin/bash#20170905 输入参数格式echo "显示"$1"的备份文件"date_0=$1date_1=`expr $date_0 + 1`d ...

  10. 使用jvisualvm远程监控Java程序

    使用Java自带的jvisualvm调试Java程序,可以查看CPU.内存.线程等信息,还可以进行Dump,无疑是一个利器 由于客户端是Windows.服务端是Linux,并且是最小安装的Linux, ...