CSS通用數(shù)據(jù)類型

本文轉(zhuǎn)載自:眾成翻譯
譯者:verymuch
鏈接:http://www.zcfy.cc/article/2526
原文:https://bitsofco.de/generic-css-data-types/

CSS中屬性的值有著許多種格式。為了讓用戶代理(即瀏覽器)能夠識(shí)別一個(gè)值是否有效股淡,則需要確認(rèn)該值是否符合該類值支持的格式的其中一種今瀑。這些屬性值所支持的格式叫做數(shù)據(jù)類型曲管,在規(guī)范中用<this>的形式標(biāo)識(shí)崔挖。

CSS中存在兩種數(shù)據(jù)類型——特定數(shù)據(jù)類型和通用數(shù)據(jù)類型术幔。特定數(shù)據(jù)類型只與一個(gè)單獨(dú)的屬性或某一類屬性有關(guān)聯(lián)恢氯。例如靖苇,<transform-function>這一數(shù)據(jù)類型僅僅只能用作transform屬性的值。

相反的模捂,通用數(shù)據(jù)類型并不和任何特定的屬性相關(guān)聯(lián)捶朵。例如,<length>數(shù)據(jù)類型存在10px這樣的值狂男,這個(gè)值能夠用于margin综看、font-size以及其他一系列屬性。

本文岖食,我將整體講述一下所有的通用數(shù)據(jù)類型红碑。

通用數(shù)據(jù)類型

文本數(shù)據(jù)類型

關(guān)鍵字

關(guān)鍵字?jǐn)?shù)據(jù)類型<ident>是指CSS中預(yù)定義的關(guān)鍵字。這一類型不僅包括某些特定屬性所特有的值泡垃,如display屬性的block值析珊,也包括CSS中常用的initialinheritunset(詳細(xì)內(nèi)容參考 Initial, Inherit, Unset, and Revert)蔑穴。

.foo {
  border-color: red;
  position: inherit;
}

這些關(guān)鍵字都是大小寫不敏感的忠寻,使用時(shí)不能添加引號(hào)。這樣以來就能夠避免和字符串?dāng)?shù)據(jù)類型<string>混淆存和。

自定義關(guān)鍵字

自定義關(guān)鍵字?jǐn)?shù)據(jù)類型<custom-ident>(也寫作<user-ident>)指樣式表作者自己定義的關(guān)鍵字奕剃。定義<custom-ident>有著一定的限制條件衷旅,如不能是CSS常用字中的一個(gè)。

自定義關(guān)鍵字的最常見的例子就是animation-name屬性的值纵朋。這個(gè)屬性能夠接受一個(gè)自定義的動(dòng)畫作為它的值柿顶,這個(gè)自定義的動(dòng)畫名有樣式表的作者定義。

@keyframes hulkify {

  from { 
    color: pink; 
    transform: scale(1);
  }

  to { 
    color: green; 
    transform: scale(2);
  }

}
.bruce-banner { animation-name: hulkify; }

引用字符串

字符串?dāng)?shù)據(jù)類型<string>是指任何引用的字符串操软。這個(gè)字符串由引號(hào)包圍嘁锯,是由統(tǒng)一編碼字符組成的任意序列。

.foo::after {
  content: "Hello, world!";
}
.foo::before {
  content: "We can add 'quotes' within quotes \A And move to a separate line";
}

資源定位符

資源定位符<url>用來引用資源文件或者片段聂薪。這一數(shù)據(jù)類型通常使用url()函數(shù)來表達(dá)猪钮,但是在有些情況下也可以用<string>形式來展現(xiàn),如@import規(guī)則中胆建。

該數(shù)據(jù)類型有三種URL(統(tǒng)一資源定位符)。

  • 絕對(duì)URL包括協(xié)議和域名肘交。這類URL指定的資源不需要和樣式表所屬的域名相同笆载。
  • 相對(duì)URL指向的文件以樣式表文件位置為基準(zhǔn)位置。
  • 局部URL(片段URL)用來指向主文件自己內(nèi)部的元素涯呻。通過元素的id引用凉驻,而不是文件路徑。
 /* Absolute URL */
@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:400");

 /* Realtive URL */
.foo { background-image: url("../img/bg.png"); }
@import "components/buttons.css";

 /* Fragment URL */
.bar { filter: url("#blurFilter"); }

基本數(shù)值類型

整數(shù)

整數(shù)類型<integer>即數(shù)學(xué)中定義的整數(shù)复罐。它是一個(gè)完整的數(shù)字涝登,沒有小數(shù)部分。整數(shù)包括正整數(shù)和負(fù)整數(shù)效诅。整數(shù)的符號(hào)由第一個(gè)數(shù)字前+或者-指定胀滚,如果什么都不指定則默認(rèn)為+

.foo { z-index: 10; }
.foo { z-index: +10; }
.bar { z-index: -10; }

實(shí)數(shù)

