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è)值能夠用于marginfont-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)。這樣以來(lái)就能夠避免和字符串?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>用來(lái)引用資源文件或者片段。這一數(shù)據(jù)類型通常使用url()函數(shù)來(lái)表達(dá),但是在有些情況下也可以用<string>形式來(lái)展現(xiàn),如@import規(guī)則中。

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

  • 絕對(duì)URL包括協(xié)議和域名。這類URL指定的資源不需要和樣式表所屬的域名相同。
  • 相對(duì)URL指向的文件以樣式表文件位置為基準(zhǔn)位置。
  • 局部URL(片段URL)用來(lái)指向主文件自己內(nèi)部的元素。通過(guò)元素的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ù)字,沒(méi)有小數(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>

比率類型的典型用法是用來(lái)在媒體查詢中指明目標(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ù)類型

  • 長(zhǎng)度百分比<length-percentage>是長(zhǎng)度值<length>的一部分。
  • 數(shù)值百分比<number-percentage>是數(shù)值<number>的一部分。
  • 角度百分比<angle-percentage>是角度值<angle>的一部分。
  • 時(shí)間百分比<time-percentage>是長(zhǎng)度值<time>的一部分。
  • 頻率百分比<frequency-percentage>是長(zhǎng)度值<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>表示距離的單位,有兩種長(zhǎng)度單位。

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

(詳情可查看 CSS Font Sizing)

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

角度

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

  • deg單位表示角的度數(shù)。一個(gè)完整的圓為360度。
  • grad表示角的Gradians度。一個(gè)完整的圓為400grad
  • rad表示角的弧度。一個(gè)完整的圓為2π(約為57.29rad)。
  • turn表示圓周長(zhǎng)。一個(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í)長(zhǎng)

時(shí)長(zhǎng)數(shù)據(jù)類型<time>是時(shí)間單位。有兩種單位能夠用來(lái)定義時(shí)間。

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

頻率

頻率類型<frequency>表示聲音的頻率。存在兩個(gè)單位用來(lái)定義頻率。

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

分辨率

分辨率數(shù)據(jù)類型<resolution>表示用戶當(dāng)前設(shè)備的分辨率。分辨率是單一像素點(diǎn)(物理)的大小,通過(guò)1CSS英寸、厘米或者像素需要多少像素點(diǎn)能填滿來(lái)定義。這一計(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>用來(lái)定義顏色值。這一數(shù)據(jù)類型有兩種格式。

  • 關(guān)鍵字形式:可以使預(yù)定義顏色中的一種(如cornflowerblue),transparent以及currentColor等關(guān)鍵之。
  • 數(shù)值形式:可以使用顏色表示法中的一種,#rgbrgb()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引用:通過(guò)<url>數(shù)據(jù)類型來(lái)指定。
  • 文檔中的元素:通過(guò)element()函數(shù)來(lái)指定。(提示:這一函數(shù)的支持度較為有限。)
  • 漸變函數(shù):使用<gradient>數(shù)據(jù)類型來(lái)定義。
.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)鍵字: toprightbottomleft以及center
  • 長(zhǎng)度值
  • 百分比,長(zhǎng)度百分比。

下例給出了如何讓一個(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)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,570評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評(píng)論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,786評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,219評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,438評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,971評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,796評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,995評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,230評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,697評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評(píng)論 2 374

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

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