宏观地讲,咱们的web页面和photoshop等设计软件有本质的区别:web页面的制做,是个“流”,必须从上而下,像“织毛衣”。而设计软件,想往哪里画个东西,都能画
标准文档流的特性
1.空白折叠现象(不管多少个空格、换行、tab,都会折叠为一个空格)
2.高矮不齐,底边对齐
3.自动换行,一行写不满,换行写css
行内元素和块级元素的区别:(很是重要)
行内元素git
块级元素web
块级元素和行内元素的相互转换
咱们能够经过display
属性将块级元素和行内元素进行相互转换浏览器
display:inline;
能够把块级元素转换为行内元素display:block;
能够把行内元素转换为块级元素再说一个:display:inline-block;
能够把行内元素或块级元素设置为 行内块元素 ,能够并排显示,而且能够设置块级元素的属性bash
标准流里面的限制很是多,致使不少页面效果没法实现。若是咱们如今就要并排、而且就要设置宽高,那该怎么办呢?办法是:脱离 标准文档流!布局
css中一共有三种手段,使一个元素脱离标准文档流:post
float:left | right | none ;(默认不浮动none)spa
一旦一个元素浮动了,那么,将可以并排了,而且可以设置宽高了。不管它原来是个行内元素,仍是块级元素设计
若是给三个div均设置了float: left;属性以后,而后设置宽高。当改变浏览器窗口大小时,能够看到div的贴靠效果,以下图
code
一样,float还有一个属性值是right,这个和属性值left是对称的。
来一张图,以下:
收缩:一个浮动的元素,若是没有设置width,那么将自动收缩为内容的宽度(这点很是像行内元素) 如图:
若是一个元素没有设置高度,它的高度是靠里面的内容撑起来的。若是父元素内部元素都浮动了,那么会形成父元素的高度塌陷
若是多个元素浮动了,那么这们就会并排显示,若是都是同一个方向的浮动,它们会牢牢地贴在一块儿(本身动手写一下)
若是一个元素浮动了,先向上移动,直到贴靠到父元素的边界,接着,若是是左浮动,就向左移动,直到移动到父元素的左边界,若是是向右浮动,就向右移动,直接移动到父元素的右边界
补充:
元素浮动会形成的影响:
对父元素的影响(父元素的高度坍塌)
解决办法:
加高法
给父元素设置高度,就不会塌陷(简单,基本不用,大部分状况下父元素的高度是须要子元素撑起来的)overflow:hidden
简单,使用overflow:hidden父元素的高度会随着子元素的高度变化而变化。overflow:hidden本职工做是用来处理溢出 在使用过程当中,须要注意子元素若是想要超出父元素高度,此时overflow:hidden就不适合了隔墙法(clear:both)
在全部子元素后面加一个空的div 在这个div上面加clear:both,就能够清除浮动(分为内墙法和外墙法,本质上同样),clear:both是专业清除浮动的
对后面兄弟元素形成的影响(兄弟元素会向上移动)
解决办法:
- 在受影响的元素上面的加 clear:both(参考对父元素的影响)
项目中最经常使用的清除浮动的办法 利用伪元素 after
其实很简单,就是写一个清除浮动的类,哪一个元素想要清除浮动,只需加上 class="clearfix" 就能够,很是简单
清除浮动类的代码:
.clearfix:after{
content="";
display:block;
clear:both;
height:0;
}
复制代码
因为浮动具备破坏性,因此后面就有一个新的Flex布局方案,用起来别提多爽了,绝对让你爽到爆,还简单容易上手,想了解 Flex布局 ,请参考个人文章:Flex 布局教程