亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

淺談CSS編程中的定位問題

2024-07-11 08:55:12
字體:
來源:轉載
供稿:網友

當人們剛接觸布局的時候都比較傾向于使用定位的方式。因為定位的概念看起來好像比較容易掌握。表面上你確切地指定了一個塊元素所處的位置那么它就會坐落于那里??墒嵌ㄎ槐饶銊偪吹降臅r候要稍微復雜一點。對于定位來說,有一些東西會絆倒新手,所以在它成為你的慣用技巧前你需要掌握它們。

  一旦你更深入地了解了它是怎么運作的,你就能夠做出一些更棒的事情來。
  CSS盒模型和定位的類型

  為了搞清楚定位首先你得了解CSS盒模型。在上一句中的鏈接是我寫在InstantShift 中的一篇關于盒模型的文章。我在那篇文章做了詳細的講解并會在這篇文章中做一個快速的總結。

  在CSS中,每一個元素都由一個矩形盒子所包含。每一個盒子都會具有一個內容區,內容區被一個內邊距所包裹,內邊距外是盒子的邊框,并且在邊框之外會有一個外邊距用于與其他盒子分隔開來。這些你可以從下面這張圖片看到。
2015710150845319.png (500×308)

 定位模式規定了一個盒子在總體的布局上應該處于什么位置以及對周圍的盒子會有什么影響。定位模式包括了常規文檔流,浮動,和幾種類型的 position 定位的元素。

  CSS position 屬性可以取5種值:

    position: absolute
    position: relative
    position: fixed
    position: static
    position: inherit

  我會在下面對前三個值進行詳細的闡述并簡單地講解一下最后兩個值。

  static 是 position 默認的屬性值。任何應用了 position:static 的元素都處于常規文檔流中。它處于什么位置以及它如何影響周邊的元素都是由盒模型所決定的。

  一個 static 定位的元素會忽略所有 top,right,bottom,left 以及 z-index 屬性所聲明的值。為了讓你的元素能使用任何的這些屬性,你需要先為它的 position 屬性應用這三個值的其中之一: absolute,relative,fixed

  position 值為 inherit 的元素和其他所有屬性的繼承值一樣,元素只是簡單地應用了與父元素一樣的 position 值。
  絕對定位(Absolute Positioning)

  絕對定位的元素會完全地從常規文檔流中脫離。對于包圍它的元素而言,它會將該絕對定位元素視為不存在。就好像 display 屬性被設為 none 一樣。如果你想要保持它所占有的位置而不被其他元素所填充,那么你需要使用其他的定位方式。

  你可以通過 top, right, bottom, 和 left 四個屬性來設置絕對定位元素的位置。但你通常只會設置它們其中的兩個,top 或者 bottom,以及 left 或者 right。默認地它們的值都為 auto。

  弄明白絕對定位的關鍵是知道它的起點在哪里。如果 top 被設置為20px那么你要知道這20px是從哪里開始計算的。

  一個絕對定位的元素的起點位置是相對于它的第一個 position 值不為 static 的父元素而言的。如果在它的父元素鏈上沒有滿足條件的父元素,那么絕對定位元素則會相對于文檔窗口來進行定位。哈!

  關于“相對”這個概念你或許有點迷惑,尤其是還有一個叫相對定位的東西,這是我們還沒有講到的。

  當你在一個元素的樣式上設置 position:absolute 意味著需要考慮父元素,并且如果父元素的 position 值不為 static ,那么絕對定位元素的起點為父元素的左上角位置。

  如果父元素沒有應用除了 static 以外的 position 定位,那么它會檢查父元素的父元素是否有應用非 static 定位。如果該元素應用了定位,那么它的左上角便會成為絕對元素的起點位置。如果沒有則會繼續向上遍歷DOM直到找到一個定位元素或者尋找失敗以到達最外層的瀏覽器窗口。
  相對定位(Relative Positioning)

  相對定位的元素也是根據 top, right, bottom, 和 left 四個屬性來決定自己的位置的。但只是相對于它們原來所處于的位置進行移動。在某種意義上來說,為元素設置相對定位和為元素添加 margin 有點相似,但也有一個重要的區別。區別就是在圍繞在相對定位元素附近的元素會忽略相對定位元素的移動。

  我們可以把它看做是一張圖片的重像從真實的圖片的位置開始進行了一點移動。它原始圖片所占據的位置仍然保留,但我們已經沒法再看到它,只能看到它的重像。這樣就讓元素之間可以進行位置的重疊,因為相對定位元素能夠移動到其他元素所占據的空間中。

  相對定位元素離開了正常文檔流,但仍然影響著圍繞著它的元素。那些元素表現地就好像這個相對定位元素仍然在正常文檔流當中。

  我們無需再追問這個相對的位置是在哪里。因為這個相對位置很顯然是正常的文檔流。相對定位有點兒像為元素添加了 margin ,對相鄰元素來說卻像是什么都沒發生過。但實際上并沒有增加任何的 margin 。
  固定定位(Fixed Positioning)

  固定定位的行為類似于絕對定位,但也有一些不同的地方。

  首先,固定定位總是相對于瀏覽器窗口來進行定位的,并且通過哪些屬性的 top, right, bottom, 和 left 屬性來決定其位置。它拋棄了它的父元素,它就是定位中表現地有點兒反叛。

  第二個不同點是其在名字上是繼承的。固定定位的元素是固定的。它們并不隨著頁面的滾動而移動。你可以告訴元素它所處的位置并永遠不再移動。噢~好像還挺乖巧的。

  在某種意義上說固定定位元素有點兒類似固定的背景圖片,只不過它的外層容器塊總是瀏覽器窗口罷了。如果你在 body 中設置一個背景圖片那么它與一個固定定位的元素的行為時非常像的,只不過在位置上的精度會略少一些。

  背景圖片也不能改變其在第三個維度的大小,也因而帶來了 z-index 屬性。
  打破了平面的 Z-Index

  這個頁面是一個二維平面。它具有寬度和高度。我們活在一個用 z-index 作為其深度的三維的世界當中。這個額外的維度能夠穿越一個平面。
