CSS进阶六:display,position,float,cl

2020-01-18  本文已影响0人  蘭小木

文档流

文档流
文档流处在网页的最底层,它表示的是一个页面中的位置,
我们所创建的元素默认都处在文档流中
             
元素在文档流中的特点
块元素
    1.块元素在文档流中会独占一行,块元素会自上向下排列。
    2.块元素在文档流中默认宽度是父元素的100%
    3.块元素在文档流中的高度默认被内容撑开
内联元素
    1.内联元素在文档流中只占自身的大小,会默认从左向右排列,如果一行中不足以容纳所有的内联元素,则换到下一行,继续自左向右。
    2.在文档流中,内联元素的宽度和高度默认都被内容撑开  

display

修改元素的类型

可选值:


visibility

设置元素可见性

可选值


overflow

元素溢出内容处理(子元素内容超出父元素)

可选值:


float

特点

  1. 浮动以后完全脱离文档流
  2. 浮动以后元素会一直向父元素的最上方移动
  3. 遇到父元素的边框或其他浮动元素会停止移动
  4. 浮动元素的上边是一个块元素,则浮动元素不会覆盖块元素
  5. 浮动元素不会超过它上边的兄弟元素,最多对齐
  6. 浮动元素不会覆盖文字,文字会自动环绕在浮动元素的周围,可以用过浮动来实现文字环绕的效果。

设置浮动后元素改变:

高度塌陷

父元素在文档流中高度默认是被子元素撑开的,当子元素脱离文档流以后,将无法撑起父元素的高度,也就会导致父元素的高度塌陷

解决方法:

开启BFC

开启BFC后将具有的特性

  1. 父元素的垂直外边距不会和子元素重叠

  2. 开启BFC的元素不会被浮动元素覆盖

  3. 开启BFC的元素可以包含浮动元素

开启方式

  1. 设置元素浮动
  2. 设置元素绝对定位
  3. 设置元素类型为inline-block
  4. 设置overflow:hidden
  5. haslayout,IE6中没有BFC,有类似的haslayout
  1. 使用after伪类操作

     .clearfix:after{
         content:"";
         display:block;
         clear:both;
     }
    
     ie6以下的还需要使用
     .clearfix{
         zoom:1;
     }
    

clear

清除浮动


position

设置元素的定位方式

可选值

relative

  1. 当开启了元素的相对定位以后,而不设置偏移量时,元素不会发生任何变化
  2. 相对定位是相对于元素在文档流中原来的位置进行定位
  3. 相对定位的元素不会脱离文档流
  4. 相对定位会使元素提升一个层级
  5. 相对定位不会改变元素的性质,块还是块,内联还是内联

absolute

  1. 开启绝对定位,会使元素脱离文档流
  2. 开启绝对定位以后,如果不设置偏移量,则元素的位置不会发生变化
  3. 绝对定位是相对于离他最近的开启了定位的祖先元素进行定位的(一般情况,开启了子元素的绝对定位都会同时开启父元素的相对定位)如果所有的祖先元素都没有开启定位,则会相对于浏览器窗口进行定位
  4. 绝对定位会使元素提升一个层级
  5. 绝对定位会改变元素的性质,

fixed

z-index

层级

当元素开启了定位以后,可以通过z-index来设置元素的层级,对于没有开启定位的元素不能使用z-index

定位元素 > 浮动元素 > 文档流中的元素

偏移量

元素开启定位之后可以通过设置偏移量来设置元素偏移位置,需要设置偏移量之后元素才会移动不然还是在原来位置

left

元素距离定位位置的左侧距离

right

元素距离定位位置的右侧距离

bottom

元素距离定位位置的底部距离

top

元素距离定位位置的上边距离


多列(对子元素进行多列分布)

用来制作多列分割的瀑布流

column-count

设置被分割的列数

column-fill

如何填充列

参数:

column-gap

列之间的间隔

column-rule

(简写)

column-rule-color

列之间规则的颜色

column-rule-style

列之间规则的样式

column-rule-width

列之间规则的宽度

column-span

元素应横跨的列数

column-width

列的宽度

/*column-count: 5;*/
column-width: 200px;
column-rule: 5px solid red;
column-gap: 2em;
/*
 当父元素指定高度,
 设置 column-fill: auto; 尽量填充每一列
 设置 column-fill: balance; 均匀填充每一列
*/
height: 1000px;
column-fill: auto;
上一篇 下一篇

猜你喜欢

热点阅读