Auteur : Chinaxiang Source : Internet 01/12/2015 23:36
Il existe de nombreuses unités de longueur en CSS, je pense donc qu'il est nécessaire d'organiser les notes.
Il existe de nombreuses unités de longueur en CSS, je pense donc qu'il est nécessaire d'organiser un mémo.
Il existe également de nombreuses introductions complètes en ligne, voir les documents de référence pour plus de détails.
Les unités sont généralement divisées en deux catégories :
Unités absolues, qui ne changeront pas en raison des changements de taille d'autres éléments.
L'unité relative n'a pas de valeur de mesure fixe, mais une valeur relative déterminée par la taille des autres éléments.
Unité | Type | Introduction |
---|---|---|
px |
Absolu | pixel (un point sur l'écran de l'ordinateur), 1px = 1/96in
|
pt |
Absolu | Points, 1pt = 1/72in
|
pc |
Absolu | Picas, 1pc = 12pt
|
in |
Absolu | Pouces, 1in = 96px = 2.54cm
|
cm |
Absolu | Centimètres, 1cm = 96/2.54px
|
mm |
Absolu | Millimètres, 1mm = 1/10cm
|
q |
Absolu | Quart de millimètres, 1q = 1/4mm
|
% |
Relative | La largeur ou la taille de la police par rapport à l'élément parent |
em | Relative | La taille de la police par rapport à l'élément parent |
rem |
Relative | (c'est-à-dire root em) par rapport à la balise html |
ex |
Relatif | Hauteur des x lettres dans l'environnement de police actuel |
ch |
Relatif | La hauteur des 0 nombres dans l'environnement de police actuel |
vw |
Relatif | 1 % de la fenêtre d'affichage (zone visible du navigateur ) Largeur |
vh |
Relative | 1% Hauteur de la fenêtre (zone visible du navigateur) |
vmin |
Relatif | 1% La plus petite de la largeur et de la hauteur de la fenêtre d'affichage (zone visible du navigateur) |
vmax |
Relatif | 1% La plus grande entre la largeur et la hauteur de la fenêtre d'affichage (zone visible du navigateur) |
Puisque l'unité absolue est une valeur fixe, il n'y a rien à introduire ce qui suit présente principalement l'unité relative.
%
La taille du même attribut par rapport à l'élément parent. Ce n’est en fait pas une unité, mais elle peut après tout être utilisée comme unité de longueur, elle est donc répertoriée ici.
Si elle est utilisée pour définir la police, elle sera relative à la taille de la police de l'élément parent.
La taille de police par défaut dans les balises <html>
et <body>
dans la plupart des navigateurs est 100%
.
html {font-size: 100%;}body {font-size: 100%;}
100% = 1em = 16px = 12pt
Si elle est utilisée pour définir des dimensions autres que la police telles que la largeur et la hauteur, la valeur de longueur en pourcentage est basée sur la valeur de longueur de l'élément parent avec le même attribut.
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>JS Bin</title> <style type="text/css"> p.parent { margin:150px; width: 200px; height: 200px; border: 1px solid blue; } p.child { width: 50%; height: 50%; border: 1px dashed black; } </style></head><body> <p class="parent"> <p class="child"></p> </p></body></html>
再啰嗦一点关于父元素的问题:何为父元素,相对定位(relative
),绝对定位(absolute
),浮动(float
),固定(fixed
)中如何找寻父元素?
由于HTML是树形结构,标签套标签,一般情况下的父子关系很明朗。
<p class="parent"> <p class="child"></p> </p>
相对定位元素,它的父元素符合标签嵌套。
绝对定位元素,它的父元素是离它最近的定位元素(绝对定位,相对定位,固定,但不包括浮动)或者视窗尺寸(没找到定位元素时)。
浮动元素,它的父元素也符合标签嵌套。
固定元素(特殊的绝对定位),它的父元素是视窗(浏览器默认用来展示内容的区域的尺寸,不是html
或body
的尺寸)。
注意一下绝对定位就行了,其他的相对简单。
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>JS Bin</title> <style type="text/css"> html { width:1000px; } body { width:800px; } #box { width:50%; height:300px; position: absolute; margin-left: 200px; border: 1px solid red; } #can { position:absolute; top:100px; left:100px; width:50%; height:50%; border:1px solid black; } </style> </head> <body> <p id="box"> <p id="can"></p> </p> </body> </html>
box
宽度为视窗的一半,can
的宽高是 box
的宽高的一半。
将 can
设置为 position:
fixed;
则其父元素将不再是 box
而是浏览器视窗。
can
的宽高是视窗宽高的一半。
浮动元素的父元素跟普通元素的父元素是一样的。
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>JS Bin</title> <style type="text/css"> html { width:1000px; } body { width:800px; } #box { width:50%; height:300px; position: absolute; margin-left: 200px; border: 1px solid red; } #can { float:left; width:50%; height:50%; border:1px solid black; } </style> </head> <body> <p id="box"> <p id="can"></p> </p> </body> </html>
注意: padding
、 margin
如果设置了百分比,上,下,左,右
用的都是父元素宽度 的值为标准去计算。
em
和 rem
两者都是基于字体尺寸的,区别在于 em
是相对于当前父元素的字体大小为标准,而 rem
是相对于 html
元素的字体大小为标准。
举个例子你就明白了。
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>JS Bin</title> <style type="text/css"> html { font-size: 30px; } body { font-size: 14px; } p.em { font-size: 1.2em; } p.rem { font-size: 1.2rem; } </style></head><body> <p class="em"> Test <!-- 14 * 1.2 = 16.8px --> <p class="em"> Test <!-- 16.8 * 1.2 = 20.16px --> <p class="em"> Test <!-- 20.16 * 1.2 = 24.192px --> </p> </p> </p> <p class="rem"> Test <!-- 30 * 1.2 = 36px --> <p class="rem"> Test <!-- 30 * 1.2 = 36px --> <p class="rem"> Test <!-- 30 * 1.2 = 36px --> </p> </p> </p></body></html>
Les unités
ex
et ch
ex
et ch
dépendent de la police actuelle font-family
et de la taille de la police font-size
. ex
fait référence à la hauteur des lettres minuscules x
dans l'environnement de police actuel, et ch
fait référence à la largeur des chiffres 0
dans l'environnement de police actuel.
IE9+ et les navigateurs modernes sont déjà pris en charge.
vw
et vh
Les techniques de conception de sites Web réactifs s'appuient fortement sur des règles de proportion. Cependant, l’échelle CSS n’est pas toujours la meilleure solution à chaque problème. Que faire si vous souhaitez utiliser la largeur ou la hauteur de la fenêtre d'affichage au lieu de la largeur de l'élément parent ? C’est exactement ce que proposent les unités vh
et vw
.
vh
est égal à la hauteur de la fenêtre 1/100
Par exemple, si la hauteur du navigateur est 900px
, la valeur obtenue par 1vh
est 9px
. De la même manière, si la largeur de la fenêtre d'affichage est 750px
, la valeur obtenue par 1vw
est 7.5px
.
Les deux unités sont prises en charge dans IE10+ et les navigateurs modernes.
vmin
和 vmax
这两个单位是针对vw和vh
vmin
是vw
和vh
中比较 小 的值
vmax
是vw
和vh
中比较 大 的值
.box { height: 100vmin; width: 100vmin;}
.box { height: 100vmax; width: 100vmax;}
IE10+ 和现代浏览器都已经支持 vmin
webkit浏览器之前不支持vmax
,现在已经支持,所有现代浏览器已经支持,但是IE不支持 vmax
.
尺寸单位虽然说不是很难的内容,但能够做到精准理解和熟练使用也是极其难得的,也许随着CSS的发展会有更多有用的单位引进。
对单位斤斤计较是一个优秀CSS使用者应该具备的品质,赶紧去挑选合适的单位去开发你的NB产品吧。
下面的代码用来检测您的浏览器是否支持常用单位:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JS Bin</title> <style type="text/css"> body { padding: 20px; } div { background: #99ff99; padding: 5px; margin-bottom: 10px; white-space: nowrap; width: 0; } div:after { content: " (supported)"; } div.fail { width: 100% !important; background: #ff6666 !important; } div.fail:after { content: " (NOT supported)"; } </style> </head> <body> <div id="percentage">50% - percentage</div> <div id="pixel">400px - pixels (device pixels)</div> <div id="em">20em - relative unit</div> <div id="rem">20rem - root em</div> <div id="vw">15vw - viewport width</div> <div id="vh">60vh - viewport height</div> <div id="vmin">60vmin - smaller of vw or vh</div> <div id="vmax">60vmax - larger of vw or vh</div> <div id="inch">4in - inches</div> <div id="cm">20cm - centimeters</div> <div id="mm">200mm - millimeters</div> <div id="pt">120pt - points</div> <div id="pc">40pc - picas</div> <div id="ex">60ex - x-height</div> <div id="ch">60ch - based on width of zero (0) character</div> <script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.js"></script> <script> // 给指定元素设置宽度 var percentage = $("#percentage").css("width", "50%"); // 如果宽度值为0,即不支持,为此元素添加fail类 if (percentage.width() == 0) percentage.addClass("fail"); var pixel = $("#pixel").css("width", "400px"); if (pixel.width() == 0) pixel.addClass("fail"); var em = $("#em").css("width", "20em"); if (em.width() == 0) em.addClass("fail"); var rem = $("#rem").css("width", "20rem"); if (rem.width() == 0) rem.addClass("fail"); var vw = $("#vw").css("width", "15vw"); if (vw.width() == 0) vw.addClass("fail"); var vh = $("#vh").css("width", "60vh"); if (vh.width() == 0) vh.addClass("fail"); var vmin = $("#vmin").css("width", "60vmin"); if (vmin.width() == 0) vmin.addClass("fail"); var vmax = $("#vmax").css("width", "60vmax"); if (vmax.width() == 0) vmax.addClass("fail"); var inch = $("#inch").css("width", "4in"); if (inch.width() == 0) inch.addClass("fail"); var cm = $("#cm").css("width", "20cm"); if (cm.width() == 0) cm.addClass("fail"); var mm = $("#mm").css("width", "200mm"); if (mm.width() == 0) mm.addClass("fail"); var pt = $("#pt").css("width", "120pt"); if (pt.width() == 0) pt.addClass("fail"); var pc = $("#pc").css("width", "40pc"); if (pc.width() == 0) pc.addClass("fail"); var ex = $("#ex").css("width", "60ex"); if (ex.width() == 0) ex.addClass("fail"); var ch = $("#ch").css("width", "60ch"); if (ch.width() == 0) ch.addClass("fail"); </script> </body> </html>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!