• 定位position


    一、定位

      - 定位可以对页面元素进行微调(页面大都使用float进行布局,定位进行微调)

    - position的属性值:

    static:默认值,元素是静止的,没有开启定位

    relative:相对定位

    absolute:绝对定位

    fixed:固定定位

    sticky:粘滞定位

    二、相对定位(relative)

    2.1 特点

    • 元素开启相对定位后,如果不设置偏移量,元素不会发生任何的变化
    • 相对定位是参照于元素在文档流中的位置进行定位的
    • 相对定位会提升元素的层级
    • 相对定位不会使元素脱离文档流
    • 相对定位不会改变元素的性质:块还是块,行内还是行内

    2.2 偏移量(offset)

    top、bottom、left、right

    三、绝对定位(absolute)

    3.1 特点

    • 开启绝对定位后,如果不设置偏移量,元素的位置不会发生变化
    • 绝对定位会提升元素的层级
    • 绝对定位会使元素脱离文档流
    • 绝对定位会改变元素的性质:块变成行内,行内变成块
    • 绝对定位是相对于其包含块进行定位的

     包含块(containing block):包含块就是离当前元素最近的祖先块元素

    - 决定定位的包含块:

    包含块就是离它最近的开启了定位的祖先元素,

    如果所有的祖先元素没有开启定位,则根元素就是它的包含块

    - html(根元素,初始包含块)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Banner</title>
        <style>
            *{
                margin: 0;
                padding: 0;
                list-style-type: none;
            }
    
            /* 轮播图 */
            .banner-list{
                width: 590px;
                height: 470px;
                /* overflow: hidden; */
                margin-top: 150px;
                margin-left: 300px;
    
                position: relative;
            }
    
            .banner-list li{
                position: absolute;
            }
    
            /* 通过修改元素的层级来显示指定的图片  */
            .banner-list li:nth-child(1){
                z-index: 1;
            }
    
            /* 小圆点 */
            .pointer{
                position: absolute;
                z-index: 9999;
    
                bottom: 20px;
                left: 50px;
            }
    
            .pointer a{
                /* display: block; */
                /* float设置之后脱离文档流,行内元素变为了块元素 */
                float: left;
                width: 10px;
                height: 10px;
                border-radius: 50%;
                background-color: rgba(255, 255, 255, .6);
                
                /*  
                    给a标签添加border
                    这样a:hover整体时不会浮动,
                    缺点:
                    若为其他颜色,则会显示
                    若为transparent,则颜色会由background-color来填充
                    所以,需要使用background-clip来裁剪(只要内容区的即可),
                    但是又占据了border的位置 
                */
                border: 2px solid transparent;
                background-clip: content-box;
    
                margin: 0 2px;
            }
    
            .pointer a:hover{
                background-color: #fff;
                /* 添加了border,使得a标签变大,发生浮动 */
                border: 2px solid rgba(255, 255, 255, .6);
            }
        </style>
    </head>
    <body>
        <!-- 轮播图 -->
        <ul class="banner-list">
            <li><a href="javascript:;"><img src="./img/banner1.jpg"></a></li>
            <li><a href="javascript:;"><img src="./img/banner2.jpg"></a></li>
            <li><a href="javascript:;"><img src="./img/banner3.jpg"></a></li>
            <li><a href="javascript:;"><img src="./img/banner4.jpg"></a></li>
    
            <!-- 小圆点 -->
            <div class="pointer">
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
            </div>
        </ul>
    </body>
    </html>

    三、固定定位(fixed)

    - 参照于浏览器的视口进行参照

    四、粘滞定位(sticky,兼容性不好)

    - 与相对定位的特点基本一致

    - 不同点:粘滞定位可以在元素到达某个时将其固定

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>导航条及粘滞定位</title>
        <style>
            /* 去除不必要的基础样式 */
            *{
                margin: 0px;
                padding: 0px;
                text-decoration: none;
                list-style-type: none;
            }
    
            body{
                height: 1000px;
            }
    
            .nav_bar{
                width: 1210px;
                height: 48px;
                background-color: #E8E7E3;
                /* 整个导航条居中 */
                margin: 0 auto;
                margin-top: 100px;
    
                /* 
                    粘滞定位结合偏移量
                    局限性:浏览器兼容不佳
                 */
                position: sticky;
                top: 10px;
            }
    
            .nav_menu li{
                /* 浮动 */
                float: left;
                width: 150px;
                /* 文字垂直方向居中 */
                line-height: 48px;
                /* 文字水平居中 */
                text-align: center;
                padding: 0 11.33px;
            } 
            
            .nav_menu li a{
                font-size: 18px;
                color: #666;
            }
            
            /* 鼠标经过时,样式的改变 */
            .nav_menu li:hover{
                background-color: black;
            }
            .nav_menu li:hover a{
                color: white;
            }
        </style>
    </head>
    <body>
        <!-- 设置横向导航条 -->
        <nav class="nav_bar">
            <ul class="nav_menu">
                <li><a href="javascript:;">HTML/CSS</a></li>
                <li><a href="javascript:;">Browser Side</a></li>
                <li><a href="javascript:;">Server Side</a></li>
                <li><a href="javascript:;">Programming</a></li>
                <li><a href="javascript:;">XML</a></li>
                <li><a href="javascript:;">Web Building</a></li>
                <li><a href="javascript:;">Reference</a></li>
            </ul>         
        </nav>
    </body>
    </html>

    五、z-index设置层级

    - 对于开启了定位元素,可以通过z-index属性来指定元素的层级

    z-index需要一个整数作为参数,值越大,元素的层级越高

    元素的层级越高越优先显示

    如果元素的层级一样,则优先显示靠下的元素

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>z-index</title>
        <style>
            .box1, .box2, .box3{
                width: 200px;
                height: 200px;
                position: absolute;
            }
    
            .box1{
                background-color: violet;
                z-index: 1;
            }
    
            .box2{
                background-color: rgba(9, 136, 136, 0.726);
                left: 50px;
                top: 50px;
                z-index: 2;
            }
    
            .box3{
                background-color: yellowgreen;
                left: 100px;
                top: 100px;
            }
        </style>
    </head>
    <body>
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
    </body>
    </html>
  • 相关阅读:
    Spring中@Autowired注解与自动装配
    Nginx教程(一)-全面认知
    hadoop-mapreduce 详解
    python with hadoop
    大数据架构与技术选型
    hadoop-集群搭建
    虚拟机Vmware-网络配置
    linux 忘记密码
    高效编程之 小技巧归纳
    kafka 教程(四)-原理进阶
  • 原文地址:https://www.cnblogs.com/nadou/p/13874330.html
Copyright © 2020-2023  润新知