css-position

2017-11-25

今天学习了关于html中关于定位这个属性的认识,position共有常用的四个值,分别为position:fixed | static | relative | absolute;下面我们来具体分析这四个值的区别。

###fixed,固定定位:

  • 相对于浏览器视口进行偏移,分为四个方向上的设置left | top | right | bottom,通常四个都设置的话,后两个不会生效。
  • 设置固定定位的元素完全脱离文档流,如果继续给元素设置float属性,不会生效。
  • 设置了定位的元素会改变默认的样式表现,这一点跟float很像,可以认为是display:inline-block;可以设置宽高,不设置时由内容撑开,块标签会失去默认继承父级的宽度,行标签可以设置宽高。
  • 给元素设置了定位后,一定要给元素初始化位置。
  • 相同级别的定位元素,后写的会覆盖前面的,这时候用index属性设置元素的层级,index的值要整10的加,才会符合规范。index=0;的层级高于普通文档流,高于float,与同级的没有设置index定位元素无影响,后设置的覆盖前者。z-index还可以设置负值,例如z-index:-1;此时该元素的文档层级低于普通文档流,低于float元素。

###absolute,绝对定位:

  • 绝对定位跟fixed固定定位大致相同,只有一点,就是若设置绝对定位的元素的父级或以上父级没有设置定位的话,那该元素就会相对于文档的位置进行偏移,若其父级或以上父级设置了定位,那该元素就会相对于父级的位置进行偏移,所以在日常使用中经常给父级元素添加position:relative;语句,既不影响父级元素的样式又可以给该元素设置绝对定位。
  • 除了以上所述,绝对定位的特点跟固定定位一模一样。

###relative,相对定位

  • 相对定位是定位中的一股清流了,设置该定位的元素相对于当前自身的位置进行偏移,其在文档流中所占的位置不会被释放,效果等同于不会脱离文档流,所以他不会对元素的样式有影响。
  • 还有就是它不会改变元素的默认样式,即不会让块级元素变成由内容撑开宽高的元素,更不会让行级元素可以设置宽高。

###static

  • 该定位不经常用,但是经检验,发现它就是position的默认值,不会脱离文档流,跟relative很像。
    好了,今天就这样愉快地结束了,下次聊。