版权声明:此文章转载自极客头条
如需转载请联系听云College团队成员小尹 邮箱:yinhy#tingyun.com
在CSS中的属性值有些是使用数字的。为了让用户客户端能够确定这个值有效,就需要确保它的值是符合规范类型中的一个。这些就被称为数据类型,规范中通常写成这样<this>。
有两种数据类型:特定的和通用的。特定数据类型是一个属性或者一组属性。例如<transform-function>数据类型被用在transform属性的值上。
另一方面,通用数据类型是可以用在任何特定的属性上。比如<length>数据类型,可以设置一个10px的值,它可以用在margin、font-fize或者其它可以用数字值的属性。
在这篇文章中,将会把所有的通用数据类型给大家介绍一下。
文本(Textual):
关键词(Keywords): <ident>
自定义关键词:<custom-ident>
引用字符串: <string>
资源定位器:<url>
基本数字(Basic Numeric)
整数(Integers):<integer>
实数:<number>
比率:<ratio>
百分比:<percentage>
维度(Dimensions)
距离(Distances):<length>
角度:<angle>
延迟时间(Duration):<duration>
频率(Frequency):<frequency>
分辨率(Resolution):<resolution>
其它(Other)
颜色:<color>
图片:<image>
位置:<position>
文本数据类型
关键词(Keywords)
<ident>数据类型指的是在CSS中预定义的关键词。这包括一些独特的某些属性的值,比如display属性,以及CSS中的initial、inherit和unset(详细的可以阅读这篇文章)。
.foo { border-color: red; position: inherit; }
这些关键词都有大小写之分,而且必须不能带引号,如果带引号,其会被误解为<string>数据类型。
自定义关键词
<custom-ident>(也称为<user-ident>)数据类型,指的是作者在样式表中已定义的关键词。除了CSS预定义的关键词之外的都是一个有效的<custom-ident>。
自定义关键词最常见的例子是animation-name属性的值。这个属性可以接受自定义动画的名字。
@keyframes hulkify { from { color: pink; transform: scale(1); } to { color: green; transform: scale(2); } } .bruce-banner { animation-name: hulkify; }
引用字符串
<string>数据类型是指任何引用的字符串。引号内的文本可以是任何Unicode字符串。
.foo::after { content: "Hello, world!"; } .foo::before { content: "We can add 'quotes' within quotes \A And move to a separate line"; }
资源定位器
<url>数据类型用来引用一个资源文件或片段(fragment)。这个数据类型通常是使用url()函数,但在某些情况下也可以使用<string>,特别是在@import规则中。
<url>数据类型有三种类型:
绝对路径:是指定一个协议或域名。引用的资源不一定是在样式表的相同域名下
相对路径:引用的文件是相对于引用样式表的位置
片段中URL(Fragment URLs):指元素在文档中的主机。引用带ID的元素,而不是一个文件路径
比如下面的示例:
/* 绝对路径 */ @import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:400"); /* 相对路径 */ .foo { background-image: url("../img/bg.png"); } @import "components/buttons.css"; /* Fragment URL */ .bar { filter: url("#blurFilter"); }
基本数字类型
整数
<integer>数据类型定义和数学上的整数是一样的。它是一个整数,不是一个小数。可以是正值也可以是负值。第一位数前可以添加-或+前缀。规范中规定,不显式添加任何前缀符号,表示前面的是+。
.foo { z-index: 10; } .foo { z-index: +10; } .bar { z-index: -10; }
实数
<number>数据类型是一个实数。它可以是<integer>、0或者带小数的部分的小数。实数也像整数一样,可以是正值也可以是负值,如果没有显式设置,表示的是正数,其符号也是写在第一个数字前。
.foo { line-height: 3; } .bar { line-height: -2.5; } .foo { line-height: +5.5; }
比率
<ratio>数据类型指定了两个数字之间的关系,特别是两个正整数(<integer>)。虽然在数学中比率可以以不同的方式书写,但在CSS它们主要写成<integer> / <integer>。
比率的数据类型通常用于媒体查询的设备比率中。
@media screen and (device-aspect-ratio: 16/9) { /* Wide screen displays, iPhone 5 */ } @media screen and (device-aspect-ratio: 4/3) { … }
百分比
<percentage>数据类型是由数字<number>紧跟一个单独的%号组成。它代表的是其它值的一部分值。根据数据类型的值是什么,可以将百分比数据类型分成:
<length-percentage>数据类型代表<length>值的一部分
<number-percentage>数据类型代表<number>值的一部分
<angle-percentage>数据类型代表<angle>值的一部分
<time-percentage>数据类型代表<time>值的一部分
<frequency-percentage>数据类型代表<frequency>值的一部分
如下面的示例:
.foo { width: 50%; /* <length-percentage> */ line-height: 200% /* <number-percentage> */ voice-pitch: 25% /* <frequency-percentage> */ }
维度数据类型
维度数据类型是<number>中特殊的一种,是一个计量单位。它们写成<number>,后面再跟单位标签符。当<number>是0时,可以不带单位。
距离
<length>数据类型代表的是长度单位。其有两种类型的长度单位。
绝对单位:固定的物理测量单位,比如px、cm和pt。一旦确定了,它们的尺寸不能通过改变容器的font-size大小来改变
相对单位:没有一个客观的测量,比如em、rem和Viewport单位。它的实际大小是由其一个父元素的大小决定。这意味着它们的大小可以通过改变依赖元素的大小来改变
例如
.foo { font-size: 16px; /* absolute */ width: 50vw; /* relative */ }
角度
<angle>数据类型代表的是一个圆的角度。它有四个单位,可以用来定义角度的度数。
deg单位表示的是角的度数。360deg是一个完整的圆
grad单位代表Gradians角度。400grad是一个完整的圆
rad单位代表的角的弧度。2πrad(约57.29rad)是一个完整的圆
turn单位代表圆周长。1turn是一个完整的圆
这些单位可以是正值也可以是负值,表示顺时针或逆时针转。下面是一个例子,表示的是按顺时针旋转90度:
.foo { /* 顺时针方向 */ transform: rotate(90deg); transform: rotate(100grad); transform: rotate(0.25turn); transform: rotate(1.57rad); /* 逆时针方向 */ transform: rotate(-270deg); transform: rotate(-300grad); transform: rotate(-1.25turn); transform: rotate(-55.72rad); }
延迟
<time>数据类型表示一个时间单位,可以使用两种单位定义持续时间。
s表示的是秒单位
ms表示的是毫秒单位。1s等于1000ms
例如
.foo { transition-duration: 1s; } .bar { transition-duration: 1000ms; }
频率
<frequency>数据类型表示声音的频率。有两种单位来定义频率。
kHz单位代表的是KiloHertz
Hz单位代表的是Hertz。1Hz等于1000kHz
例如
.foo { voice-pitch: 250Hz; } .bar { voice-pitch: 1kHz; }
分辨率
<resolution>数据类型代表用户的当前设备的分辨率。其有四个单位。
dpi单位代表一英寸中有多少个点
dpcm单位代表是的一个Centemetre有多少个点
dppx单位代表是一个像素里有多少个点
例如
@media (min-resolution: 100ddpx) { .. } @media (min-resolution: 100dpcm) { .. } @media (min-resolution: 300dpi) { /* Retina display */ }
其它数据类型
颜色
<color>数据类型是用来定义一个颜色值。其有两种格式
关键词,指预定义的颜色的关键词(如cornflowerblue)或者transparent、currentColor关键词
使用数值的颜色符,如#rgb、rgb()、rgba()、hsl()或者hsla()
下面的例子演示了如何使用这些不同的格式来定义一个黑色颜色。
.foo { color: black; color: #000; color: rgb(0,0,0); color: rgba(0,0,0,1); color: hsl(0,0%,0%); color: hsla(0,0%,0%, 1); }
图片
<image>数据类型代表的是一个2D图像,它有三种格式
使用<url>数据类型引用的一个URL
文档中的一个元素,比如使用element()函数
一个渐变函数gradient,使用<gradient>数据类型
例如
.foo { background-image: url('path/to/bg.png'); } .bar { background-image: element('#background'); } .baz { background-image: linear-gradient(white, gray); }
位置
<position>数据类型表示一个元素在容器或另一个元素间的位置。它有三种数据类型。
关键词top、right、bottom、left或center
<length>值
百分比,特别是<length-percentage>值
下面的示例学示了如何让图像(100 x 100)定位在容器(300px x 300px)的右下角
.foo { background-position: right bottom; background-position: 200px 200px; background-position: 100% 100%; }