一、元素的块级与行级特性

在CSS属性display控制元素是否及如何显示的特性,常用的值有none、inline、block、inline-block,在CSS3中还有一些新的特性状态,在这里不做讨论。

这里我们主要讨论display在CSS布局中涉及到主要属性值inline、block、inline-block三个特性状态。

通常我们在使用元素做页面布局设计时会说行级元素和块级元素,我们通常也遵循块级元素搭建页面设计架构,使用行级元素和行级块元素设计内容。

 行级元素(内联元素inline)  span  strong  em  a  del

内容决定元素所占位置;不可通过css改变宽高;

 块级元素(block)  div  p  ul  li  ol  form  address

独占一行;可以通过css改变宽高;

 行级块元素(inline-block)  img  内容决定大小,可改变宽高;

元素如何显示的特性是由浏览器根据不同标签,设定的原始值来决定的,但这并不代表元素的显示特性就一成不变了,display的值是可以通过人为修改来改变。但是这样的操作我并不赞同。

元素的display特性凡是具备inline特性值时,也就是行级元素或者行级块元素都有文字特性,这个特性就是在两个元素之间如果存在逻辑上的空格,元素之间就会有文字之间的间隙一样,这个间隙的宽度根据不同浏览器,不同版本而定。单着并不是我们要讨论的问题。

注:我们需要讨论的是因为img标签具备inline特性,而我们在实际开发时通常用来排列图片设计时,会习惯每行一个标签来编辑,因为换行在文本中存在逻辑上的空格,所以在测试的时候元素之间会出现间隙,这并不是bug,这样的空格在我们压缩文件发布时,压缩过程中会清除这些元素之间的逻辑空格。通过压缩后再运行的代码在img之间就不会有空隙了,而我们平时在编辑测试时建议将img回成一行来测试。

二、盒模型

margin(外边距) - 清除边框外的区域,外边距是透明的。

boreder(边框) - 围绕在内边距和内容外的边框。

padding(内边距) - 清除内容周围的区域,内边距是透明的。

content(内容) - 盒子的内容,显示文本和图形。

三、层模型

position属性规定元素的定位类型。

 absolute

生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。

元素的位置通过"left","top","right",以及"bottom"属性进行规定。

 fixed

生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过"left","top","right"以及"bottom"属性进行规定。

 relative

生成相对定位的元素,相对于其正常位置进行定位。

因此,"left:20"会向元素的left位置添加20像素。

 static  默认值。没有定位,元素出现在正常的流中(忽略top,bottom,left,right或z-index声明)。
 inhert  规定应该从父元素继承position属性的值。

absolute:1.脱离原来位置进行定位(即定位到其他位置,原来的位置会被占位,也是元素发生了层变化)。

2.以最近的有定位的父级进行定位,如果没有,则相对于文档进行定位。

relative:  1.保留原来位置进行定位,原来位置不会被占用,也不会发生层变化。

2.相对自己原来的位置进行定位。

开发经验:以relative作为定位参照,用absolute实现定位功能。

.四、经典的BUG与BFC

BFC:block format context ; 块级盒模型

触发盒子的BFC:

position:absolute;        绝对定位

display:inline-block;     元素特性修改为:行级块元素

float:left/right;               元素浮动

overflow:hidden            溢出部分隐藏

1.margin塌陷

现象:子元素与父元素同时设置margin-top时,子元素的margin-top不相对于父级的top位置作用效果,而是相对于浏览器或父级链上有bfc渲染规则的元素作用效果。

解决方法:让父级触发bfc渲染规则

2.margin合并

现象:两个并列的元素,前面的元素设置margin-bottom,后面的元素设置margin-top,取一个大值作为两个元素之间的间隔距离。

解决方法:可以将两个元素嵌套在bfc渲染规则的盒子里面,或则其中一个嵌套在bfc渲染规则的盒子里面。注:这个bug一般不解决,采用数据计算,在一个边距上设置值就可以了。

五、浮动模型(教程:html-css-4.1-48:00)

float:left/right

当两个并列元素,前一个设置了浮动,后一个没有设置,如果后一个是块级元素就会移动到浮动元素的下方(这里不是层模型)。

当浮动元素被父级元素包裹时,父级元素不会被正常撑开,因为子元素的下方法产生了浮动流。父级元素的下边框就看到浮动的子元素了。

浮动元素会产生浮动流:

1.块级元素看不到产生浮动流的元素(会占位到浮动元素的下面)。

2.产生了bfc渲染规则的元素和文本类属性(inline)的元素以及文本都能看到浮动元素(这些元素和文本会排列到浮动元素的后面)。

并列元素间的浮动问题解决方法:bfc渲染规则及可以解决。

父子元素间的浮动问题解决方法:1.采用添加一个标签设置样式clear:both;清除这个标签周边的浮动流(改变页面结构,实际不能用)。2.可以设置父级元素转换成bfc渲染规则。3.可以使用伪元素after替换添加的标签的方法。

element::after{
content:"";//让伪元素生效
clear:both;//清除左右浮动
display:block;//伪元素是行级元素,需要改变它的元素特性为块级元素才能生效。
}

浮动流的就是被设置浮动的元素下方在逻辑上会产生一个浮动流的作用,块级元素看不到并列在前面的浮动元素的和子元素。如果是前面存在并列的浮动元素,块级元素就会移动到浮动元素的下方。如果是子元素被设置了浮动,父级元素就会失去对子元素的约束(下边框无法被子元素撑开)。解决方法上面已给出。