2015710150936774.png (432×380)

由上圖可知,高的 z-index 位于低的 z-index 的上面并朝頁面的上方運動。相反地,一個低的 z-index 在高的 z-index 的下面并朝頁面下方運動。

  沒有的 z-index 的話,定位元素會有點兒麻煩。因為 z-index 能讓一個定位元素位于另一個元素的上方或者下方,這或許能讓你做出點創造性的東西。所有的元素的默認的 z-index 值都為0,并且我們可以對 z-index 使用負值。

  z-index 實際上比我在這里描述的要更加地復雜,但細節寫在了另一篇文章里?,F在只需要記住這個額外維度的基本概念以及它的堆疊順序,另外還要記住只有定位元素才能應用 z-index屬性。
  定位的問題

  對于定位元素來說由幾個比較常見的問題,都值得我們好好了解。

  1.你不能在同一個屬性當中應用定位屬性和浮動。因為對使用什么樣的定位方案來說兩者的指令時相沖突的。如果你把兩個屬性都添加到一個相同的元素上,那么就期望在CSS中較后的那個屬性時你想要使用的吧。

  2.Margin 不會在絕對元素上折疊。假設你具有一個 margin-bottom 為20px的段落。在段落后面是一個具有30px的 margin-top 的圖片。那么段落和圖片之間的空間不會是50px(20px+30px)而是30px(30px > 20px)。這就是所謂的 margin-collapse,兩個 margin 會合并(折疊)成一個 margin。

  絕對定位元素不會像那樣進行 margin 的折疊。這會使它們跟預期的不一樣。

  3.IE在 Z-index 上有一些BUG。在IE 6中 select 元素總是處于堆疊層級的最上方而不管它的 z-index 和其他元素的 z-index 是多少。

  IE 6和IE 7在堆疊層級上又有另外一個問題。IE 6由最外層的定位元素的層級來決定哪一組的元素處于層級的最上面,而不是每一個單獨的元素自身的層級決定。

