CSS基礎知識儲備(文字處理)

一、 css字體屬性

image

瀏覽器支持情況:

image

二 瘟栖、 屬性詳細說明

1葵擎、font

font 簡寫屬性在一個聲明中設置所有字體屬性。

注釋:此屬性也有第六個值:"line-height"慢宗,可設置行間距坪蚁。

說明

  • 這個簡寫屬性用于一次設置元素字體的兩個或更多方面。使用 icon 等關(guān)鍵字可以適當?shù)卦O置元素的字體镜沽,使之與用戶計算機環(huán)境中的某個方面一致敏晤。注意,如果沒有使用這些關(guān)鍵詞缅茉,至少要指定字體大小和字體系列嘴脾。

可以按順序設置如下屬性:

  • font-style
  • font-variant
  • font-weight
  • font-size/line-height
  • font-family

2、font-style:規(guī)定字體樣式

  • normal 默認值蔬墩。瀏覽器顯示一個標準的字體樣式译打。
  • italic 瀏覽器會顯示一個斜體的字體樣式。
  • oblique 瀏覽器會顯示一個傾斜的字體樣式拇颅。
  • inherit 規(guī)定應該從父元素繼承字體樣式奏司。(IE不支持)

3、font-variant :規(guī)定字體異體

  • normal 默認值樟插。瀏覽器會顯示一個標準的字體韵洋。
  • small-caps 瀏覽器會顯示小型大寫字母的字體。
  • inherit 規(guī)定應該從父元素繼承 font-variant 屬性的值黄锤。

4搪缨、font-weight:規(guī)定字體粗細

  • normal 默認值。定義標準的字符鸵熟。
  • bold 定義粗體字符副编。
  • bolder 定義更粗的字符。
  • lighter 定義更細的字符流强。
  • 100-900 定義由粗到細的字符痹届。400 等同于 normal,而 700 等同于 bold打月。
  • inherit 規(guī)定應該從父元素繼承字體的粗細短纵。

5、font-size:規(guī)定字體尺寸

  • xx-small僵控,x-small香到,small,medium,large悠就,x-large千绪,xx-large 把字體的尺寸設置為不同的尺寸,從 xx-small 到 xx-large梗脾。默認值:medium荸型。
  • smaller 把 font-size 設置為比父元素更小的尺寸。
  • larger 把 font-size 設置為比父元素更大的尺寸炸茧。
  • length 把 font-size 設置為一個固定的值瑞妇。
  • % 把 font-size 設置為基于父元素的一個百分比值。
  • inherit 規(guī)定應該從父元素繼承字體尺寸梭冠。

6 辕狰、line-height:規(guī)定字體行高

  • normal 默認。設置合理的行間距控漠。
  • number 設置數(shù)字迅腔,此數(shù)字會與當前的字體尺寸相乘來設置行間距扒秸。
  • length 設置固定的行間距匹表。
  • % 基于當前字體尺寸的百分比行間距辜腺。
  • inherit 規(guī)定應該從父元素繼承 line-height 屬性的值。

7碉渡、font-family:規(guī)定字體系列

  • family-name/generic-family 用于某個元素的字體族名稱或/及類族名稱的一個優(yōu)先表聚谁。默認值:取決于瀏覽器。
  • inherit 規(guī)定應該從父元素繼承字體系列滞诺。

8形导、word-spacing:增加或減少單詞間的空白(即字間隔)。

  • normal 默認铭段,定義單詞間的標準空間
  • length 定義單詞間的固定空間
  • inherit 規(guī)定應該從父元素繼承word-spacing屬性的值

9骤宣、word-break:規(guī)定自動換行的處理方法

  • normal 使用瀏覽器默認的換行規(guī)則
  • break-all 允許在單詞內(nèi)換行
  • keep-all 只能在半角空格或連字符處換行

10秦爆、letter-spacing:增加或減少字符間的空白(字符間距)

  • normal 默認序愚。規(guī)定字符間沒有額外的空間
  • length 定義字符間的固定空間(允許負值)
  • inherit 規(guī)定應該從父元素繼承l(wèi)etter-spacing屬性的值

11、white-space:指定元素內(nèi)的空白怎樣處理

  • normal 默認等限“炙保空白會被瀏覽器忽略
  • pre 空白會被瀏覽器保留,其行為方式類似Html中的<pre>標簽
  • nowrap 文本不會換行望门,文本會在同一行上繼續(xù)形娇,直到遇到
    標簽為止
  • pre-wrap 保留空白字符序列,但是正常的進行換行
  • pre-line 合并空白字符序列筹误,但是保留換行符
  • inherit 規(guī)定應該從父元素繼承white-space屬性的值

8桐早、其他

  • caption 定義被標題控件(比如按鈕、下拉列表等)使用的字體。
  • icon 定義被圖標標記使用的字體哄酝。
  • menu 定義被下拉列表使用的字體友存。
  • message-box 定義被對話框使用的字體。
  • small-caption caption 字體的小型版本陶衅。
  • status-bar 定義被窗口狀態(tài)欄使用的字體屡立。

三、font-size相關(guān)內(nèi)容

1搀军、font-size和line-height

