久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

詳述css中的百分比值

詳細理解css中的百分比值的含義

來源于:

https://segmentfault.com/a/1190000000590998

要理解諸如100%這樣的百分比值,其關鍵點是要明白,百分比是一定有其對應的參照值的。也就是說,百分比值是一種相對值,任何時候要分析它的效果,都需要正確找到它的參照

一個css屬性值從定義到最終實際使用,是存在一個過程的。這其中涉及到Specified Values(指定值)、Computed Values(計算值)、 Used Values(使用值)、Actual Values(實際值)等概念,可以想見到,百分比值實際會在這個過程中,根據它的參照計算轉化為一個絕對值(比如100px),然后再被應用。這就是百分比值的意義。

更多關于css屬性值的處理過程的信息,可以查看Value Processing

百分比值的作用?

簡單地說,就是可變性。這可以衍生出自適應、響應式等看起來很有用的東西。

比如說,一個固定寬高的盒子,然后希望盒子內有一個絕對定位的,寬高和盒子一樣的蓋板(就這樣稱呼吧…),下面這樣的寫法會很合適:

.box{position:relative;width:100px;height:100px;}
.box_cover{position:absolute;width:100%;height:100%;left:0;top:0;}

這里使用百分比值的好處的是,如果需要修改盒子的尺寸,只需要修改盒子的寬高,而蓋板會自動保持和盒子的尺寸一致。

再一個例子是Bootstrap的柵格系統:

詳述css中的百分比值

可以看到,柵格系統里會用到百分比值來實現確切的對空間的劃分。百分比值是相對的,自適應的,因此柵格系統可以很好地用于響應式設計。

可用百分比值的常見css屬性

width & height

寬和高在使用百分比值時,其參照都是元素的包含塊(Containing Block,詳情)。width參照包含塊的寬度,height參照包含塊的高度。在大部分情況下,包含塊就是父元素的內容區(盒模型里的content)。

我以前寫過width:100%; height:100%;這樣的代碼來實現尺寸和父元素一致。但我發現有時候寬度是符合意思(100%)的,但高度卻沒有效果。請看下面這個示例:

詳述css中的百分比值

可以看到,直接父元素(包含塊)是否有明確的高度定義,會影響height為百分比值時的結果。

關于這一點的詳細解釋是,當一個元素的高度使用百分比值,如果其包含塊沒有明確的高度定義(也就是說,取決于內容高度),且這個元素不是絕對定位,則該百分比值等同于autoauto是初始默認值,所以看起來就像是“失效”了。

如果元素是根元素(<html>),它的包含塊是視口(viewport)提供的初始包含塊(initial containing block),初始包含塊任何時候都被認為是有高度定義的,且等于視口高度。所以,<html>標簽的高度定義百分比總是有效的,而如果你希望在<body>里也用高度百分比,就一定要先為<html>定義明確的高度。這就是為什么在固定頁腳一文中,有html, body{height:100%;}這樣的寫法。

margin & padding

這2個屬性屬于混合屬性,也通過一個例子說明:

詳述css中的百分比值

可以分析得到,對于marginpadding,其任意方向的百分比值,參照都是包含塊的寬度

為什么會多個方向都取包含塊的寬度作為參照呢?在我看來,包含塊的寬度在塊布局的排版中是最有用的(想象一下word里輸入文字,到寬度邊緣后換行的場景),對應的,水平方向的內外邊距一定要參照包含塊的寬度。再考慮垂直方向的內外邊距,它們如果不和水平方向取相同的參照物,就會因為不一致而很難使用。所以,總體來說,統一以包含塊的寬度作為參考,會具有相對最好的可用性。

嚴格地說,參照是包含塊的寬度,是在樣式屬性writing-mode為默認值時的情況。不過這個屬性極少被用到,所以在此不做考慮。

border-radius

你也許見過有人用下面的代碼來讓一個矩形變成剛好的圓形(請體會這個“剛好”):

.circle{border-radius:50%;}

對此的解釋是,為一個元素的border-radius定義的百分比值,參照物是這個元素自身的尺寸。也就是說,假如這個元素寬是60px,高是50px(border-box的尺寸),那么border-radius:50%的結果等同于border-radius:30px/20px;

如果你還疑惑這里帶/的圓角寫法,請查看MDN對border-radius的說明

background-position

background-position的初始值就是百分比值0% 0%。下面是一個使用示例:

詳述css中的百分比值

background-position的百分比值,取的參照是一個減法計算值,由放置背景圖的區域尺寸,減去背景圖的尺寸得到,可以為負值。對照上面的示例,思考一下,應該可以感受到,以這個減法計算值為參照的話,正好可以符合我們感官上對背景圖位置的理解。

