zoukankan      html  css  js  c++  java
  • position定位

    学习position,了解一下标准流,定位和参数,实现网页布局和层级

    2.1 文档流

    HTML中的三种布局方式

    1. 标准流
    2. 浮动
    3. 定位

    标准流是网页中默认的布局方式,即顺序布局。

    HTML中的两大元素:

    块级元素有:divH1~H6有序无序列表(ol,ul,li)table表格p段落

    内联元素有:a,span,img,input

    块级元素总是独占一行的,而内联元素是和相邻的元素同在一行,如果一行内宽度不够用,才被挤到下一行

    除了标准流中的布局之外,还有其他的定位方式(position定位和float)

    2.2 position-relative

    position属性的意义

    positon属性决定了元素将如何定位

    通过top、right、bottom、left实现位置的改变

    position中的可选参数:

    static、(是positon属性中的默认值,按照标准流的方式进行正常排列)

    relative、(相对定位,使用了relative的元素处于正常的文档流中,但是可以通过top、right、bottom、left改变元素的位置)

    absolute、

    fixed、

    inherit

    如下所示的代码,使用了relative定位

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .div1 {
                100px;
                height:100px;
                background: red;
                position: relative;
                left: 0;
                top:100px;
            }
            .div2 {
                 100px;
                height: 100px;
                background: blue;
                position: relative;
                left: 0;
                top:-50px
            }
        </style>
    </head>
    <body>
        <div class="div1"></div>
        <div class="div2"></div>
    </body>
    </html>
    

    后写的元素会覆盖先写的元素,后写的带有定位属性的元素大于先写的定位元素的层级。top,left以网页的左上角为原点,后侧,和下侧为正方向;bottom,right以网页的左上角为原点,左侧,和上侧为正方向

    2.3 postion-absolute

    使用了绝对定位的元素,配合使用了top、right、bottom、left参数,元素将脱离正常的文档流,在整个网页中都是可以进行移动定位的。

    没有给test元素设置position为absolute属性的时候,是可以看到body的高度的,设置了之后,就看不到body元素的高度了。

    设置absolute的定位属性,表示已经脱离了文档流。

    当没有设置 test的元素的定位特性(left,top,bottom,right)时候, test元素和bro元素按照标准流的方式排列。

    修改test元素的left和top属性,发现test元素已经可以覆盖到bro元素,并且根据左上角进行定位了。

    left和top属性表示以左上角为原点,开始定位

    right和top属性表示以右上角为原点,开始定位

    left和bottom属性表示以左下角为原点,开始定位

    right和bottom属性表示以右下角为原点,开始定位

    如下代码所示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>postion</title>
        <style>
            * {
                margin:0;
                padding:0;
            }
            .test {
                100px;
                height: 100px;
                background: red;
                position: absolute;
                left: 100px;
                top:50px;
            }
            .bro {
                 100px;
                height: 100px;
                background: blue;
            }
    
            body {
                height:3000px;
            };
    
        </style>
    </head>
    <body>
        <div class="bro"></div>
        <div class="test"></div>
    </body>
    </html>
    

    如下代码所示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>postion</title>
        <style>
            * {
                margin:0;
                padding:0;
            }
            .test {
                100px;
                height: 100px;
                background: red;
                position: absolute;
                left: 0px;
                top:0px;
            }
            .bro {
                 300px;
                height: 300px;
                background: blue;
                margin-left: 200px;
                margin-top: 200px;
            }
    
            body {
                height:3000px;
            };
    
        </style>
    </head>
    <body>
        <div class="bro">
            <div class="test"></div>
        </div>
        
    </body>
    </html>
    

    当带有position属性的定位元素(test元素),的父元素(bro)或者主元素没有定位属性时候(没有positon属性),默认以窗口的左上角为原点进行定位。

    2.3 postion-fixed

    固定定位,即使用了fixed参数的元素,配合top、right、bottom和left属性,元素会脱离正常的文档流,不受制于标准流的约束。在整个窗口进行一段定位,并拥有层级的概念。

    带有固定定位的元素,将在整个窗口进行位置移动。常用的使用场景有:1、对联广告;2、登陆弹窗

    固定位置的元素,将一直保存在固定的位置(左上角),无论窗口怎么移动,如下代码

    任何元素对于固定定位,是没有约束力的,这和绝对定位是有区别的。

    带有fix属性的元素,不管父元素有没有定位的属性,都不受制于父元素。如下代码所示:test元素是不受制于父元素的。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>postion</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            body {
                height: 3000px;
            }
    
            .per {
                 300px;
                height: 300px;
                background: blue;
                position: absolute;
                left: 300px;
                top:300px;
            }
    
            .test {
                 100px;
                height: 100px;
                background: red;
                position: fixed;
                left: 100px;
                top:100px;
            }      
            
        </style>
    </head>
    
    <body>
        <div class="per">
          <div class="test"></div>
        </div>
    </body>
    
    </html>
    

    2.4 postion-inherit

    继承属性,子元素继承父元素的属性,

    如下图代码,父元素(per)设置position为relative。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>postion</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            body {
                height: 3000px;
            }
    
            .per {
                 300px;
                height: 300px;
                background:blue;
                position: relative;
            }
    
            .son {
                 100px;
                height: 100px;
                background: red;
                position: inherit;
                left: 100px;
                top:100px;
            }      
            
        </style>
    </head>
    
    <body>
        <div class="per">
        <div class="son"></div>
        </div>
    </body>
    
    </html>
    

    父元素(per)设置position为fixed之后,子元素也会继承,如下代码。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>postion</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            body {
                height: 3000px;
            }
    
            .per {
                 300px;
                height: 300px;
                background:blue;
                position: fixed;
                left: 200px;
                top: 200px;
            }
    
            .son {
                 100px;
                height: 100px;
                background: red;
                position: inherit;
                left: 100px;
                top:100px;
            }      
            
        </style>
    </head>
    
    <body>
        <div class="per">
        <div class="son"></div>
        </div>
    </body>
    
    </html>
    
  • 相关阅读:
    String的几种初始化方法的区别
    Java编程思想之字符串
    树图 广度优先算法和深度优先算法
    bzoj1047: [HAOI2007]理想的正方形
    bzoj3124: [Sdoi2013]直径
    bzoj3930: [CQOI2015]选数
    bzoj1222: [HNOI2001]产品加工
    bzoj3578: GTY的人类基因组计划2
    bzoj4444: [Scoi2015]国旗计划
    bzoj1040: [ZJOI2008]骑士
  • 原文地址:https://www.cnblogs.com/zdjBlog/p/13821022.html
Copyright © 2011-2022 走看看