CSS定位机制


一.文档流flow

  • 从上到下,从左到右。

  • 1.block元素:

    • 元素独占一行;

    • 元素的height、width、margin、padding都可以设置。

    • 常见的block元素:div、p、h1~h6、ol、ul、table、form

    • 将元素显示为block元素:display:block;

      例:

    a{
        display:block;
    }
    

    inline元素a转为block,从而使a元素具有块状元素的特点。

  • 2.inline元素:

    • 不用单独占用一行;
    • height、width不可设置;
    • width就是它已包含的文字或图片的宽度,不可改变。
    • 常见inline元素:span、a
    • 将元素显示为inline元素:display:inline;
    • inline元素之间有个间距的问题,解决方法:转换为block。
  • 3.inline-block元素:

    • 同时具备inline和block的特点:可平行的block;
    • 不单独占用一行;
    • 元素的height、width、margin、padding都可以设置;
    • 常见的inline-block元素:img
    • 显示为inline-block元素:display:inline-block;
  • 4.相互转换:

    • display:none; 元素不会被显示(不占原位置
    • display:block 显示为block元素
    • display:inline 显示为inline元素
    • display:inline-block 显示为inline-block元素

二.浮动定位float

  • float属性:left、right、none(不浮动);

  • clear属性(清除):left、right、both。


*当有3列都要水平时,将3列都设为左浮动即可。(宽度够用时)

float属性的特点:

  • 当其中一个盒子移动时,其原有位置丢失,并被其他元素占用位置。


*3个盒子并行,当高度不够时:

  • 第一种情况:box3下降
  • 第二种情况:box1较高,box3向左下降时被卡住。

clear属性:

  • 单方向清除浮动的发法:比如将一行的box1和box2变为上下的列关系

    • 使box1位置不变,将box2设为:

    • clear:right; 
      

      意思是清除右侧浮动,使其占据右侧。


  • 双侧清除:

    clear:right;
    

    意思是清楚两侧的浮动,使设置的元素单独占一行。

三.层定位layer

position属性:(相对于谁定位)

  • static: 默认值(没有定位,相当于不是层定位,定位的属性失效)

  • fixed: 固定定位(相对于浏览器窗口定位)

  • relative: 相对定位(相对于原来自己的位置定位),元素会脱离文档流,但在文档流中的位置还在,不会被占据。

  • absolute:绝对定位(相对于static以外的第一个父元素定位),元素脱离文档流,在文档流中的原位置不再存在,会被占据


概述:像图像软件中的图层一样可以对每个layer进行精准定位操作。


当子元素相对于父元素定位,且父元素也相对于其父元素定位。可将最外层用相对定位,里面两层用绝对定位。


*特殊情况;:

对于absolute定位的层,若其父层都未定义absolute或relative,则将会相对body进行定位


relative+absolute:(父相子绝)

  • 父元素box1:position: relative;
  • 子元素box2:position: absolute;
  • 子元素box2:left、right、top、bottom相对于父元素进行偏移定位。

好处:当父元素box1移动时,子元素会相对于父元素的位置进行定位,可以一起移动。

定位的属性:

  • left属性
  • right属性
  • top属性
  • bottom属性
  • z-index属性 (值大在上面)

*当想把图片设为背景,可将z-index设为负数,以留在最底层。




文章作者: polariis
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 polariis !
评论
  目录