這個屬性包括水平位置和垂直位置,它們分別參照的是寬度減法計算值和高度減法計算值。

你可能注意到了上面示例的最后一個竟然寫了4個值(一般都只用2個值)。關于它的意義,請查看W3C的background-position

font-size

參照是直接父元素的font-size。例如,一個元素的直接父元素的font-size14px,無論這個是直接定義的,還是繼承得到的,當該元素定義font-size:100%;,獲得的效果就是font-size:14px;

line-height

參照是元素自身的font-size。例如,一個元素的font-size12px,那么line-height:150%;的效果是line-height:18px;

vertical-align

參照是元素自身的line-height(和前面很有關聯吧,所以我排在了這里)。例如,一個元素的line-height30px,則vertical-align:10%;的效果是vertical-align:3px;

對這個屬性我還想說,盡管vertical-align可以使用數字,百分比值,但瀏覽器兼容性差異較大,在跨瀏覽器實現時可能需要較多hack。因此,我個人傾向于使用middle等相對來說兼容性差異較小的關鍵字類型的值。

定位用的bottom、left、right、top

參照是元素的包含塊。leftright是參照包含塊的寬度,bottomtop是參照包含塊的高度。

transform: translate

平移變換,在水平方向和垂直方向上也可以使用百分比,其參照是變換的邊界框的尺寸(等于這個元素自己的border-box尺寸)。例如,一個寬度為150px,高度為100px的元素,定義transform:translate(50%, 50%)的效果是transform:translate(75px, 50px);

還可以補充一點,translate3d對應是還有第三個維度的,但是,經過測試,最后的第3個值不可以使用百分比(否則樣式定義無效)。至于為什么不可以參照呢,大概是因為那是神秘的第三維度吧…

其他

如果你想要知道更多的百分比值在css屬性中的可用情況及參照值,請參考MDN的CSS percentage values

百分比值的繼承

請注意,當百分比值用于可繼承屬性時,只有結合參照值計算后的絕對值會被繼承,而不是百分比值本身。例如,一個元素的font-size14px,并定義了line-height:150%;,那么該元素的下一級子元素繼承到的line-height就是21px,而不會再和子元素自己的font-size有關。

結語

好不容易終于看完了這么多百分比值的用法,有興趣要使用一些嗎?(?-?*)

我自己的看法是,百分比值是css所提供的一種建立元素與元素之間,或者元素的不同屬性之間的關聯性的有效方法。只要是想建立一種關聯性,都可以適當考慮使用百分比值。而且,不需自己做任何動態的事件處理和更新,任何時候,你都可以信賴這個百分比。

