整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          CSS position定位詳解

          CSS position定位詳解

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

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

          靜態定位:

          文檔中默認都是靜態定位


          相對定位:

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

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

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

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

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

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

          簡單理解:

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

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


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

          1) 微調元素

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

          相關屬性

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

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


          絕對定位:

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

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

          簡單理解:

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

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


          固定定位:

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

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

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


          定位問題:

          絕對定位問題:

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

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

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


          相對定位問題;

          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>

          讓層水平居中的方法:

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

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

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

          <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;
          }

          讓層垂直居中的方法:

          位(position)

          如果,說浮動, 關鍵在一個 “浮” 字上面, 那么 我們的定位,關鍵在于一個 “位” 上。

          PS: 定位是我們CSS算是數一數二難點的了,但是,你務必要學好它,我們CSS離不開定位,特別是后面的js特效,天天和定位打交道。不要抵觸它,反而要愛上它,它可以讓我們工作更加輕松哦!

          為什么要用定位?

          那么定位,最長運用的場景再那里呢? 來看幾幅圖片,你一定會有感悟!

          第一幅圖, 小黃色塊可以再圖片上移動:

          第二幅圖, 左右箭頭壓住圖片:

          第三幅圖, hot 再盒子外面多出一塊,更加突出:

          以上三個小地方,如果用標準流或者浮動,實現會比較復雜或者難以實現,此時我們用定位來做,just soso!

          元素的定位屬性

          元素的定位屬性主要包括定位模式和邊偏移兩部分。

          1、邊偏移

          也就說,以后定位要和這邊偏移搭配使用了, 比如 top: 100px; left: 30px; 等等

          2、定位模式(定位的分類)

          在CSS中,position屬性用于定義元素的定位模式,其基本語法格式如下:

          選擇器{position:屬性值;}

          position屬性的常用值

          靜態定位(static)

          靜態定位是所有元素的默認定位方式,當position屬性的取值為static時,可以將元素定位于靜態位置。 所謂靜態位置就是各個元素在HTML文檔流中默認的位置。

          上面的話翻譯成白話: 就是網頁中所有元素都默認的是靜態定位哦! 其實就是標準流的特性。

          在靜態定位狀態下,無法通過邊偏移屬性(top、bottom、left或right)來改變元素的位置。

          PS: 靜態定位其實沒啥可說的。

          相對定位relative(自戀型)

          小笑話: 
          剛剛看到一個超級超級帥的帥哥,看得我都忍不住想和他搞基了。世間怎會有如此之完美的男人。我和他就這樣一動不動的對視著,就仿佛一見鐘情。時間也在這一瞬間停止了。直到我的手麻了。才戀戀不舍的放下鏡子。。。。
          

          相對定位是將元素相對于它在標準流中的位置進行定位,當position屬性的取值為relative時,可以將元素定位于相對位置。

          對元素設置相對定位后,可以通過邊偏移屬性改變元素的位置,但是它在文檔流中的位置仍然保留。如下圖所示,即是一個相對定位的效果展示:

          注意:

          1. 相對定位最重要的一點是,它可以通過邊偏移移動位置,但是原來的所占的位置,繼續占有。
          2. 其次,每次移動的位置,是以自己的左上角為基點移動(相對于自己來移動位置)

          就是說,相對定位的盒子仍在標準流中,它后面的盒子仍以標準流方式對待它。(相對定位不脫標)

          如果說浮動的主要目的是 讓多個塊級元素一行顯示,那么定位的主要價值就是 移動位置, 讓盒子到我們想要的位置上去。

          絕對定位absolute (拼爹型)

          小笑話:
          吃早飯時,老婆往兒子碗里放了兩個煎蛋,兒子全給了我,還一本正經地說:“爸爸,多吃點,男人養家不容易。” <br/>
          我一陣感動,剛想夸他兩句。 
          兒子接著說:“以后全靠你讓我拼爹了!”
          

           [注意] 如果文檔可滾動,絕對定位元素會隨著它滾動,因為元素最終會相對于正常流的某一部分定位。

          當position屬性的取值為absolute時,可以將元素的定位模式設置為絕對定位。

          注意: 絕對定位最重要的一點是,它可以通過邊偏移移動位置,但是它完全脫標,完全不占位置。

          父級沒有定位

          若所有父元素都沒有定位,以瀏覽器為準對齊(document文檔)。

          父級有定位

          絕對定位是將元素依據最近的已經定位(絕對、固定或相對定位)的父元素(祖先)進行定位。

          子絕父相

          這個“子絕父相”太重要了,是我們學習定位的口訣,時時刻刻記住的。

          這句話的意思是 子級是絕對定位的話, 父級要用相對定位。

          首先, 我們說下, 絕對定位是將元素依據最近的已經定位絕對、固定或相對定位)的父元素(祖先)進行定位。

          就是說, 子級是絕對定位,父親只要是定位即可(不管父親是絕對定位還是相對定位,甚至是固定定位都可以),就是說, 子絕父絕,子絕父相都是正確的。

          但是,在我們網頁布局的時候, 最常說的 子絕父相是怎么來的呢? 請看如下圖:

          所以,我們可以得出如下結論:

          因為子級是絕對定位,不會占有位置, 可以放到父盒子里面的任何一個地方。

          父盒子布局時,需要占有位置,因此父親只能是 相對定位.

          這就是子絕父相的由來。

          絕對定位的盒子水平/垂直居中

          普通的盒子是左右margin 改為 auto就可, 但是對于絕對定位就無效了

          定位的盒子也可以水平或者垂直居中,有一個算法。

          1. 首先left 50% 父盒子的一半大小
          2. 然后走自己外邊距負的一半值就可以了 margin-left。
          3. ?

          固定定位fixed(認死理型)

          固定定位是絕對定位的一種特殊形式,類似于 正方形是一個特殊的 矩形。它以瀏覽器窗口作為參照物來定義網頁元素。當position屬性的取值為fixed時,即可將元素的定位模式設置為固定定位。

          當對元素設置固定定位后,它將脫離標準文檔流的控制,始終依據瀏覽器窗口來定義自己的顯示位置。不管瀏覽器滾動條如何滾動也不管瀏覽器窗口的大小如何變化,該元素都會始終顯示在瀏覽器窗口的固定位置。

          固定定位有兩點:

          1. 固定定位的元素跟父親沒有任何關系,只認瀏覽器。
          2. 固定定位完全脫標,不占有位置,不隨著滾動條滾動。

          記憶法: 就類似于孫猴子, 無父無母,好不容易找到一個可靠的師傅(瀏覽器),就聽的師傅的,別的都不聽。

          ie6等低版本瀏覽器不支持固定定位。

          疊放次序(z-index)

          當對多個元素同時設置定位時,定位元素之間有可能會發生重疊。

          在CSS中,要想調整重疊定位元素的堆疊順序,可以對定位元素應用z-index層疊等級屬性,其取值可為正整數、負整數和0。

          比如: z-index: 2;

          注意:

          1. z-index的默認屬性值是0,取值越大,定位元素在層疊元素中越居上。
          2. 如果取值相同,則根據書寫順序,后來居上。
          3. 后面數字一定不能加單位。
          4. 只有相對定位,絕對定位,固定定位有此屬性,其余標準流,浮動,靜態定位都無此屬性,亦不可指定此屬性。

          四種定位總結

          家好,我是IT共享者,人稱皮皮。這篇文章我們來講講CSS的文本樣式。

          一、文本顏色Color

          顏色屬性被用來設置文字的顏色。

          顏色是通過CSS最經常的指定:

          • 十六進制值 - 如"#FF0000"。
          • 一個RGB值 - "RGB(255,0,0)"。
          • 顏色的名稱 - 如"紅"。

          一個網頁的文本顏色是指在主體內的選擇:

          <html>
              <head>
                  <meta charset="utf-8">
                  <meta name="viewport" content="width=640, user-scalable=no">
                  <title>項目</title>
                  <style>
                      body {
                          color: blue;
                      }
          
          
                      h1 {
                          color: #00ff00;
                      }
          
          
                      h2 {
                          color: rgb(255, 0, 0);
                      }
          </style>
              </head>
          
          
              <body>
                  <h2>hello world</h2>
                  <h1>welcome to CaoZhou</h1>
              </body>
          
          
          </html>

          注:對于W3C標準的CSS:如果你定義了顏色屬性,你還必須定義背景色屬性。


          二、屬性

          1. text-align 文本的對齊方式

          文本排列屬性是用來設置文本的水平對齊方式。

          文本可居中或對齊到左或右,兩端對齊。

          當text-align設置為"justify",每一行被展開為寬度相等,左,右外邊距是對齊(如雜志和報紙)。

          <!doctype html>
          <html lang="en">
          
          
              <head>
                  <meta charset="UTF-8">
                  <title>Document</title>
                  <style>
                      h1 {
                          text-align: center;
                      }
          
          
                      p.date {
                          text-align: right;
                      }
          
          
                      p.main {
                          text-align: justify;
                      }
          </style>
              </head>
          
          
              <body>
          
          
                  <p class="date">2015 年 3 月 14 號</p>
                  <p class="main"> 從前有個書生,和未婚妻約好在某年某月某日結婚。到那一天,未婚妻卻嫁給了別人。書生受此打擊, 一病不起。  這時,路過一游方僧人,從懷里摸出一面鏡子叫書生看。書生看到茫茫大海,一名遇害的女子一絲不掛地躺在海灘上。路過一人, 看一眼,搖搖頭,走了。又路過一人,將衣服脫下,給女尸蓋上,走了。再路過一人,過去,挖個坑,小心翼翼把尸體掩埋了。  僧人解釋道, 那具海灘上的女尸,就是你未婚妻的前世。你是第二個路過的人,曾給過他一件衣服。她今生和你相戀,只為還你一個情。但是她最終要報答一生一世的人,是最后那個把她掩埋的人,那人就是他現在的丈夫。書生大悟,病愈。
          
          
                  </p>
                  <p><b>注意:</b> 重置瀏覽器窗口大小查看 "justify" 是如何工作的。</p>
              </body>
          
          
          </html>

          2. text-decoration文本修飾

          text-decoration 屬性用來設置或刪除文本的裝飾。

          從設計的角度看 text-decoration屬性主要是用來刪除鏈接的下劃線:

          <!doctype html>
          <html lang="en">
          
          
              <head>
                  <meta charset="UTF-8">
                  <title>Document</title>
                  <style>
                      .none {}
          
          
                      .del {
                          text-decoration: none;
                      }
          </style>
              </head>
          
          
              <body>
                  <p>原來的樣子</p>
                  <a href="#" class="none">wwwwwwwwwwwwwwwwww</a>
                  <p>去掉下劃線</p>
                  <a href="#" class="del">wwwwwwwwwwwwwwwwwwwww</a>
              </body>
          
          
          </html>

          也可以這樣裝飾文字:

          <html>
              <head>
                  <meta charset="utf-8">
                  <meta name="viewport" content="width=640, user-scalable=no">
                  <title>項目</title>
                  <style>
                      h1 {
                          text-decoration: overline;
                      }
          
          
                      h2 {
                          text-decoration: line-through;
                      }
          
          
                      h3 {
                          text-decoration: underline;
                      }
          </style>
              </head>
          
          
              <body>
                  <h1>This is heading 1</h1>
                  <h2>This is heading 2</h2>
                  <h3>This is heading 3</h3>
              </body>
          
          
          </html>

          注:不建議強調指出不是鏈接的文本,因為這常常混淆用戶。


          3. text-transform文本轉換

          text-transform文本轉換屬性是用來指定在一個文本中的大寫和小寫字母。

          • uppercase:轉換為全部大寫。
          • lowercase:轉換為全部小寫。
          • capitalize :每個單詞的首字母大寫。
          <!DOCTYPE html>
          <html>
          
          
              <head>
                  <meta charset="utf-8">
                  <meta name="viewport" content="width=640, user-scalable=no">
                  <title>項目</title>
                  <style>
                      p.uppercase {
                          text-transform: uppercase;
                      }
          
          
                      p.lowercase {
                          text-transform: lowercase;
                      }
          
          
                      p.capitalize {
                          text-transform: capitalize;
                      }
          </style>
              </head>
          
          
              <body>
                  <p class="uppercase">This is some text.</p>
                  <p class="lowercase">This is some text.</p>
                  <p class="capitalize">This is some text.</p>
              </body>
          
          
          </html>

          4. text-indent文本縮進

          text-indent文本縮進屬性是用來指定文本的第一行的縮進。

          p {text-indent:50px;}

          5. letter-spacing 設置字符間距

          增加或減少字符之間的空間。

          <style>
               h1 {
                 letter-spacing:2px;
          }
                h2 {
                  letter-spacing:-3px;
          }
          </style>

          6. line-height設置行高

          指定在一個段落中行之間的空間。

          <html>
              <head>
                  <meta charset="utf-8">
                  <meta name="viewport" content="width=640, user-scalable=no">
                  <title>項目</title>
                  <style>
                      p.small {
                          line-height: 70%;
                      }
          
          
                      p.big {
                          line-height: 200%;
                      }
          </style>
              </head>
          
          
              <body>
                  <p>
                      This is a paragraph with a standard line-height.<br> This is a paragraph with a standard line-height.<br> The default line height in most browsers is about 110% to 120%.<br>
                  </p>
          
          
                  <p class="small">
                      This is a paragraph with a smaller line-height.<br> This is a paragraph with a smaller line-height.<br> This is a paragraph with a smaller line-height.<br> This is a paragraph with a smaller line-height.<br>
                  </p>
          
          
                  <p class="big">
                      This is a paragraph with a bigger line-height.<br> This is a paragraph with a bigger line-height.<br> This is a paragraph with a bigger line-height.<br> This is a paragraph with a bigger line-height.<br>
                  </p>
          
          
              </body>
          
          
          </html>

          7. word-spacing 設置字間距

          增加一個段落中的單詞之間的空白空間。

          <html>
              <head>
                  <meta charset="utf-8">
                  <meta name="viewport" content="width=640, user-scalable=no">
                  <title>項目</title>
                  <style type="text/css">
                      p {
                          word-spacing: 30px;
                      }
          </style>
              </head>
          
          
              <body>
          
          
                  <p>
                      This is some text. This is some text.
                  </p>
          
          
              </body>
          
          
          </html>

          8. vertical-align 設置元垂直居中

          設置文本的垂直對齊圖像。

          <html>
              <head>
                  <meta charset="utf-8">
                  <meta name="viewport" content="width=640, user-scalable=no">
                  <title>項目</title>
                  <style>
                      img{
                          width: 200px;
                          height: 100px;
                      }
                      img.top {
                          vertical-align: text-top;
          
          
                      }
          
          
                      img.bottom {
                          vertical-align: text-bottom;
          
          
                      }
          </style>
              </head>
          
          
              <body>
                  <p>An <img src="img/logo.png"  /> image with a default alignment.</p>
                  <p>An <img class="top" src="img/logo.png" /> image with a text-top alignment.</p>
                  <p>An <img class="bottom" src="img/logo.png" /> image with a text-bottom alignment.</p>
              </body>
          
          
          </html>

          9. text-shadow 設置文本陰影

          設置文本陰影。

          <html>
              <head>
                  <meta charset="utf-8">
                  <meta name="viewport" content="width=640, user-scalable=no">
                  <title>項目</title>
                  <style>
                   h1{
                      text-shadow: 2px 2px #FF0000;
               }
          </style>
              </head>
          
          
              <body>
              <h1>Text-shadow effect</h1>
              </body>
          
          
          </html>

          三、總結

          本文主要介紹了CSS文本樣式實際應用中應該如何去操作,通過講解文本中對應的屬性去改變文本的表現形式。使用豐富的效果圖的展示,能夠更直觀的看到運行的效果,能夠更好的理解。使用Html語言,代碼結構更佳的清晰,能夠幫助你更好的學習。


          主站蜘蛛池模板: 日韩中文字幕一区| 精品久久久久久中文字幕一区| 精品视频在线观看一区二区三区| 亚洲AV无码一区二区三区性色| 日韩在线视频一区二区三区 | 无码喷水一区二区浪潮AV| 精品三级AV无码一区| 国产精品一区二区AV麻豆| 视频精品一区二区三区| 亚洲av一综合av一区| 国产成人综合亚洲一区| 国产丝袜视频一区二区三区| 国产精品高清一区二区三区不卡| 久久4k岛国高清一区二区| 精品永久久福利一区二区| 日本一区二区三区在线网| 亚洲av综合av一区| 国产精品亚洲一区二区三区 | 久久精品一区二区三区中文字幕 | 国产在线精品一区二区中文| 精品无码人妻一区二区免费蜜桃| 日韩一区二区在线观看| 色婷婷香蕉在线一区二区| 久久精品国产一区二区三| 亚洲一区无码精品色| 国产一区二区三区四| 亚洲AV香蕉一区区二区三区| 一区二区乱子伦在线播放| 一区二区三区在线看| 日韩精品一区二区三区在线观看l 日韩精品一区二区三区毛片 | 国产免费一区二区三区免费视频| 国产精品视频一区二区猎奇| 少妇激情av一区二区| 久久久国产精品亚洲一区| 亚洲一区二区三区首页| 性无码免费一区二区三区在线 | 日韩一本之道一区中文字幕| 精品一区二区三区免费观看| www一区二区三区| 高清一区二区三区视频| 国产一区二区三区高清视频|