zoukankan      html  css  js  c++  java
  • css属性—position的使用与页面的分层介绍

      一、引言:

      在css众多属性中,position算是里面用的比较多也相对来说比较重要的属性了,它对于单个标签的“定位”、标签之间的“相对位置定位”还有网页的分层来说十分重要!

      二、“定位的实现”具体介绍

      position属性下常用的有fixed、relative跟absolute方式,其中fixed是实现“固定在浏览器窗口的某个位置”的功能的;而relative单独用没有任何意义,绝大多数情况下都是relative+absolute联合使用的:

      2.1 fixed介绍:

      2.1.1 我们在浏览网页时,通常会看到不论网页怎么上下滚动,右下角总有一个“固定”的“返回顶部”的标签,这个标签就是用fixed做的:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
        <div style=" 50px;height: 50px;background-color: #333333;color: #fafafa;
        position: fixed;
        bottom: 50px;
        right: 50px;">返回顶部</div>
        <div style="height: 5000px;background-color: grey"></div>
    </body>
    </html>
    fixed

      2.1.2 这里还有个例子,我们想实现“网页的头部不随着鼠标滚动一直留在顶部”的效果,这在实际中用的也非常多,具体代码实现如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .pg-top{
                background-color: #333333;
                color:white;
                position:fixed;
                width:100%;
                height:22px;
                top:0;
                text-align: center;
                line-height:22px;
            }
    
            .pg-home{
                background-color:grey;
                color:yellow;
                height: 3333px;
                margin-top:22px ;
                text-align: center;
            }
    
    
        </style>
    </head>
    <body>
        <div class="pg-top">我是顶部</div>
        <div class="pg-home">
            <p>adasd</p>
            <p>adaaasd</p>
            <p>adcccasd</p>
            <p>adavvsd</p>
            <p>adaaasd</p>
            <p>adzzzasd</p>
        </div>
    
    
    </body>
    </html>
    fixed2

    效果如下:

      2.2 relative+absolute介绍

      我们用这种模式绝大多数情况下是实现子类标签相对于父类标签的位置的,看下面的效果就明白了:

      我们要实现上图所示的效果,利用relative+absolute就可以了,实现代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .site-main{
                position: relative;
                border: 1px solid red;
                margin: 0 auto;/*使div居中*/
                height:200px;
                width:500px;
            }
    
            .main-l{
                position: absolute;
                left:0;
                bottom:0;
                width:50px;
                height:50px;
                background-color: yellow;
                border: 1px solid green;
            }
    
            .main-r{
                position:absolute;
                right:0;
                bottom:0;
                width:66px;
                height:66px;
                background-color: aqua;
                border: 1px dashed orangered;
    
            }
    
            .main-m{
                position: absolute;
                right:230px;
                bottom:0;
                width:66px;
                height:66px;
                background-color: fuchsia;
                border: 1px dashed sandybrown;
            }
        </style>
    
    </head>
    
    <body style="margin: 0 auto;">
        <div class="site-main">
            div1
            <div class="main-l">div11</div>
        </div>
        <div class="site-main">
            div2
            <div class="main-r">div21</div>
        </div>
        <div class="site-main">
            div3
            <div class="main-m">div31</div>
        </div>
    
    </body>
    </html>
    relative+absolute

      三、页面分层介绍:

      这里需要注意的是:我们写的网页如果不用position方法默认是在最底层,也就是第一层;如果利用position的fixed方法那么这个标签其实放置在了页面的第二层;如果再想在第二层上面放置一层的话,就要用到z-index了,z-index的值越大标签就在越上层!这里需要与margin属性配合使用进行定位:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .top{
                z-index: 5;/*z-index的值谁大谁在上面*/
                height: 255px;
                background-color: green;
                opacity:1;/*透明度*/
                position: fixed;
                top:0;
                bottom:0;
                left: 0;
                right:0;
            }
    
            .top-top{
                z-index: 10;/*z-index的值谁大谁在上面*/
                height:155px;
                width: 155px;
                background-color: white;
                opacity:1;/*透明度*/
                position: fixed;
                top:50px;
                left: 50%;
                margin-left: -100px;
            }
    
        </style>
    </head>
    <body style="margin:0 auto;">
        <div class="top-top"></div>
        <div class="top"></div>
        <div style="height: 500px;background-color: grey;">dasdas</div>
    
    </body>
    </html>
    页面分层

    效果如下:

      最后需要注意的是:在具体开发时,我们一般都会默认使二三层隐藏(display:none),然后在一定的触发条件下改变二、三层的display值达到相应的效果。

  • 相关阅读:
    LeetCode 40. 组合总和 II(Combination Sum II)
    LeetCode 129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers)
    LeetCode 60. 第k个排列(Permutation Sequence)
    LeetCode 47. 全排列 II(Permutations II)
    LeetCode 46. 全排列(Permutations)
    LeetCode 93. 复原IP地址(Restore IP Addresses)
    LeetCode 98. 验证二叉搜索树(Validate Binary Search Tree)
    LeetCode 59. 螺旋矩阵 II(Spiral Matrix II)
    一重指针和二重指针
    指针的意义
  • 原文地址:https://www.cnblogs.com/paulwhw/p/9199682.html
Copyright © 2011-2022 走看看