首頁  >  文章  >  web前端  >  CSS定位position及應用情境實例分析

CSS定位position及應用情境實例分析

小云云
小云云原創
2017-12-13 13:27:133930瀏覽

我們都知道在web頁面開發時,有時我們靈活的運用css的定位postion屬性進行佈局時可以實現很好的效果,本文我們總結了一下position知識點,及平常比較常用的地方,希望對學習css的朋友可以參考。

<script>ec(2);</script>

首先我們對postion屬性進行詳解。

在CSS3中,對於postion是這麼描述的


總結如下:
static 是預設佈局,設定top\left。 。屬性不會有作用。
relative是相對佈局,設定的top\left。 。會相對文件中的控制項。
absolute是絕對定位,設定的top\left。 。會相對整個頁面而定。
fixed是相對瀏覽器視窗定位,設定的top/left屬性,是相對於瀏覽器視窗的位置。

除此之外,經過我程式碼測試:
1.如果top\left。 。其中某屬性缺省,absolute,fixed佈局的位置,會相對於父控制項的位置改變。
2.relative相對定位,如果有父控件,相對的是最近的一個父控件,而非同層最近的一個父控件。其次是兄弟控件。
3.static對其他的遮蓋層沒有影響。

接著我們來透過程式碼證明以上結論:

情況1

HTML:

<p id="zero">
            <p id="one">one</p>
            <p id="two">two</p>
            <p id="tree">tree</p>
</p>

CSS:

        #zero{
                width:200px;
                height: 200px;
                margin: 100px 500px;
                background: black;
    
                z-index: 0;
            }
            #one{
                width: 100px;
                height: 100px;
                position: relative;
                top: 50px;
                left:20px;
                background: red;
                z-index: 1;
            }
            #two{
                width: 100px;
                height: 100px;
                position: absolute;
                top: 190px;
                
                background: yellow;
                z-index: 2;
            }
            #tree{
                width: 100px;
                height: 100px;
                position: fixed;
                top: 250px;
                left: 600px;
                background: deepskyblue;
                z-index: 3;
            }

在此大家可以看出來id為one的p是相對父控制項的佈局。

情況2:

CSS:

         

       
               #first{
               width: 200px;
                height: 200px;
                background: black;
                margin-top: 100px;
                z-index: 1;
            }
            #second{
                margin-top: 10px;
                margin-left:10px;
                width: 150px;
                height: 150px;
                background: yellow;
                z-index:2;
            }
            #thrid{
                width: 100px;
                height: 100px;
                position:relative;
                background: red;
                top: 30px;
                left: 30px;
                z-index: 1;
            }

HTML:

#    <st">

##    <st"># #            0a06f4e826aaedb868e3d411f7313d08
              ,
        94b3e26ee717c64999d7867364b1b4a3

#從這裡可以看出當relative定位是相對最近一個父控制項的,而非同層父控制項。

 

情況3:如果沒有父p:

HTML

<p id="out"></p>
<p id="out1"></p>

CSS



 #out{
                margin-top: 50px;
                width: 200px;
                height: 200px;
                background: black;
                z-index: 1;
            }
            
            #out1{
                width: 200px;
                height: 200px;
                background: yellow;
                position: relative;
                z-index: 3;
                top:10px;
            }


透過這種情況,看出來如果沒有父控件,則relative定位是相對於兄弟關係的控件。

CSS3中對於z-index的描述

position開發中常見應用程式

1.網頁兩側浮動視窗(播放器,置頂按鈕,浮動廣告,功能按鈕等)
2.導覽列浮動置頂。
3.隱藏p實現彈窗功能(透過設定p的定位和z-index控制p的位置和出現隱藏)

 

其中1,3較為簡單,透過簡單的設定position=fixed,以及top left,z-index就能實現,此處不做說明

#情況2:

透過呼叫js函數判斷捲軸所在的位置,超過導航欄距離頂部的高度時就設定position為fix固定導覽列位置,否則position為static,maring等屬性不變。

JS:


   

 var mt = 0;
        window.onload = function () {
            var myp = document.getElementById("myp");
            var mt = myp.offsetTop;
            window.onscroll = function () {
                var t = document.documentElement.scrollTop || document.body.scrollTop;
                if (t > mt) {
                    myp.style.position = "fixed";
                    myp.style.margin = "0";
                    myp.style.top = "0";
                }
                else {
                    myp.style.margin = "30px 0";
                    myp.style.position = "static";
                }
            }        
        }

HTML:


 

 <p class="nav auto myp"  id="myp" style="z-index:2;">
        <ul id="ulnav">
          <li><a href="#">首页</a></li>
          <li><a href="classes.html">班级设置</a></li>
          <li><a href="achievment.html" rel="nofollow" target="_blank">教学成果</a></li>
          <li><a href="techEnviroment.html"  target="_blank">教学环境</a></li>
          <li><a href="specialCourse.html"  target="_blank">特色课程</a></li>
          <li><a href="teacherTeam.html" target="_blank">教师团队</a></li>
          <li><a href="contact.html" target="_blank">联系方式</a></li>
          <li></li>
        </ul>  
      </p>



設定合適的CSS控制自己想要的樣式。

相關推薦:

關於css中的position屬性

#css float 屬性和position:absolute比較

#css:list-style-position的使用與定義

#

以上是CSS定位position及應用情境實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn