响应式布局中的CSS相对量

一个响应式布局,要能够根据设备屏幕尺寸的改变,动态的调整页面内容,展现不同的设计风格。
在进行响应式的 CSS 代码编写过程中,经常会用到一些相对尺寸,以达到相对定位的目的。例如,常见的响应式布局中需要用到“自适应的图片”、“流动布局”等技术。

体现在 CSS 代码编写上,就需要前端开发人员精准掌握特定属性的相对量表示方法。
然而,其中一些相对量的计算方法很容易混淆。

本文在完整梳理全部 CSS 属性基础上,将其中的“相对单位、百分比相对量、数字相对量”清晰的罗列出来。
进而为后续的响应式设计编码提供依据。

值得注意的是,百分比相对量十分容易混淆,不同 CSS 属性的百分比值的计算方法不同,
有的相对于父元素、有的相对于包围盒、有的相对于其他属性、有的相对于宽度、有的相对于高度,细节千差万别。

CSS 属性的浏览器兼容性,请查询 Can I Use
已经被标准废弃(Deprecated)的属性,没有列出。
欢迎您与我一同完善这个清单,提供数据的读者姓名将在文中标注。
(通过评论方式提供遗漏的相对量)

一、相对单位和量

视口单位 (viewport)

vh:视口高度的 1/100
vw:视口宽度的 1/100
vmin:视口宽度、高度中最小值的 1/100
vmax:视口宽度、高度中最大值的 1/100

字体单位

em:元素 font-size 的大小,如果在 font-size 属性使用 em,则 em 表示该元素继承下来的 font-size 大小。
rem:根元素 <html> 的font-size 大小。如果 rem 用在根元素的 font-size 上,则 1 rem 表示根元素 font-size 的初始值。

<position>:偏移量的百分比是相对于元素盒的宽度、高度。水平方向(x轴)的百分比相对于元素盒的宽度。竖直方向(y轴)的百分比相对于元素盒的高度。

函数

rgb/rgba:RGB 三个通道,正整数值的取值范围为:0 - 255。百分数值的取值范围为:0.0% - 100.0%。Alpha 通道,a = 0表示透明,a = 1 表示不透明。

hsl/hslas 通道表示饱和度,取值范围是 0 - 100%。l 通道表示亮度,取值范围是 0 - 100%。Alpha 通道,a = 0表示透明,a = 1 表示不透明。

二、数字相对量

小数相对量指的是 CSS 规范中的<number>量(查看 MDN 规范)。
整数相对量指的是 CSS 规范中的<integer>量(查看 MDN 规范)。

小数相对量

font-size-adjust(CSS3):设置小写x字母的高度。计算方法为指定的 数字值 乘以 font-size。
zoom:数字值指的是缩放引子自己。

整数相对量

border-image-width:指的是元素 border-width 计算值的倍数。

三、百分比相对量

百分比相对量指的是 CSS 规范中的<percentage>量(查看 MDN 规范)。

许多长度属性使用百分比,例如

  • width、height
  • max-height/min-height、max-width/min-width
  • margin
  • padding
  • font-size
  • border-width
  • text-shadow
  • background-size
  • background-position
  • top、bottom、left、right
  • line-height
  • text-indent
  • vertical-align

注意:只有计算后的属性会被继承。当一个父属性使用百分比时,在继承属性(子属性)上会计算父属性的通过百分比计算后的实际值,不会将百分比继承下来。

“定位”属性

top/bottom:在top属性中,使用 % ,表示相对于_包含块_的高度百分比。可以为负值。
right/left:表示相对于_包含块_的宽度百分比。可以为负值。

“弹性盒模型”属性

查看弹性盒模型

flex-basis:百分比指的是 flex 容器的内部主尺寸(inner main size)的百分比。
即,a percentage of the parent flex container main size property

min-height/min-width:初始值为0。

“尺寸”属性

width/max-width/min-width:指的是_包含块_的宽度百分比。如果包含块的宽度依赖本元素宽度,则布局结果未定义。

height/max-height/min-height:指的是元素生成盒(generated box)的_包含块_(containing block)的高度。如果包含块的高度没有显式指定(依赖于内容高度),并且本元素没有绝对定位,则 height 值计算为 auto,max-height 值计算为 none,min-height 值计算为 0。根元素的百分比高度相对于根元素的初始包含块。

“外边距”属性

margin:指的是_包含块_的宽度百分比。可以是负值。
margin-top/margin-bottom:指的是_包含块_的宽度百分比。
margin-left/margin-right:指的是_最近包含块_的宽度百分比。

“内边距”属性

padding:指的是_包含块_的宽度百分比。
padding-top/padding-bottom:指的也是_包含块_的宽度百分比。
padding-left/padding-right:指的也是包含块的宽度百分比。

“边框”属性

border-image:缩写形式,其中的 border-image-slice、border-image-width 有百分比设置。border-image 的详细用法,请参考这里
border-image-slice:可以制定最多4个值,其中的某个值的百分比指的是相对于图片尺寸的百分比。
border-image-width:指的是边界图像区域(border image area)的尺寸百分比。将要绘制边界图像的整个区域称为边界图像区域。border-image-width属性用于缩放 border-image-slice。

border-radius:指的是圆形半径或椭圆形的长半轴、短半轴。水平方向的轴的百分比值对应边界盒(border box)的宽度。垂直方向的轴的百分比值对应边界盒(border box)的高度。
border-top-left-radius/border-top-right-radius/border-bottom-right-radius/border-bottom-left-radius:圆角水平轴的值对应边界盒的宽度。圆角垂直轴的值对应边界盒的高度