学习总结:CSS(二)块级与行级元素特性、盒模型、层模型、BUG与BFC、浮动模型的更多相关文章

  1. HTML块级、行级元素,特殊字符,嵌套规则

    如果介绍HTML网页基本标签的嵌套规则,首先要说的就是元素的分类.元素可以划分为块级元素和行级元素,块级元素是什么?它可以独占一行,可以设置宽高度,默认是100%:行级元素与之相反,它的内容决定它的宽 ...

  2. css盒模型和块级、行内元素深入理解

    盒模型是CSS的核心知识点之一,它指定元素如何显示以及如何相互交互.页面上的每个元素都被看成一个矩形框,这个框由元素的内容.内边距.边框和外边距组成,需要了解的朋友可以深入参考下 一.CSS盒模型 盒 ...

  3. css盒子模型的深入理解,在块级、行内元素的区别和特性

    css盒子模型用于处理元素的内容.内边距.边框和外边距的方式简称.元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外边距,外边距默认是透明的 ...

  4. 3、第3课CSS块级、行内元素、绝对定位、相对定位、固定位置20150922

    1.块级元素 A:特点: A.1默认显示在父标签的左上角 A.2块级元素默认占满一行(占满整个文档流) B:常见的块级元素 P   h1--h6   ul  li    ol  li   div  h ...

  5. HTML学习二_HTML常用的行级标签,常用实体字符及表单标签

    HTML常用的行级标签(行内元素)不独占一行### 有语义的行内元素 #### HTML链接 a标签 ```angular2html<a href="链接地址">链接文 ...

  6. day001-html知识点总结(-)块级。行内元素区分

    -.行内元素和块级元素的区别与转换: 区别: 1.从形式上看,在标准文档流中,行内元素会水平方向呈线性排列,而块级元素会各占一行,垂着方向排列. 2.在结构使用上,块级元素可以包含行内元素和块级元素, ...

  7. block与inline,inline和inline-block,块级和行内元素,行内替换和行内非替换元素

    block:块级元素默认display属性为block:无论块内内容有多少,总是占满一行: inline:行内元素默认display属性为inline:只占据块内的内容的大小,不会占满一整行: inl ...

  8. CSS HACK tab制表符导致行内元素之间的空隙如何解决

    <!DOCTYPE html> <html lang="zh-CN"><head> <meta name="viewport&q ...

  9. MYSQL 表级锁 行级锁 页面锁区别

    myisam存储引擎默认是表级锁 innodb存储引擎默认是行级锁 DBD存储引擎默认是页面锁   表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发出锁冲突的概率最高,并发度最低.行级锁:开锁大, ...

随机推荐

  1. 【XSY2730】Ball 多项式exp 多项式ln 多项式开根 常系数线性递推 DP

    题目大意 一行有\(n\)个球,现在将这些球分成\(k\) 组,每组可以有一个球或相邻两个球.一个球只能在至多一个组中(可以不在任何组中).求对于\(1\leq k\leq m\)的所有\(k\)分别 ...

  2. MT【310】均值不等式

    (2014北约自主招生)已知正实数$x_1,x_2,\cdots,x_n$满足$x_1x_2\cdots x_n=1,$求证:$(\sqrt{2}+x_1)(\sqrt{2}+x_2)\cdots(\ ...

  3. MT【284】构造函数的导数的两类题型

    第一类: 已知定义在$R$上的奇函数$f(x),f(-1)=0,$当$x>0$时,$xf^{'}(x)-f(x)<0,$则$f(x)>0$的解集为____ 第二类: 已知函数$f(x ...

  4. 【hdu 6172】Array Challenge(数列、找规律)

    多校10 1002 HDU 6172 Array Challenge 题意 There's an array that is generated by following rule. \(h_0=2, ...

  5. 【hihocoder1167】高等理论计算机科学 (重链剖分 +树状数组)

    Descroption 原题链接给你一棵\(~n~\)个点的树和\(~m~\)条链,求两两相交的链有多少对,两条链相交当且仅当有至少一个公共点.\(~1 \leq n, m \leq 10 ^ 5~\ ...

  6. 本文之后都以Vol1来指代

    本文参考文档是<64-ia-32-architectures-software-developer-vol-1-manual>(本文之后都以Vol1来指代),介绍了x86架构的基础.这些基 ...

  7. android 异常信息The specified child already has a parent. You must call removeView() on the child's parent first. 的处理方法

    [Android异常信息]: The specified child already has a parent. You must call removeView() on the child's p ...

  8. 0-1背包 VIOJ1025

    P1025小飞侠的游园方案 请 登录 后递交 标签:[显示标签] 描述 菜虫:你的题目是--我们的情报组织探听到敌人的重要将领--小飞侠星期天会邀他的灵儿妹妹到公园去玩.公园里有很多娱乐项目,可并不是 ...

  9. 通过pycharm将代码push到远程仓库

    现在使用pycharm作为python编辑器的人还是不少,而且,也可以通过pycharm将代码push到远程仓库. 步骤见下面截图: 填上远程仓库地址及克隆到本地的目录 输入远程仓库的账号和密码 修改 ...

  10. Vagrant 中配置局域网端口

    1. 在自己的电脑中想使用Vagrant在局域网中安装centos,并将其ip释放到局域网中提供给自己的机器访问,这种操作需要在VagrantFile中加入如下配置 config.vm.network ...