XML/HTML Code復制內容到剪貼板
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
911国产网站尤物在线观看| 精品国偷自产在线| 91精品视频免费看| 亚洲毛茸茸少妇高潮呻吟| 亚洲福利精品在线| 庆余年2免费日韩剧观看大牛| 亚洲欧美在线看| 成人在线精品视频| 亚洲精品福利在线观看| 欧美在线观看网址综合| 精品久久久久久久久中文字幕| www亚洲精品| 不卡av在线播放| 欧美激情videos| 91在线观看免费观看| 欧美成人免费在线视频| 日日狠狠久久偷偷四色综合免费| 欧美日韩在线第一页| 美乳少妇欧美精品| 国产视频久久久| 久久精品人人爽| 91精品国产高清久久久久久| 91网站在线免费观看| 激情成人在线视频| 亚洲欧美激情四射在线日| 欧美成人免费网| 91最新国产视频| 日韩va亚洲va欧洲va国产| 亚洲日本aⅴ片在线观看香蕉| 日本精品va在线观看| 国产有码一区二区| 成人午夜黄色影院| 亚洲国产天堂网精品网站| 久久久久久久久久久久久久久久久久av| 亚洲国产精品中文| 成年无码av片在线| 美女精品久久久| 深夜成人在线观看| 黑人精品xxx一区一二区| 国产精品露脸av在线| 日韩美女视频中文字幕| 在线视频国产日韩| 超碰精品一区二区三区乱码| 国产精品视频午夜| 国产精品三级久久久久久电影| 九九精品视频在线| 成人免费福利在线| 国产精品美女999| 久久久中精品2020中文| 欧美视频一二三| 国产精品欧美一区二区| 亚洲福利在线看| 欧美日韩综合视频| 亚洲在线免费看| 亚洲视频在线观看| 亚洲午夜精品久久久久久久久久久久| 成人网址在线观看| 91精品国产99久久久久久| 在线成人一区二区| 久久亚洲精品国产亚洲老地址| 欧美日韩高清在线观看| 成人乱人伦精品视频在线观看| 国产成人福利网站| 中文字幕免费精品一区| 欧美综合一区第一页| 91亚洲精华国产精华| 最近2019好看的中文字幕免费| 欧美巨大黑人极品精男| 亚洲精品国产精品国自产在线| 国色天香2019中文字幕在线观看| 国产欧美精品久久久| 青青青国产精品一区二区| 久久久精品中文字幕| 亚洲国产一区二区三区在线观看| 欧美成人国产va精品日本一级| 欧美疯狂xxxx大交乱88av| 91精品啪在线观看麻豆免费| 裸体女人亚洲精品一区| 色噜噜国产精品视频一区二区| 日韩最新中文字幕电影免费看| 免费不卡在线观看av| 亚洲va国产va天堂va久久| 欧美日韩福利电影| 欧美日韩性视频在线| 精品日本美女福利在线观看| 欧美—级高清免费播放| 欧美黄色片免费观看| 亚洲伊人成综合成人网| 91精品国产成人www| 久久视频中文字幕| 亚洲第一区第一页| 国产精品久久色| 亚洲国产精品热久久| 欧美激情欧美激情| 久久精品国产一区| 亚洲国产一区自拍| 亚洲欧美激情四射在线日| 久久久国产一区二区| 亚洲国产成人在线视频| 热99精品里视频精品| 色偷偷av一区二区三区乱| 欧美亚洲视频在线看网址| 国产97色在线|日韩| 热re91久久精品国99热蜜臀| 91精品久久久久久久久久久久久| 国产精品福利在线观看网址| 中文字幕av一区二区三区谷原希美| 欧美午夜精品久久久久久浪潮| 国产精品黄色影片导航在线观看| www.日韩系列| 日韩美女免费线视频| 亚洲成人性视频| 日韩精品在线第一页| 久99九色视频在线观看| 久久久噜噜噜久久久| 国产精品久久久久久久久粉嫩av| 亚洲偷熟乱区亚洲香蕉av| 欧美尤物巨大精品爽| 国产视频久久网| 亚洲欧美变态国产另类| 久久久久亚洲精品国产| 国产精品自产拍在线观| 欧美有码在线观看视频| 尤物精品国产第一福利三区| 欧美丝袜一区二区| 狠狠躁夜夜躁人人爽超碰91| 日韩电影在线观看永久视频免费网站| 成人97在线观看视频| 欧美俄罗斯乱妇| 精品免费在线视频| 久久精品国产亚洲7777| 热久久美女精品天天吊色| 欧美在线播放视频| 国产精品一区二区三区成人| 欧美成人黑人xx视频免费观看| 亚洲一区二区三区乱码aⅴ| 久久久久久久色| 日韩电影视频免费| 91精品中国老女人| 国模极品一区二区三区| 国产日韩欧美视频在线| 成人久久18免费网站图片| 久久久久亚洲精品国产| www日韩中文字幕在线看| 欧美福利视频在线| 亚洲新声在线观看| 国产免费成人av| 一区二区亚洲欧洲国产日韩| 国产中文字幕日韩| 亚洲国产精品久久精品怡红院| 国产在线观看精品一区二区三区| 欧美人与性动交a欧美精品| 麻豆乱码国产一区二区三区| 久久久国产精彩视频美女艺术照福利| 亚洲国产又黄又爽女人高潮的| 国产精品久久久久影院日本| 久久精品人人做人人爽| 国产精品视频1区| 精品视频偷偷看在线观看| 亚洲天堂av在线免费| 亚洲国模精品一区| 777777777亚洲妇女| 亚洲综合中文字幕在线| 欧美专区第一页|