有记 MSNC.CN有记 MSNC.CN
2024-04-22收录 129关注

CSS 使用calc()获取当前可视屏幕高度

内容来自 网络,by MSNC.CN
CSS

CSS 有几个不同的单位用于表示长度。

一些设置 CSS 长度的属性有 width, margin, padding, font-size, border-width, 等。

长度有一个数字和单位组成如 10px, 2em, 等。

数字与单位之间不能出现空格。如果长度值为 0,则可以省略单位。

对于一些 CSS 属性,长度可以是负数。

有两种类型的长度单位:相对和绝对。


浏览器支持

下表中的数字表示支持该长度单位的最低浏览器版本。

长度单位

Chrome

IE

Firefox

Safari

Opera

em, ex, %, px,   cm, mm, in, pt, pc

1.0

3.0

1.0

1.0

3.5

ch

27.0

9.0

1.0

7.0

20.0

rem

4.0

9.0

3.6

4.1

11.6

vh, vw

20.0

9.0

19.0

6.0

20.0

vmin

20.0

9.0*

19.0

6.0

20.0

vmax

26.0

不支持

19.0

不支持

20.0

注意: Internet Explorer 9 通过不标准的名称 vm 来支持 vmin 。


相对长度

相对长度单位指定了一个长度相对于另一个长度的属性。对于不同的设备相对长度更适用。

 

单位

描述

em

它是描述相对于应用在当前元素的字体尺寸,所以它也是相对长度单位。一般浏览器字体大小默认为16px,则2em == 32px;

ex

依赖于英文字母小 x 的高度

ch

数字 0 的宽度

rem

rem 是根 em(root em)的缩写,rem作用于非根元素时,相对于根元素字体大小;rem作用于根元素字体大小时,相对于其出初始字体大小。

vw

Viewport Width,视窗宽度,1vw=视窗宽度的1%

vh

Viewport   Height,视窗高度,1vh=视窗高度的1%

vmin

vw和vh中较小的那个。

vmax

vw和vh中较大的那个。

%


 


提示: rem与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。




绝对长度

绝对长度单位是一个固定的值,它反应一个真实的物理尺寸。绝对长度单位视输出介质而定,不依赖于环境(显示器、分辨率、操作系统等)。

单位

描述

cm

厘米

mm

毫米

in

英寸 (1in = 96px = 2.54cm)

px *

像素 (1px = 1/96th of 1in)

pt

point,大约1/72英寸; (1pt =   1/72in)

pc

pica,大约 12pt,1/6英寸; (1pc = 12 pt)

像素或许被认为是最好的"设备像素",而这种像素长度和你在显示器上看到的文字屏幕像素无关。px实际上是一个按角度度量的单位。

相对长度单位指定了一个长度相对于另一个长度的属性。对于不同的设备相对长度更适用。

em

它是描述相对于应用在当前元素的字体尺寸,所以它也是相对长度单位。一般浏览器字体大小默认为16px,则2em == 32px;

ex

依赖于英文字母小 x 的高度

ch

数字 0 的宽度

rem

根元素(html)的 font-size

vw

viewpoint width,视窗宽度,1vw=视窗宽度的1%

vh

viewpoint height,视窗高度,1vh=视窗高度的1%

vmin

vw和vh中较小的那个。

vmax

vw和vh中较大的那个。

由此可见,通过vh / vw 我们可以获得当前屏幕的视窗宽度,所以在css中,通过计算这个高度即可使得div的高度自动撑开到屏幕高度。而计算这个高度可以使用css3的calc()函数:

calc() 函数用于动态计算长度值。

·         需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px);

·         任何长度值都可以使用calc()函数进行计算;

·         calc()函数支持 "+", "-", "*", "/" 运算;

·         calc()函数使用标准的数学运算优先级规则;

所以,只需设置div的高度height为calc(100vh)即可,100vh = 视窗高度的100%,例子:

div {
width: 100%;
height: calc(100vh);
}

需要注意的是,该方法适合于网页高度等于当前屏幕视窗高度,按实际需求可能还是需要JS的。



THE END
MSNC.CN