• position属性详解


    内容:

    1.position属性介绍

    2.position属性分类

    3.relative相对定位

    4.absolute绝对定位

    5.relative和absolute联合使用进行定位

    6.fixed固定定位

    1.position属性介绍

    position 属性规定元素的定位类型

    这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移

    position的值有:absolute、relative、fixed、static、inherit

    2.position属性分类

    position属性如下:

     1 position 属性用于元素定位:
     2     static            默认
     3     relative          相对定位,相对于自己本来应该在的位置  
     4     absolute          绝对定位,行为有点奇怪
     5     fixed             固定定位,基于 window 的绝对定位, 不随页面滚动改变
    6 非 static 元素可以用 top left bottom right 属性来设置坐标 非 static 元素可以用 z-index 属性来设置显示层次
    7 relative 是相对定位(相对自身定位) absolute 完全绝对定位, 忽略其他所有东西, 往上浮动到 非 static 的元素

    3.relative相对定位

    position:relative -> 相对定位(偏离自身)

    relative相对定位:相对定位是相对于该元素的原始位置,即以自己原始位置为参照物。即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置(不脱离文档流);另外relative相对定位依据top,right,bottom,left等属性偏移位置,其层叠通过z-index属性定义

    注:position:relative的一个主要用法:方便绝对定位元素找到参照物

    实例:显示平方

     1 HTML:
     2 <h3>relative实现相对定位</h3>
     3 <div class="relative">
     4     <div class="double">
     5           E = MC<span class="square">2</span>是质能公式
     6     </div>
     7 </div>
     8 
     9 CSS:
    10 .relative .square {
    11     position: relative;
    12     top: -7px;
    13     left: 0;
    14     color: black;
    15     font-size: 15px;
    16 }

    实现效果如下:

    4.absolute绝对定位

    position: absolute -> 绝对定位

    absolute绝对定位:将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块(就是它前面的div并没有设置定位的属性),则相对于body元素,即相对于浏览器窗口

    被设置了绝对定位的元素,在文档流中是不占据空间的,如果某元素设置了绝对定位,那么它在文档流中的位置会被删除;

    我们可以通过z-index来设置它们的堆叠顺序 。

    绝对定位使元素脱离文档流,因此不占据空间 ,普通文档流中元素的布局就当绝对定位的元素不存在时一样,仍然在文档流中的其他元素将忽略该元素并填补他原先的空间。因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其他元素。  

     

    5.relative和absolute联合使用进行定位

    position: relative/absolute -> 联合使用进行相对定位  这个实际上就是absolute的大部分情况下的作用

    联合定位实例效果如下(改变页面大小后红色box还在原来的相对位置上):

    代码如下:

     1 HTML:
     2 <div class="relative-absolute">
     3     <div class="item">
     4         <div class="box left-bottom"></div>
     5     </div>
     6     <div class="item">
     7         <div class="box right-bottom"></div>
     8     </div>
     9     <div class="item">
    10         <div class="box right-top"></div>
    11     </div>
    12 </div>
    13 
    14 CSS:
    15 .relative-absolute .item{
    16     height: 150px;
    17     border: 1px solid red;
    18     margin-bottom: 15px;
    19     position: relative;
    20 }
    21 .relative-absolute .item .box{
    22     height: 50px;
    23     width: 50px;
    24     background: #ff6f9a;
    25     position: absolute;
    26 }
    27 .left-bottom{
    28     left: 0;
    29     bottom: 0;
    30 }
    31 .right-bottom{
    32     right: 0;
    33     bottom: 0;
    34 }
    35 .right-top{
    36     right: 0;
    37     top: 0;
    38 }

     
    总结:参照物用相对定位(relative),子元素用绝对定位(absolute),并且保证相对定位参照物不会偏移即可

    6.fixed固定定位

    position:fixed -> 固定在页面某个位置

    fixed元素以浏览器窗口为参考物,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,元素不会随着滚动,其层叠通过z-index属性定义

    注:

    • 一个元素若设置了fixed; 则其不能设置float。因为这是两个不同的流:浮动流与定位流,但relative可以因为它原本所占的空间仍然占据文档流       
    • 在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置
    • 常见的烦人的那些广告以及返回顶部大部分都是使用fixed做的

    返回顶部代码:

     1 HTML:
     2 <div class="return-top">
     3     <a href="#top">返回顶部</a>
     4 </div>
     5 
     6 CSS:
     7 .return-top {
     8     position: fixed;
     9     right: 0;
    10     bottom: 50px;
    11     width: 66px;
    12     padding: 5px;
    13     border: 1px solid orangered;
    14 }
    15 
    16 a {
    17     color: #00b9ff;
    18     text-decoration: none;
    19 }

    补充:

    脱离文档流3种方式:

    • float
    • absolute
    • fixed
  • 相关阅读:
    JavaScript函数节流与函数去抖
    AngularJS 中文资料+工具+库+Demo 大搜集
    一个意想不到的Javascript内存泄漏
    mac添加Chromedriver
    selenium3+python自动化1——input标签上传文件
    python笔记1——xml文件的创建,读写,与增删改查
    C# 单例模式
    java的byte数组转换成在[0,255]范围内
    【转载】Stack Overflow: The Architecture
    C# 号码归属地查询算法(根据Android来电归属地二进制文件查询修改)
  • 原文地址:https://www.cnblogs.com/wyb666/p/9443662.html
Copyright © 2020-2023  润新知