整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          CSS position定位詳解

          用CSS有普通流、絕對定位和浮動三種基本的定位機制,如果不是專門指定區(qū)塊的位置都是在普通流中定位,即從上到下一個接一個地排列,位置

          由元素在HTML中的位置決定。

          靜態(tài)定位:

          文檔中默認都是靜態(tài)定位


          相對定位:

          使用相對定位的盒子的位置常以標準流的排版方式為基礎, 然后使盒子相對于它在原本的標準位置偏移指定的距離。

          相對定位的盒子仍在標準流中, 它后面的盒子仍以標準流方式對待它。

          使用relative, 即相對定位, 除了將position屬性設置為relative之外, 還需要指定一定的偏移量,

          水平方向通過left或者right屬性來指定, 垂直方向通過top和bottom來指定。

          使用相對定位的盒子,會相對于它原本的位置,通過偏移指定的距離,到達新的位置。而該相對定位的盒子則仍然位于標準流中,它對父塊沒有任何影響。

          使用相對定位的盒子不僅對父塊沒有任何影響,對兄弟盒子也沒有任何影響。

          簡單理解:

          它是相對于"原來的自己"進行定位, 相對定位元素它還占用空間, 它的層次會比普通元素要高

          相對定位屬性它一般都是用于配合絕對定位來使用


          相對定位有坑, 所以一般不用于做"壓蓋"效果。頁面中, 效果極小。就兩個作用:

          1) 微調(diào)元素

          2) 做絕對定位的參考,子絕父相(配合絕對定位一起使用)

          相關屬性

          可以用left、right來描述盒子右、左的移動;

          可以用top、bottom來描述盒子的下、上的移動。


          絕對定位:

          用絕對定位的盒子以它的"最近"的一個"已經(jīng)定位"的"祖先元素"為基準進行偏移。如果沒有已經(jīng)定位的祖先元素,那么會以瀏覽器窗口為基準進行定位。

          再有,絕對定位的框從標準流中脫離,這意味著它們對其后的兄弟盒子的定位沒有任何影響,其他的盒子就好像這個盒子不存在一樣。

          簡單理解:

          絕對定位元素它是相對于"祖先"定位元素(relative、fixed、absolute),如果絕對定位元素它的祖先沒有定位元素(static)那么它會以當前的瀏覽器窗口來進行定位,

          絕對定位元素不再占用空間


          固定定位:

          當position的屬性值為fixed,即固定定位。它與絕對定位有些類似,區(qū)別主要在于定位的基準不是祖先,而是瀏覽器窗口或其它顯示設備窗口。

          也就是當訪問者拖動瀏覽器的窗口滾動條時,固定定位的元素相對于瀏覽器窗口的位置保持不變。(IE6不支持固定定位)

          簡單理解:它是以瀏覽器窗口作為參照標準來進行定位, 固定定位元素它不再占用空間


          定位問題:

          絕對定位問題:

          當我們給一個子元素設置絕對定位,讓它在父元素的右下角顯示,這個時候

          如果父元素的寬和高都為奇數(shù),那么在IE6下我們沒有方法讓這個子元素壓住邊框的

          這個時候我們建議大家不要使用奇數(shù)作為長度


          相對定位問題;

          IE6下,它認為我們的父元素一定包住它里面的子元素,所以當子元素的寬度和高度大于父元素時,在IE下父元素就會被撐開,

          這個時候我們想解決這個問題,我們可以給父元素設置overflow:hidden,但是此時IE6還是不起作用,

          所以我們解決方法就是給子元素和父元素都設置相對定位


          固定定位的問題:

          當我們給一個固定定位的子元素(子元素position:fixed)的父元素添加相對定位或者絕對定位的時候,

          它是不會跟著父元素移動的,仍然是相對屏幕的。

          實例:導航條

          <!DOCTYPE HTML>
          <html>
          <head>
          <meta http-equiv="content-type" content="text/html" />
          <title>導航條</title>
          <style type="text/css">
          *{
              margin:0px;
              padding:0px;
          }
          ul,li{
              list-style:none;
          }
          .box{
              width:800px;
              height:30px;
              margin:100px auto;
          }
          li{
              float:left;
              width:180px;
              text-align: center;
              line-height:28px;
              border:1px solid red;
              margin-left:-1px;
          }
          li:hover{
              border:1px solid green;
              position:relative; /* 解決邊框被壓住問題 解釋:后面的li壓住前面一個li,使用相對定位后,提高了li顯示高度 */
          }
          </style>
          </head>
          <body>
          <div class="box">
          <ul>
          <li>HTML+CSS</li>
          <li>javascript</li>
          <li>jquery</li>
          <li>php</li>
          </ul>
          </div>
          </body>
          </html>

          讓層水平居中的方法:

          讓左右邊界自動判斷之下,即可達成左右位置呈現(xiàn)居中的目的。

          #content {
              width: 980px;
              margin-right: auto;
              margin-left: auto;
              position: relative;
          }
          <div id="content">層內(nèi)容</div>

          若內(nèi)容區(qū)<div>之內(nèi)還有其他內(nèi)容<div>,其CSS屬性設置就需要加上"定位"position:absolute(或relative),以防firefox等其他瀏覽器出現(xiàn)錯誤

          <div id="container">
          <div id="content">
          </div>
          </div>
          #container {
              background-image: url(images/3-2-1-bg.jpg);
              height: 400px;
              width: 800px;
              position: relative;
              background-repeat: no-repeat;
              margin-right: auto;
              margin-left: auto;
          }
          #content {
              margin: 75px;
              height: 210px;
              width: 610px;
              padding: 20px;
              border: 1px solid #FFF;
              position: absolute;
          }

          讓層垂直居中的方法:

          :點擊上方"藍色字體"↑ 可以訂閱噢!

          摘要 51RGB官方微信position是CSS中非常重要的一個屬性,通過position屬性,我們可以讓元素相對于其正常位置,父元素或者瀏覽器窗口進行偏移。postion也是初學者容易搞不清楚狀況的一個屬性,本文將從最基礎的知識講起,談談關于positon屬性的一些理論與應用。

          基礎知識

          postion屬性我們成為定位,它有4個不同類型的定位,這些類型會影響元素的生成方式,下面我們詳細說明position屬性。

          position四種類型

          (1)static

          static是position屬性的默認值,默認情況下,塊級元素和行內(nèi)元素按照各自的特性進行顯示

          (2)relative

          relative翻譯成中文稱相對定位,設置了這個屬性后,元素會根據(jù)top,left,bottom,right進行偏移,關鍵點是它原本的空間仍然保留。我們看下面例子:

          HTML代碼

          1

          2

          3

          <div class="relative">

          </div>

          <div></div>

          CSS代碼

          CSS

          1

          2

          div { background: #0094ff; width: 250px; height: 100px; }

          .relative { background: #ff6a00; position: relative; width: 200px; height: 100px; top: 20px; left: 50px; }

          效果圖

          relative效果

          在這個例子中,div.relative相對定位,并且left設置為20px,left設置為50px,其相對于父元素進行偏移,并且原本的空間也占據(jù)著,下面的元素并不會頂替上去。

          (3)absolute

          元素設置成absolute后會脫離文檔流,并且不占有原本的空間,后面的元素會頂替上去,而且不論元素是行內(nèi)元素還是塊級元素,都會生成一個塊級框,也就是例如行內(nèi)元素span設置了absolute后就可以設置height和width屬性了。看下面例子:

          HTML代碼

          1

          2

          3

          <span class="absolute">

          </span>

          <div></div>

          1

          2

          div { background: #0094ff; width: 250px; height: 100px; }

          .absolute { background: #ff6a00; position: absolute; width: 200px; height: 100px; top: 20px; left: 50px; }

          效果圖

          absolute效果

          如圖所示,span標簽被設置成絕對定位,就可以設置height和width屬性,而且不占有原本的空間,后面的div元素會頂替上去。

          (4)fixedfixed的表現(xiàn)方式類似于absolute,但是相比于absolute相對于不確定的父元素進行偏移,fixed就是相對于瀏覽器窗口進行偏移

          包含塊

          在詳解CSS float屬性中我們提到包含塊這個概念。對于position屬性也有包含塊這個屬性,它要分幾種情況來討論:

          1.根元素的包含塊,根元素一般是html元素,有些瀏覽器會使用body作為根元素,大多數(shù)瀏覽器,初始包含塊是一個視窗大小的矩形

          2.非根元素的包含塊,如果該元素的position是relative或static,它的包含塊是最近的塊級框,表的單元格或行內(nèi)塊的內(nèi)容邊界

          我們舉例進行說明,

          HTML代碼

          1

          2

          3

          4

          5

          6

          <div>

          我是父級元素的內(nèi)容

          <div class="relative">

          相對定位元素

          </div>

          </div>

          包含塊

          這是相對定位元素的包含塊,為最近的塊級框,表的單元格或行內(nèi)塊的內(nèi)容邊界,相對定位元素相對于其包含塊進行偏移,我們可以簡單理解為相對于其原來的位置進行偏移。

          3.非根元素的包含塊,如果該元素的position是absolute,則包含塊為最近的position不是static的祖先元素。簡單來說,它的包含塊會從父級元素一直向上查找,找到第一個position不是static的元素為止。

          偏移屬性

          前面的例子中已經(jīng)涉及到偏移屬性,它指的是元素相對于其包含塊的偏移,我們稱其為偏移屬性,分別是top,bottom,left,right,依次代表上下左右。他們的值可以是具體的數(shù)值,也可以是百分比。如果是百分比,top和bottom是相對于包含塊高度的百分比,left和right是相對于寬度的百分比。它們也可以設置負值,即有可能將元素移動到包含塊的外邊。

          絕對定位

          接下來我們了解一下絕對定位的詳細細節(jié)。

          基本的絕對定位

          一個元素被設置為絕對定位時,會脫離文檔流,然后相對其包含塊進行偏移。

          一般來說,我們會將一個元素設置為relative來作為absolute元素的包含塊,我們看看下面的例子:

          HTML代碼

          1

          2

          3

          4

          5

          6

          7

          8

          9

          10

          11

          12

          13

          14

          <div class="absolute">

          相對于初始包含塊定位

          </div>

          <br />

          <br />

          <br />

          <br />

          <br />

          <br />

          <div class="relative">

          <div class="absolute">

          相對于最近relative祖先元素定位

          </div>

          </div>

          1

          2

          3

          div { background: #0094ff; width: 250px; height: 100px; }

          .relative { background: #ff6a00; position: relative; width: 200px; height: 100px; top: 20px; left: 50px; }

          .absolute { background: #988c8c; position: absolute; width: 200px; height: 100px; top: 20px; left: 50px; }

          效果圖

          基本的絕對定位

          如圖所示,有兩個絕對定位元素,第一個元素沒有position不是static的祖先元素,所以它的包含塊是body,根據(jù)body進行偏移,第二個絕對定位元素設置了一個relative的父元素,它根據(jù)父元素進行偏移。

          絕對定位的重疊問題

          元素設置成絕對定位后會脫離文檔流,并且失去占用的空間,而且如果偏移的位置接近,會造成重疊問題。看看下面的例子:HTML代碼

          1

          2

          3

          4

          5

          6

          7

          8

          <div class="relative">

          <div class="absolute">

          相對于最近relative祖先元素定位1

          </div>

          <div class="absolute light">

          相對于最近relative祖先元素定位2

          </div>

          </div>

          1

          2

          3

          4

          div { background: #0094ff; width: 250px; height: 100px; }

          .relative { background: #ff6a00; position: relative; width: 500px; height: 300px; top: 20px; left: 50px; }

          .absolute { background: #988c8c; position: absolute; width: 200px; height: 100px; top: 20px; left: 50px; }

          .light { background: #f3d6d6; top: 70px; left: 80px; }

          效果圖

          絕對定位的重疊問題

          我們可以看到,第二個絕對定位元素蓋住了第一個元素,那怎么讓第一個元素蓋住第二個元素呢,這就要用到z-index屬性,這個屬性表示元素的疊加順序,默認情況下,z-index為0,數(shù)值越高的元素層級越高,就可以蓋住低于其層級的元素,我們設置第一個原色的z-index為10,結(jié)果如下

          絕對定位的重疊問題

          如果兩個元素的層級相同,則越后面的元素會覆蓋前面的元素,默認情況下,第二個元素就會蓋住第一個元素。

          固定定位

          fixed定位很簡單,類似與absoulte,但是它的包含塊就是瀏覽器窗口,相對來說簡單很多。常見的應用比如固定導航,回到頂部。在這里不再贅述,大家可以查找相關資料。

          相對定位

          relative定位的元素進行偏移后,不會脫離文檔流,還有占據(jù)原本的空間。除此之外,我們還要注意一個細節(jié):如果元素設置了margin為負值之后發(fā)生重疊的情況下,相對定位的元素會覆蓋普通元素。我們看看下面的例子:HTML代碼

          1

          2

          3

          4

          5

          6

          <div class="no-relative">

          未相對定位的元素

          </div>

          <div class="minus-margin">

          負margin元素

          </div>

          1

          2

          3

          4

          div { background: #0094ff; width: 250px; height: 100px; }

          .no-relative { background: #ff6a00; width: 200px; height: 100px; }

          .relative { background: #ff6a00; width: 200px; height: 100px; position: relative; }

          .minus-margin { margin-top: -30px; }

          效果圖

          未相對定位時沒有覆蓋

          默認情況下,兩個元素都是正常的元素,設置了負的margin屬性后,后面的元素會覆蓋前面的元素,我們修改第一個元素的class為relative,可以看到效果如下:

          相對定位時覆蓋

          添加了相對定位后,第一個元素就會覆蓋其他正常的元素了。

          relative屬性最經(jīng)常的一個應用應該是作為absolute元素的包含塊了,為了限制absolute元素的偏移位置,常常設置其父元素為relative來作為其包含塊。

          應用舉例

          position的應用非常頻繁,下面我來說說常見的一些場景:

          產(chǎn)品標簽

          在電商網(wǎng)站中,我們常常可以看到產(chǎn)品的左上角或右上角有一些比如“新品”,“促銷”,“熱賣”等標簽,比如下圖:

          產(chǎn)品標簽

          這個是怎么實現(xiàn)的呢,我們來模擬一下:HTML代碼:

          1

          2

          3

          4

          5

          6

          <div class="product">

          我是產(chǎn)品

          <span class="hot">

          熱賣

          </span>

          </div>

          CSS代碼:

          CSS

          1

          2

          .product { width: 150px; height: 150px; background: #0094ff; position: relative; }

          .hot { position: absolute; right: 10px; top: 10px; width: 40px; height: 20px; background: #ff6a00; text-align: center; }

          效果如下:

          產(chǎn)品標簽

          如圖所示,右上角有一個標簽。原理很簡單,就是設置父元素相對定位,標簽元素絕對定位,然后相對于父元素偏移到右上角。

          自動完成框

          自動完成框是一個非常常見的應用,其生成的下拉菜單也是用到了position屬性。我們先看看下面的效果:

          自動完成輸入框

          這是一個很簡單常見的下來自動完成框,我們來看看它的HTML和CSS代碼:HTML代碼

          1

          2

          3

          4

          5

          6

          7

          <input class="search-box" type="text" placeholder="請輸入關鍵字" value="position" />

          <ul style="left:58px;">

          <li>position屬性</li>

          <li>position應用</li>

          <li>position是什么</li>

          <li>position翻譯</li>

          </ul>

          1

          2

          3

          4

          .search-box { border: 1px solid #ccc; width: 200px; padding: 5px; height: 24px; margin-left: 50px; }

          ul, li { list-style-type: none; }

          ul { border: 1px solid #ccc; width: 210px; position: absolute; }

          li { padding: 5px; }

          這個原理也很簡單,通過設置下拉菜單為絕對定位,然后設置其left屬性與輸入框?qū)R。

          當然position的應用還有很多,比如布局,比如fixed可以用來做固定導航菜單,網(wǎng)頁右下角的固定菜單等,有興趣的同學可以自行查找相關資料進行學習。

          總結(jié)

          position屬性是一個容易讓初學者迷惑的屬性,尤其是absolute和relative的應用。要用好它們,首先要從absolute和relative的基本特性開始了解,理解了他們的特性之后應用起來就得心應手了,了解基本原理后,多多寫幾個例子從實踐中去體會它們的特性,慢慢的就會熟悉了。

          想認識志同道合的朋友一起學習web

          加入我們的學習QQ群 19066743

          豐富的學習資源,周一到周四免費直播公開課

          長按圖片,識別二維碼即可入群

          你可能感興趣的精彩內(nèi)容

          微信:UI設計自學平臺加關注

          長按關注:《UI設計自學平臺》

          SS所提供的Position定位屬性在進行網(wǎng)頁頁面布局過程中非常重要,通過使用Position定位屬性可以實現(xiàn)對頁面元素進行精確定位,最終達到較好的設計及頁面展示效果。本文主要針對Position屬性設計教學案例,實現(xiàn)教學。

          CSS學習教程


          Position定位屬性

          Position定位屬性為設計人員提供5類定位模式,分別為static靜態(tài)定位、relative相對定位、absolute絕對定位、fixed固定定位及sticky磁鐵定位模型。其中較常使用的是相對定位、絕對定位與固定定位三種模式。

          1. static靜態(tài)定位:該定位模式為HTML元素默認定位形式,各類元素按照文檔流對象模型正常排列。使用static定位是,top,left,right,bottom屬性無效。
          2. relative相對定位:該定位模式是指相對自身位置定位(可以理解為相對默認位置進行定位),通過使用top,left,right,bottom屬性實現(xiàn)偏移,該定位模式不會影響正常文檔流,即其他元素位置相對默認位置不變。在DIV嵌套時可以對父層使用該屬性為子層絕對定位提供祖先。
          3. absolute絕對值定位:該定位形式將其最近定位的元素確定為祖先元素,參照祖先元素位置實現(xiàn)定位。如果祖先元素沒有任何定位的話,則以body為祖先元素進行定位。該定位模式將使得被定位元素脫離文檔流。即不保留默認情況下該元素位置。
          4. fixed固定值定位:該定位模式相對于視口進行定位,定位元素不會隨著滾動條的滾動而滾動。與absolute定位的最大區(qū)別在于absolute是相對body內(nèi)容區(qū)域進行的定位,會隨著滾動條滾動而滾動。

          以上給出了position屬性常用的定位方式,在實際進行頁面設計及元素布局過程中可以使用以上屬性實現(xiàn)元素的精確定位。


          定位實例

          為演示定位屬性使用,本文設計制作上海世界技能大賽選手證,要求學生使用HTML進行選手證的設計及編碼實現(xiàn)。要求:

          1. 選手證需要包含四個DIV層,分別用于表示背景框架層、頂部Logo層、選手照片層及選手信息層;
          2. 使用定位屬性實現(xiàn)各層的精確定位;

          本例設計要求如上所示,設計實現(xiàn)參考效果如下所示:

          參賽證設計樣式

          參賽證設計樣式描述如上圖所示,基本元素來自世界技能大賽上海網(wǎng)站,主要logo包含上海世賽標識LOGO、選手照片與選手信息。所需素材如下:

          案例所需素材


          實現(xiàn)代碼

          本例實現(xiàn)代碼如下所示:

          CSS樣式文件

          頁面body部分

          本例實現(xiàn)代碼如上所示,其中CSS樣式部分用于實現(xiàn)div布局樣式,頁面body部分為頁面呈現(xiàn)內(nèi)容。本例父元素使用relative屬性進行定位,所有子元素均以父元素為基礎使用absolute進行精確定位。


          本頭條號長期關注編程資訊分享;編程課程、素材、代碼分享及編程培訓。如果您對以上方面有興趣或代碼錯誤、建議與意見,可在評論區(qū)回復。更多程序設計相關教程及實例分享,期待大家關注與閱讀!如需完整案例代碼請關注并私信作者。


          主站蜘蛛池模板: 精品人妻中文av一区二区三区| 无码人妻精品一区二区蜜桃AV| 一区二区三区亚洲视频| 任你躁国语自产一区在| 青青青国产精品一区二区| 国产精品香蕉在线一区| 夜夜高潮夜夜爽夜夜爱爱一区| 国产肥熟女视频一区二区三区| 日韩精品无码人妻一区二区三区 | 午夜视频在线观看一区| 好吊妞视频一区二区| 丰满岳妇乱一区二区三区| 上原亚衣一区二区在线观看| 精品一区二区三区免费| 蜜桃传媒一区二区亚洲AV| 国产成人精品一区在线| 中文字幕一区二区三区在线观看| 亚洲欧美一区二区三区日产| 日韩精品人妻av一区二区三区| 国产一区二区精品| 成人精品一区二区电影| 中日av乱码一区二区三区乱码| 国产福利一区二区三区在线观看| 日韩a无吗一区二区三区| 久久亚洲综合色一区二区三区| 中文字幕av人妻少妇一区二区| 国产一区二区三区不卡在线观看| 久久久久久综合一区中文字幕| 国产av一区最新精品| 无码一区二区三区在线观看| 波多野结衣在线观看一区| 日本道免费精品一区二区| 亚洲.国产.欧美一区二区三区 | 中文字幕色AV一区二区三区| 欧亚精品一区三区免费| 国偷自产一区二区免费视频| 精品在线视频一区| 中文字幕日韩精品一区二区三区 | 久久精品视频一区二区三区| 狠狠爱无码一区二区三区| 国产美女在线一区二区三区|