“背景”属性

background:缩写中的属性值分别对应各自的百分比意义。如 background-position、background-size。
background-position:百分比指的是背景定位区域的尺寸减去背景图片的尺寸。这里的尺寸指的是,水平偏移的宽度或者垂直偏移的高度。
background-size:百分比值相对于背景定位区域。background-size用于确定背景图片的大小。

“字体”

font缩写,百分比值用于设置 font-size 分量,含义与 font-size 相同。
font-size:百分比值相对于父元素的 font-size 值。
line-height:百分比值相对于元素自身的 font-size 值。

“文本”

text-indent:百分比值相对于元素包围盒(the containing block)的宽度。
word-spacing:百分比值相对于受影响文字(glyph)宽度。
vertical-align:百分比值相对于元素自身的 line-height 属性值。

“用户界面”

zoom:百分比值指的是缩放引子自己。

“2D变换” (实验)

transform:百分比值相对于包围盒(bounding box)尺寸。
transform-origin:百分比值相对于包围盒(bounding box)尺寸。

时间: 2024-10-21 04:56:32

响应式布局中的CSS相对量的相关文章

响应式布局中为什么要使用em设置字体大小而不用px

px像素(Pixel).相对长度单位.像素px是相对于不同设备显示器屏幕分辨率(pad/phone/pc)而言的.(引自CSS2.0手册) 1em指的是一个字体的大小,它会继承父级元素的字体大小,因此并不是一个固定的值.任何浏览器的默认字体大小都是16px. px相对的屏幕分辨率,而em相对于父级div,所以在响应式布局中使用em更合适,因为任何浏览器默认字体大小是固定的,而不同设备屏幕分辨率却各不相同. em有如下特点: 1. em的值并不是固定的: 2. em会继承父级元素的字体大小. 所以

CSS3的响应式布局Home / HTML/CSS / CSS3的响应式布局

做手机端网页需要用到响应式布局,首先需要再HTML文件头声明一下: 主要目的是宽度控制和禁止用户缩放,具体参数自己GOOGLE一下. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" /> 下面是CSS判断是PC端还是移动端其实很简单,用CSS3的媒体查询

css中响应式布局中样式的代码书写方法

代码示例:@media only screen and (min-width: 320px){ html { font-size: 8px !important; } .mulu-zi{ position: absolute; top: 18px !important; left: 18%; color: #000000; } } @media only screen and (min-width: 375px){ html { font-size: 10px !important; } .mu

Demo —— 响应式布局

响应式布局实例演示 What is 响应式布局? 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端--而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网浏览而诞生的. 响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验,而且随着目前大屏幕移动设备的普及,用"大势所趋"来形容也不为过. 优点:面对不同分辨率设备灵活性强,能够快捷解决多设备显示适应问题. 缺点:兼容各种设备工作量大,效率低下:代码累赘,

响应式布局实现的几种方法 — 弹性布局

响应式布局实现的几种方法 - 弹性布局 响应式布局的实现是前端工程中一个非常大的跨越,它非常灵活的可塑造性使得同一个网站能在不同的终端设备上展现出不同的活力.就今天这个机会,我想与大家分享并探讨一些常用来实现响应式布局方法中的弹性布局. 弹性布局是一种十分方便的,只需要依赖于CSS样式的实现响应式布局的方式,也是K最多用到的一种实现响应式的方法.尤其是现在类似于某宝.某东一类的电商web站或者手机app的页面,利用弹性布局是都可以很轻松的实现的,下面就是本K用弹性布局copy的某动的手机应用的部

响应式布局的钥匙之 图片液态化

图片在响应式布局中需要做到适应不同宽度的媒介给出最佳显示方案,如水一样会随着宽度的改变而改变. 在HTML内的图片,比如文章里插入的图片我们可以通过CSS样式 max-width 来进行控制图片的最大宽度,如: #content img { max-width:100%; height:auto; } 如此设置后ID为content内的图片会根据content的宽度改变以达到等宽扩充. height 为 auto 的设置是为了保证图片原始的高宽比例,以至于图片不会失真. 在WEB显示出来的图片除

flex布局 响应式布局 过渡 动画

Z-index <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>z-index</title> <style type="text/css"> .box{ <!-- 辅助子级进行绝对定位 --> position:relative; width:400px; height:400px; backg

【逆战】CSS中的响应式布局

一.响应式布局: 在小型网站建设中,有运用一套代码代码来适应不同终端分辨率的需求,优点:节约制作时间.节约制作成本.便于维护等优点. CSS3利用媒体查询(media queries)即可针对不同的媒体类型定义不同的样式,从而实现响应式布局 .也可以针对不同的分辨率设置不同的样式. 1024分辨率以上:PC端  1024 ~ 768 : pad pro 768 ~ 450 : pad mini , mobile 横屏 450分辨率以下: mobile 竖屏 二.media的值以及用法: 1.me

css响应式布局RWD

响应式布局结合了三大理念: 1)用于布局的弹性网络(百分比定义宽度) 2)用于图片和视频的弹性媒体 3)媒体查询 在布局中,需要注意的点有: 1)尽量用min-width/max-width,max-height/min-height代替width,height 2)尽量使用百分比,em为单位代替精确值 3)采用媒体查询 二.媒体查询 IE8以下不支持媒体查询,需要引入 <!-- if lte IE 8> <script src="response.min.js"&g