(重新編輯自我的博客,原文地址:http://acgtofe.com/posts/2014/06/percentage-in-css

??
Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
?
購物車
優惠劵
搜索
久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      国内精品福利视频| 天天干天天草天天射| a级在线观看视频| 一区二区三区www污污污网站| 免费看的av网站| 久久97人妻无码一区二区三区| 国产夫妻性生活视频| 亚洲网中文字幕| 亚洲精品国产手机| 中文字幕人妻熟女人妻a片| 污视频在线免费观看| 色偷偷男人天堂| 日本一道本视频| 欧美一区二区三区成人精品| 蜜桃av中文字幕| 免费看黄色aaaaaa 片| 久久久久亚洲av片无码下载蜜桃| 国产性一乱一性一伧一色| 国产精品伦子伦| 国产精品第6页| 国产调教在线观看| 国产日韩久久久| 国产又粗又长又大的视频| 国产三级精品三级在线| 国产精品永久久久久久久久久| 国产成人精品777777| 国产成人在线综合| 国产精品系列视频| 国产视频第二页| 久艹视频在线观看| 男女污污视频网站| 日本中文字幕在线免费观看| 日本精品久久久久中文| 四虎精品一区二区| 亚洲第一页视频| 亚洲黄色一区二区| 91麻豆国产在线| 东京干手机福利视频| 国产精品一级二级| 精品人妻无码一区二区三区蜜桃一| 久久黄色精品视频| 全国男人的天堂网| 香港三日本8a三级少妇三级99| 一区二区三区在线观看免费视频| 在线观看av日韩| 91午夜精品亚洲一区二区三区| www.五月婷婷| 九九热国产精品视频| 欧美日韩怡红院| 午夜少妇久久久久久久久| 亚洲黄色一区二区| 不卡的在线视频| 精品人妻一区二区免费视频| 欧美双性人妖o0| 香蕉在线观看视频| 91视频久久久| 韩国av在线免费观看| 日本精品久久久久中文| 亚洲福利在线观看视频| 91成人福利视频| 精品国产欧美日韩不卡在线观看| 欧美日韩色视频| 一色道久久88加勒比一| 99re只有精品| 久久这里只有精品国产| 天天综合天天色| aaa一区二区三区| 久久精品这里有| 午夜国产在线视频| 99re这里只有| 美国黄色特级片| 性生交大片免费全黄| av免费一区二区| 久久久久久久久久久久91| 四季av一区二区三区| 91网站免费入口| 久久一区二区三区视频| 在线一区二区不卡| 国产伦精品一区二区三区精品| 男女视频免费看| 亚洲欧洲国产综合| 精品人妻少妇AV无码专区| 天天摸天天舔天天操| www.com欧美| 欧美一级特黄a| 亚洲综合成人av| 免费黄视频在线观看| 中文字幕免费视频| 黄色一级视频在线观看| 五月天婷婷久久| 国产裸体永久免费无遮挡| 日韩精品xxx| av网页在线观看| 人妻va精品va欧美va| av无码av天天av天天爽| 欧美 日韩 国产 一区二区三区| 亚洲免费成人网| 久久一区二区三区视频| 中文在线一区二区三区| 九九热视频精品| 亚洲一区二区三区黄色| 美女久久久久久久久| 亚洲一级生活片| 欧美片一区二区| mm131国产精品| 天堂中文在线观看视频| 国产理论片在线观看| 午夜精品久久久久久久久久久久久蜜桃 | 91视频免费入口| 欧美一级片免费| japanese国产在线观看| 日韩欧美中文视频| 国产精品手机在线观看| 伊人在线视频观看| 久久中文字幕无码| aaa黄色大片| 午夜精品福利在线视频| 久草综合在线视频| av在线免费观看不卡| 呻吟揉丰满对白91乃国产区| 国产一级片免费视频| 亚洲精品一区二区三区在线播放| 免费不卡av网站| 国产精品福利电影| 亚洲天堂日韩av| 色一情一交一乱一区二区三区| 国产一二三四在线| 91精品国产高清91久久久久久| 少妇人妻一区二区| 麻豆av免费观看| 国产精品久久久久精| 亚洲欧美自偷自拍| 午夜成人免费影院| 日本国产一级片| 久草视频在线免费| 第四色在线视频| 亚洲色婷婷一区二区三区| 无码人妻精品一区二| 毛片基地在线观看| 国产又黄又猛又粗又爽的视频| 91日韩中文字幕| 中文字幕一区二区三区人妻不卡| 日本黄色一级网站| 久久久久99精品成人片毛片| 国产精品嫩草影视| www.午夜av| 一级全黄裸体免费视频| 中文字幕久久网| 小毛片在线观看| 日韩人妻无码一区二区三区99| 久久久久国产精品夜夜夜夜夜| 国产精品视频一二区| youjizz在线视频| 亚洲综合精品国产一区二区三区| 亚洲第一天堂在线观看| 日韩欧美亚洲国产| 日本黄色片视频| 欧美成人国产精品高潮| 久久久久性色av无码一区二区| 国产综合无码一区二区色蜜蜜| 国产精品suv一区二区69| 91人人澡人人爽人人精品| 亚洲天堂男人av| 亚洲一区二区三区四区av| 中文字幕一区二区免费| 尤物视频在线观看国产| 一区二区免费av| 小泽玛利亚一区二区免费| 午夜av中文字幕| 一级做a爱片久久毛片| 午夜久久久久久噜噜噜噜| 少妇高潮av久久久久久| 日韩中文字幕高清| 思思久久精品视频| 无码人妻丰满熟妇啪啪欧美| 五月婷六月丁香| 一起草在线视频| 亚洲国产精品成人久久蜜臀| 亚洲精品久久久久久久蜜桃| 中文字幕欧美人妻精品一区蜜臀| 亚洲国产精品久久久久爰性色 | 一区二区视频观看| 中文字幕理论片| 亚洲中文字幕一区| 97成人在线观看| 国产精品老女人| 黄色一级视频免费观看| 美女被艹视频网站| 日韩手机在线视频| 亚洲aⅴ乱码精品成人区| 中文字幕 日韩 欧美| 亚洲人视频在线观看| 91香蕉国产线在线观看| 国产激情久久久久久熟女老人av| 国产精品久久久久久在线观看| 国精产品一品二品国精品69xx| 久久久久久国产精品视频| 青青草精品在线视频| 无码人妻丰满熟妇啪啪欧美| 中文字幕乱伦视频|