實(shí)數(shù)類型<number>即一個(gè)“真實(shí)的數(shù)字”乱投。它可以是整數(shù)<integer>咽笼,0或者一個(gè)十進(jìn)制小數(shù)。和整數(shù)類型相似戚炫,實(shí)數(shù)也存在正負(fù)值剑刑,同樣由第一個(gè)數(shù)字前的符號(hào)指出。

.foo { line-height: 3; }
.bar { line-height: -2.5; }
.foo { line-height: +5.5; }

比率

比率數(shù)據(jù)類型<ratio>表明兩個(gè)數(shù)值之前的關(guān)系双肤,這兩個(gè)數(shù)值均為正的整數(shù)值<integer>施掏。盡管數(shù)學(xué)中比率有著多種書寫方式,但是在CSS經(jīng)常被寫作<integer> / <integer>茅糜。

比率類型的典型用法是用來在媒體查詢中指明目標(biāo)設(shè)備的分辨率七芭。

@media screen and (device-aspect-ratio: 16/9) { /* Wide screen displays, iPhone 5 */ }
@media screen and (device-aspect-ratio: 4/3) { … }

百分比

百分比數(shù)據(jù)類型<percentage>由一個(gè)實(shí)數(shù)值<number>后加一個(gè)%符號(hào)組成。它表示的是其他值的一部分限匣。因此抖苦,針對(duì)不同的值類型毁菱,有不同的百分比數(shù)據(jù)類型

  • 長度百分比<length-percentage>是長度值<length>的一部分。
  • 數(shù)值百分比<number-percentage>是數(shù)值<number>的一部分锌历。
  • 角度百分比<angle-percentage>是角度值<angle>的一部分贮庞。
  • 時(shí)間百分比<time-percentage>是長度值<time>的一部分。
  • 頻率百分比<frequency-percentage>是長度值<frequency>的一部分究西。
.foo { 
    width: 50%; /* <length-percentage> */
    line-height: 200% /* <number-percentage> */
    voice-pitch: 25% /* <frequency-percentage> */
}

尺寸數(shù)據(jù)類型

尺寸是數(shù)值數(shù)據(jù)類型中的一種窗慎,是一種度量單位。它前半部分由數(shù)值組成卤材,后面跟一個(gè)單位符號(hào)遮斥。當(dāng)數(shù)值部分為0時(shí),單位可以省略扇丛。

距離

距離數(shù)據(jù)類型<length>表示距離的單位术吗,有兩種長度單位。

  • 絕對(duì)單位帆精,如px较屿,cm以及pt。這些單位的距離值都是固定的卓练,與物理測(cè)量相關(guān)隘蝎。一旦聲明,它們的大小不會(huì)因?yàn)槿萜髟氐淖煮w大小變化而發(fā)生改變襟企。
  • 相對(duì)單位嘱么,如emrem以及視口單位顽悼。這些單位并沒有一個(gè)客觀的度量標(biāo)準(zhǔn)曼振。相反的,這類單位的實(shí)際值由它們的父元素決定蔚龙。這就意味著它們的大小會(huì)因?yàn)樗蕾囋氐拇笮「淖兌淖儭?/li>

(詳情可查看 CSS Font Sizing)

.foo { 
    font-size: 16px; /* absolute */
    width: 50vw; /* relative */
}

角度

角度數(shù)據(jù)類型表示圓的一個(gè)角度拴测。存在四種單位來定義角度度量。

  • deg單位表示角的度數(shù)府蛇。一個(gè)完整的圓為360度集索。
  • grad表示角的Gradians度。一個(gè)完整的圓為400grad汇跨。
  • rad表示角的弧度务荆。一個(gè)完整的圓為2π(約為57.29rad)。
  • turn表示圓周長穷遂。一個(gè)完整的圓為1turn.

這些單位都存在正負(fù)值之分函匕,表明順時(shí)針或者逆時(shí)針。下面的例子中蚪黑,指出了如何用各種單位表示順時(shí)針90度盅惜。

.foo { 
    /* Going clockwise */
    transform: rotate(90deg);
    transform: rotate(100grad);
    transform: rotate(0.25turn);
    transform: rotate(1.57rad);

    /* Going anti-clockwise */
    transform: rotate(-270deg);
    transform: rotate(-300grad);
    transform: rotate(-1.25turn);
    transform: rotate(-55.72rad);
}

時(shí)長

時(shí)長數(shù)據(jù)類型<time>是時(shí)間單位中剩。有兩種單位能夠用來定義時(shí)間。

  • s表示一秒鐘抒寂。
  • ms表示一毫秒结啼。1秒等于1000毫秒。
.foo { transition-duration: 1s; } 
.bar { transition-duration: 1000ms; }

頻率

頻率類型<frequency>表示聲音的頻率屈芜。存在兩個(gè)單位用來定義頻率郊愧。

  • kHz表示千赫茲。
  • Hz表示赫茲井佑。1000Hz等于1kHz.