image

4種box

要說的4種盒子分別是inline box膨俐、line box、content area罩句、containing box

  • inline box (行內(nèi)框) 每個行內(nèi)元素會生成一個行內(nèi)框焚刺,行內(nèi)框是一個瀏覽器渲染模型中的一個概念,無法顯示出來的止,行內(nèi)框的高度等于font-size檩坚,設定line-height時,行內(nèi)框的高度不變诅福,改變的是行距匾委。

  • line box (行框) 行框是指本行的一個虛擬的矩形框,由該行中行內(nèi)框組成氓润。行框也是瀏覽器渲染模式中的一個概念赂乐,無法顯示出來。行框高度等于本行中所有行內(nèi)框高度的最大值咖气。當有多行內(nèi)容時挨措,每一行都有自己的行框。

  • content area (內(nèi)容區(qū)) 內(nèi)容區(qū)是圍繞著文字的一種box崩溪,無法顯示出來浅役,其高度取決于font-size和padding。內(nèi)容區(qū)的高度 = font-size + padding-top + padding-bottom

  • containing box containing box 是包裹著上述三種box的box

image

2伶唯、font-size和vertical-align

(1)vertical-align可能的值:

  • baseline 默認觉既。元素放置在父元素的基線上。
  • sub 垂直對齊文本的下標乳幸。
  • super 垂直對齊文本的上標
  • top 把元素的頂端與行中最高元素的頂端對齊
  • text-top 把元素的頂端與父元素字體的頂端對齊
  • middle 把此元素放置在父元素的中部瞪讼。
  • bottom 把元素的頂端與行中最低的元素的頂端對齊。
  • text-bottom 把元素的底端與父元素字體的底端對齊粹断。
  • length
  • % 使用 "line-height" 屬性的百分比值來排列此元素符欠。允許使用負值。
  • inherit 規(guī)定應該從父元素繼承 vertical-align 屬性的值瓶埋。

vertical-align 屬性希柿,它也是計算 line-box 高度的重要因素之一诊沪。我們甚至可以說 vertical-align 是內(nèi)聯(lián)格式化上下文(IFC)中最重要的屬性。

(2)字體的相關(guān)高度計算

  • 一款字體會定義一個 em-square曾撤,它是用來盛放字符的金屬容器娄徊。這個 em-square 一般被設定為寬高均為 1000 相對單位,不過也可以是 1024盾戴、2048 相對單位寄锐。
  • 字體度量都是基于這個相對單位設置的,包括 ascender尖啡、descender橄仆、capital height、x-height 等衅斩。注意這里面的值是允許相對于 em-square 出血(bleed outside)的(譯者注:大概可以理解為超出 em-square)
  • 在瀏覽器中盆顾,上面的 1000 相對單位會按照你需要的 font-size 縮放。
  • em-square 是 1000
  • ascender 是 1100畏梆,descender 是 540您宪。通過測試發(fā)現(xiàn),macOS 上的瀏覽器使用了 HHead Ascent 和 HHead Descent 值奠涌,Windows 上的瀏覽器使用了 Win Ascent 和 Win Descent(而且兩個平臺上的值不一樣)宪巨。我們還看到 Capital Height 是 680,X height 是 485溜畅。


    image

這意味著 Catamaran 字體占據(jù)了 1100 + 540 個相對單位捏卓,盡管它的 em-square 只有 1000 個相對單位,所以當我們設置 font-size:100px 時慈格,這個字體里的文字高度是 164px怠晴。這個計算出來的高度決定了 HTML 元素的 content-area(內(nèi)容區(qū)域)你可以認為 content-area 就是 background 作用的區(qū)域。

(3)line-box計算

  • 對于內(nèi)聯(lián)元素浴捆,padding 和 border 會增大 background 區(qū)域蒜田,但是不會增大 content-area(不是 line-box 的高度)。一般來說你無法再屏幕上看到 content-area选泻。margin-top 和 margin-bottom 對兩者都沒有影響冲粤。
  • 對于可替換內(nèi)聯(lián)元素(replaced inline elements)、inline-block 元素和 blockified 內(nèi)聯(lián)元素滔金,padding色解、margin 和 border 會增大 height(譯者注:注意 margin)茂嗓,因此會影響 content-area 和 line-box 的高度

(4)vertical-align

它的默認值是 baseline餐茵。還記得字體度量里的 ascender 和 descender 嗎?這兩個值決定了 baseline 的位置述吸。很少有字體的 ascender 和 descender 的比例是一比一的忿族,所以我們經(jīng)陈啾浚看到一些意想不到的現(xiàn)象。

<p>
    <span>Ba</span>
    <span>Ba</span>
</p>

p {
    font-family: Catamaran;
    font-size: 100px;
    line-height: 200px;
}

span:last-child {
    font-size: 50px;
}

我們會發(fā)現(xiàn)一個非常奇怪的現(xiàn)象道批,line-box 的高度變高了错英!如下圖所示。提示你一下隆豹,line-box 的高度是從子元素的最高點到最低點椭岩。


image

