Maison > Article > interface Web > Exemple d'analyse de l'unité de longueur et de l'adaptation de la largeur en CSS
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 100db36a723c770d327fc0aef2ce13b1
et 6c04bd5ca3fcae76e30b72ad730ca86d
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.
76c82f278ac045591c9159d381de2c57100db36a723c770d327fc0aef2ce13b193f0f5c25f18dab9d176bd4f6de5d30e 4d0d87937f6c83b675e896c64d3eb7c9 b2386ffb911b14667cb8f0f91ea547a7JS Bin6e916e0f7d1e588d4f442bf645aedb2f 46d5fe1c7617e3914f214aaf043f4ccf p.parent { margin:150px; width: 200px; height: 200px; border: 1px solid blue; } p.child { width: 50%; height: 50%; border: 1px dashed black; } 531ac245ce3e4fe3d50054a55f2659279c3bca370b5104690d9ef395f2c5f8d16c04bd5ca3fcae76e30b72ad730ca86d 2f947c059f95c7b6013fe75febf72946 256623bcd80aa3c91f9a846bd694f70894b3e26ee717c64999d7867364b1b4a3 94b3e26ee717c64999d7867364b1b4a336cc49f0c466276486e50c850b7e495673a6ac4ed44ffec12cee46588e518a5e
再啰嗦一点关于父元素的问题:何为父元素,相对定位(relative
),绝对定位(absolute
),浮动(float
),固定(fixed
)中如何找寻父元素?
由于HTML是树形结构,标签套标签,一般情况下的父子关系很明朗。
<p class="parent"> <p class="child"></p> </p>
相对定位元素,它的父元素符合标签嵌套。
绝对定位元素,它的父元素是离它最近的定位元素(绝对定位,相对定位,固定,但不包括浮动)或者视窗尺寸(没找到定位元素时)。
浮动元素,它的父元素也符合标签嵌套。
固定元素(特殊的绝对定位),它的父元素是视窗(浏览器默认用来展示内容的区域的尺寸,不是html
或body
的尺寸)。
注意一下绝对定位就行了,其他的相对简单。
76c82f278ac045591c9159d381de2c57100db36a723c770d327fc0aef2ce13b193f0f5c25f18dab9d176bd4f6de5d30e 4d0d87937f6c83b675e896c64d3eb7c9 b2386ffb911b14667cb8f0f91ea547a7JS Bin6e916e0f7d1e588d4f442bf645aedb2f 46d5fe1c7617e3914f214aaf043f4ccf 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; } 531ac245ce3e4fe3d50054a55f265927 9c3bca370b5104690d9ef395f2c5f8d1 6c04bd5ca3fcae76e30b72ad730ca86d b81e3c3ff067fcbe0ce184ae68e680b4 c189969b91a8a31e4e468e0458d9c98194b3e26ee717c64999d7867364b1b4a3 94b3e26ee717c64999d7867364b1b4a3 36cc49f0c466276486e50c850b7e4956 73a6ac4ed44ffec12cee46588e518a5e
box
宽度为视窗的一半,can
的宽高是 box
的宽高的一半。
将 can
设置为 position:
fixed;
则其父元素将不再是 box
而是浏览器视窗。
can
的宽高是视窗宽高的一半。
浮动元素的父元素跟普通元素的父元素是一样的。
76c82f278ac045591c9159d381de2c57100db36a723c770d327fc0aef2ce13b193f0f5c25f18dab9d176bd4f6de5d30e 4d0d87937f6c83b675e896c64d3eb7c9 b2386ffb911b14667cb8f0f91ea547a7JS Bin6e916e0f7d1e588d4f442bf645aedb2f 46d5fe1c7617e3914f214aaf043f4ccf 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; } 531ac245ce3e4fe3d50054a55f265927 9c3bca370b5104690d9ef395f2c5f8d1 6c04bd5ca3fcae76e30b72ad730ca86d b81e3c3ff067fcbe0ce184ae68e680b4 c189969b91a8a31e4e468e0458d9c98194b3e26ee717c64999d7867364b1b4a3 94b3e26ee717c64999d7867364b1b4a3 36cc49f0c466276486e50c850b7e4956 73a6ac4ed44ffec12cee46588e518a5e
注意: padding
、 margin
如果设置了百分比,上,下,左,右
用的都是父元素宽度 的值为标准去计算。
em
和 rem
两者都是基于字体尺寸的,区别在于 em
是相对于当前父元素的字体大小为标准,而 rem
是相对于 html
元素的字体大小为标准。
举个例子你就明白了。
76c82f278ac045591c9159d381de2c57100db36a723c770d327fc0aef2ce13b193f0f5c25f18dab9d176bd4f6de5d30e 4d0d87937f6c83b675e896c64d3eb7c9 b2386ffb911b14667cb8f0f91ea547a7JS Bin6e916e0f7d1e588d4f442bf645aedb2f 46d5fe1c7617e3914f214aaf043f4ccf html { font-size: 30px; } body { font-size: 14px; } p.em { font-size: 1.2em; } p.rem { font-size: 1.2rem; } 531ac245ce3e4fe3d50054a55f2659279c3bca370b5104690d9ef395f2c5f8d16c04bd5ca3fcae76e30b72ad730ca86d 7141ea82a6d8e125d197a4f4e92d9838 Test fcd38dfe03ee250c19b5b2a62a5d19ef 7141ea82a6d8e125d197a4f4e92d9838 Test fa9011ae4b711ef93042299459843a74 7141ea82a6d8e125d197a4f4e92d9838 Test 901871655ff1d2496ad717ebd97d8f82 94b3e26ee717c64999d7867364b1b4a3 94b3e26ee717c64999d7867364b1b4a3 94b3e26ee717c64999d7867364b1b4a3 fcf8a40af854b70c2075a39629f12e45 Test af02d60b0bb9e9b2dfc5de10decdf1d7 fcf8a40af854b70c2075a39629f12e45 Test af02d60b0bb9e9b2dfc5de10decdf1d7 fcf8a40af854b70c2075a39629f12e45 Test af02d60b0bb9e9b2dfc5de10decdf1d7 94b3e26ee717c64999d7867364b1b4a3 94b3e26ee717c64999d7867364b1b4a3 94b3e26ee717c64999d7867364b1b4a336cc49f0c466276486e50c850b7e495673a6ac4ed44ffec12cee46588e518a5e
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!