.foo { voice-pitch: 250Hz; } 
.bar { voice-pitch: 1kHz; }

分辨率

分辨率數(shù)據(jù)類型<resolution>表示用戶當(dāng)前設(shè)備的分辨率属铁。分辨率是單一像素點(diǎn)(物理)的大小,通過1CSS英寸躬翁、厘米或者像素需要多少像素點(diǎn)能填滿來定義焦蘑。這一計(jì)算方式依賴于我們所用的CSS單位,有四種方式可以指定分辨率盒发。

  • dpi表示每CSS英寸中物理像素點(diǎn)的個(gè)數(shù)喇肋。
  • dpcm表示每CSS厘米中物理像素點(diǎn)的個(gè)數(shù)。
  • dppx表示每CSS像素中物理像素點(diǎn)的個(gè)數(shù)迹辐。
@media (min-resolution: 100ddpx) { .. }
@media (min-resolution: 100dpcm) { .. }
@media (min-resolution: 300dpi) { /* Retina display */ }

其他數(shù)據(jù)類型

顏色

顏色數(shù)據(jù)類型<color>用來定義顏色值。這一數(shù)據(jù)類型有兩種格式甚侣。

  • 關(guān)鍵字形式:可以使預(yù)定義顏色中的一種(如cornflowerblue)明吩,transparent以及currentColor等關(guān)鍵之。
  • 數(shù)值形式:可以使用顏色表示法中的一種殷费,#rgb印荔,rgb()rgba()详羡,hsl()仍律,hsla()

下例是我們?nèi)绾斡貌煌男问綄?shí)現(xiàn)黑色顏色值实柠。

.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);
}

圖片

圖片數(shù)據(jù)類型<image>表示一個(gè)2D圖像水泉。它可以是以下三種形式中的一種。

  • URL引用:通過<url>數(shù)據(jù)類型來指定窒盐。
  • 文檔中的元素:通過element()函數(shù)來指定草则。(提示:這一函數(shù)的支持度較為有限。)
  • 漸變函數(shù):使用<gradient>數(shù)據(jù)類型來定義蟹漓。
.foo { background-image: url('path/to/bg.png'); }
.bar { background-image: element('#background'); }
.baz { background-image: linear-gradient(white, gray); }

位置

位置數(shù)據(jù)類型<position>指出了一個(gè)元素在容器區(qū)域或元素中的位置炕横。它可以使下列三種類型中的一種:

  • 關(guān)鍵字: topright葡粒, bottom份殿, left以及center膜钓。
  • 長度值
  • 百分比卿嘲,長度百分比颂斜。

下例給出了如何讓一個(gè)大小為100x100px背景圖定位在容器元素(300x300px)的左下角。

.foo { 
  background-position: right bottom;
  background-position: 200px 200px;
  background-position: 100% 100%;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腔寡,一起剝皮案震驚了整個(gè)濱河市焚鲜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌放前,老刑警劉巖忿磅,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異凭语,居然都是意外死亡葱她,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門似扔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吨些,“玉大人,你說我怎么就攤上這事炒辉『朗” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵黔寇,是天一觀的道長偶器。 經(jīng)常有香客問我,道長缝裤,這世上最難降的妖魔是什么屏轰? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮憋飞,結(jié)果婚禮上霎苗,老公的妹妹穿的比我還像新娘。我一直安慰自己榛做,他們只是感情好唁盏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著检眯,像睡著了一般升敲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轰传,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天驴党,我揣著相機(jī)與錄音,去河邊找鬼获茬。 笑死港庄,一個(gè)胖子當(dāng)著我的面吹牛倔既,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹏氧,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼渤涌,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了把还?” 一聲冷哼從身側(cè)響起实蓬,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吊履,沒想到半個(gè)月后安皱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡艇炎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年酌伊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缀踪。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡居砖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驴娃,到底是詐尸還是另有隱情奏候,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布唇敞,位于F島的核電站蔗草,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏厚棵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一蔼紧、第九天 我趴在偏房一處隱蔽的房頂上張望婆硬。 院中可真熱鬧,春花似錦奸例、人聲如沸彬犯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谐区。三九已至,卻和暖如春逻卖,著一層夾襖步出監(jiān)牢的瞬間宋列,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工评也, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留炼杖,地道東北人灭返。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像坤邪,于是被迫代替她去往敵國和親熙含。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案艇纺? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,751評(píng)論 1 92
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,967評(píng)論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理怎静,服務(wù)發(fā)現(xiàn),斷路器黔衡,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 晚安迷茫的自己
    晞玥堅(jiān)持閱讀 87評(píng)論 0 0
  • 一到大熱天蚓聘,家家戶戶都是忙不迭地的關(guān)門緊閉,從早到晚员帮,唯有外面墻頭上的空調(diào)馬不停蹄的旋轉(zhuǎn)著或粮。好似一刻也不肯停息。 ...
    小饅頭0601閱讀 362評(píng)論 2 3