用 baseline 來對齊令人費解,如果我們用 vertical-align: middle璃赡,middle 的意思是「用父元素 baseline 高度加上父元素中 x-height 的一半的高度來對齊當前元素的垂直方向的中點」判哥。baseline 所處的高度跟字體有關(guān),x-height 的高度也跟字體有關(guān)碉考,所以 middle 對齊也不靠譜塌计。更糟糕的是,一般來說侯谁,middle 根本就不是居中對齊锌仅!內(nèi)聯(lián)元素的對齊受太多因素影響,因此不可能用 CSS 實現(xiàn)墙贱。

vertical-align 的其他 4 個值

  • vertical-align: top / bottom热芹,表示與 line-box 的頂部或底部對齊
  • vertical-align: text-top / text-bottom,表示與 content-area 的頂部或底部對齊
image

不過你依然要小心惨撇,大部分情況下剿吻,對齊的是 line-height ,也就是一個不可見的高度串纺±雎茫看看下面這個用 vertical-align:top 的例子:


image
  • 所有的內(nèi)聯(lián)元素都有兩個高度:基于字體度量的 content-area,line-height 纺棺,這兩個高度你都無法看到
  • line-height: normal 是基于字體度量計算出來的
  • line-height: n (n=1,2,3…) 可能得出一個比line-height 還要矮的 content-area
  • vertical-align 不靠譜
  • line-box 的高度的受其子元素的 line-height 和 vertical-align 的影響
  • 我們無法輕易的用 CSS 來控制字體度量

3榄笙、font-size和ex、em祷蝌、rem

image
  • px像素(Pixel)茅撞。相對長度單位。像素px是相對于顯示器屏幕分辨率而言的巨朦。(引自CSS2.0手冊)
  • em是相對長度單位米丘。相對于當前對象內(nèi)文本的字體尺寸。如當前對行內(nèi)文本的字體尺寸未被人為設置糊啡,則相對于瀏覽器的默認字體尺寸拄查。(引自CSS2.0手冊)

任意瀏覽器的默認字體高都是16px。所有未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px棚蓄。那么12px=0.75em,10px=0.625em堕扶。為了簡化font-size的換算碍脏,需要在css中的body選擇器中聲明Font-size=62.5%,這就使em值變?yōu)?16px62.5%=10px, 這樣12px=1.2em, 10px=1em, 也就是說只需要將你的原來的px數(shù)值除以10稍算,然后換上em作為單位就行了典尾。*

px特點

  1. IE無法調(diào)整那些使用px作為單位的字體大小糊探;
  2. 國外的大部分網(wǎng)站能夠調(diào)整的原因在于其使用了em或rem作為字體單位钾埂;
  3. Firefox能夠調(diào)整px和em。

em特點

  1. em的值并不是固定的科平;
  2. em會繼承父級元素的字體大小勃教。

rem特點

rem是CSS3新增的一個相對單位(root em,根em)匠抗,這個單位引起了廣泛關(guān)注故源。這個單位與em有什么區(qū)別呢?區(qū)別在于使用rem為元素設定字體大小時汞贸,仍然是相對大小绳军,但相對的只是HTML根元素。這個單位可謂集相對大小和絕對大小的優(yōu)點于一身矢腻,通過它既可以做到只修改根元素就成比例地調(diào)整所有字體大小门驾,又可以避免字體大小逐層復合的連鎖反應。目前多柑,除了IE8及更早版本外奶是,所有瀏覽器均已支持rem。對于不支持它的瀏覽器竣灌,應對方法也很簡單聂沙,就是多寫一個絕對單位的聲明。這些瀏覽器會忽略用rem設定的字體大小初嘹。

四及汉、font face及圖標字體

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市屯烦,隨后出現(xiàn)的幾起案子坷随,更是在濱河造成了極大的恐慌,老刑警劉巖驻龟,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件温眉,死亡現(xiàn)場離奇詭異,居然都是意外死亡翁狐,警方通過查閱死者的電腦和手機类溢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谴蔑,“玉大人豌骏,你說我怎么就攤上這事∫В” “怎么了窃躲?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钦睡。 經(jīng)常有香客問我蒂窒,道長,這世上最難降的妖魔是什么荞怒? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任洒琢,我火速辦了婚禮,結(jié)果婚禮上褐桌,老公的妹妹穿的比我還像新娘衰抑。我一直安慰自己,他們只是感情好荧嵌,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布呛踊。 她就那樣靜靜地躺著,像睡著了一般啦撮。 火紅的嫁衣襯著肌膚如雪谭网。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天赃春,我揣著相機與錄音愉择,去河邊找鬼。 笑死织中,一個胖子當著我的面吹牛锥涕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狭吼,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼站楚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了搏嗡?” 一聲冷哼從身側(cè)響起窿春,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎采盒,沒想到半個月后旧乞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡磅氨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年尺栖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烦租。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡延赌,死狀恐怖除盏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挫以,我是刑警寧澤者蠕,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站掐松,受9級特大地震影響踱侣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜大磺,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一抡句、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杠愧,春花似錦待榔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至袭灯,卻和暖如春刺下,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稽荧。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工橘茉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人姨丈。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓畅卓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蟋恬。 傳聞我的和親對象是個殘疾皇子翁潘,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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