CSS定位

Posted 一杯清泉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS定位相关的知识,希望对你有一定的参考价值。

一、相对定位 

        不脱离标准流

position: relative;

        相对自己原来的位置移动,形影分离,本质上真实的位置还在原来的位置,设置margin还是原来位置的margin,移动后的位置是其影子,视觉效果上是移动了。

<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
.box1 
    height: 150px;
    width: 150px;
    background: #61dafb;


.box2 
    position: relative;
    height: 150px;
    width: 150px;
    background: orange;
    margin-top: 50px;
    left: 100px;


.box3 
    height: 150px;
    width: 150px;
    background: dodgerblue;
    margin-top: 20px;

1、相对定位有压盖效果,一般不用作『压盖效果』,作用就两个:

  • 微调元素
  • 绝对定位参考,子绝父相

2、定位:

  • 可以使用left/right来描述盒子右左的移动;
  • 可以用top/bottom来描述盒子的下上的移动;

二、绝对定位

        脱离标准流

position: absolute;

<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
.box1 
    height: 150px;
    width: 150px;
    background: #61dafb;


.box2 
    position: absolute;
    height: 150px;
    width: 150px;
    top: 0;
    background: orange;


.box3 
    height: 150px;
    width: 150px;
    background: dodgerblue;
    margin-top: 20px;

 1、绝对定位和原来的自己的位置没有任何关系

  • 绝对定位脱离标准流,所有标准文档流性质在绝对定位后都不生效了
  • 绝对定位之后,就不区分行内元素、块级元素,直接可设置宽高
     

2、定位

  • 绝对定位的参考点如果使用top描述,定位的参考点就是页面左上角,而不是浏览器左上角,页面滑动,也跟着滑动。
  • 绝对定位的参考点如果使用bottom描述,那么就是浏览器首屏窗口尺寸,对应页面的左下角,浏览器底部缩小,也跟着向上移动。

3、子绝父相

        儿子绝对定位,父亲相对定位:

        儿子设置绝对定位,儿子就跑到父div里面去了。否则会在父布局外面,如果有多个父布局设置相对定位,则以最近的的父布局为参考,例如:

4、不一定是相对定位,任何定位,都可以作为参考点

        子绝父绝: 

        子绝父相、子绝父绝、子绝父固都可以给儿子定位,但是工程上子绝父绝。没有一个盒子在标准文档流里面,所以页面就不稳固,没有任何实战用途,工程上『子绝父相』有意义,父亲没有脱标准,儿子脱标在父亲的范围里面移动。

5、绝对定位居中

        绝对定位脱离标准流,margin:0 auto;失效,居中需要: 

div 
    position: absolute;
    height: 50px;
    width: 1000px;
    background: orange;
    left: 50%;
    margin-left: -500px;
    top: 0;

  • left: 50%;表示位于左边线居中。
  • margin-left: -500px;再拉回一半的自己。

这样就居中了。

三、固定定位

        脱离标准流

position: fixed;

固定在页面,不跟随页面滚动变化,通常用来做顶部通栏的条,回到顶部,广告!

总结:

相对定位不脱离标准流
绝对定位脱离标准流
固定定位脱离标准流

以上是关于CSS定位的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 实现当前页面高亮显示的通栏导航条

css定位

CSS定位

css绝对定位如何水平居中?

[css]《css揭秘》学习-灵活的背景定位

CSS样式之元素的浮动布局