DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS3基礎 >> 5.7 字體尺寸font-size-adjust屬性
5.7 字體尺寸font-size-adjust屬性
編輯:CSS3基礎     

一、font-size-adjust屬性

有一定實踐經驗的前端開發者都了解:在網頁中,如果改變了字體類型,則頁面中使用該字體類型的文字大小都有可能發生變化,從而可能導致原來設定好的頁面布局產生混亂。我們還是給個例子來得直觀:

舉例:

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>CSS3 font-size-adjust屬性</title>
    <style type="text/css">
        /*定義整體樣式*/
        div{font-size:16px;}
        #div1{font-family:Times New Roman;}
        #div2{font-family:Arial}
        #div3{font-family:Comic Sans MS}
        #div4{font-family:Calibri}
        #div5{font-family:Verdana}
    </style>
</head>
<body>
    <div id="div1">welcome to lvyestudy !</div>
    <div id="div2">welcome to lvyestudy !</div>
    <div id="div3">welcome to lvyestudy !</div>
    <div id="div4">welcome to lvyestudy !</div>
    <div id="div5">welcome to lvyestudy !</div>
</body>
</html>

在浏覽器預覽效果如下:

分析:

從上面預覽效果,我們可以看出,即使是設置了相同的font-size屬性值,但是由於字體類型font-family屬性的不同,字體的在浏覽器顯示的“實際大小”同樣會不一樣。這樣在實際開發中,就很可能會因為文字大小的變換而導致原來的頁面布局發生混亂。

在CSS3中,我們可以使用font-size-adjust屬性來在字體類型(font-family)改變的情況下而保持字體大小(實際大小)不變。

語法:

font-size-adjust:屬性值;

說明:

font-size-adjust屬性取值為一個“aspect值”。下面給大家講解一下什麼叫aspect值?

字體的小寫字母“x”的高度(即x-height)與該字體“font-size”高度之間的比率被稱為一個字體的aspect值。

aspect =(x-height)/(font-size)

從上面的公式我們可以知道,如果某一個字體類型的aspect值比較大的話,那麼當font-size屬性值相同的情況下, x-height比較大,因此該字體類型在浏覽器效果會顯得比較大。

例如,Times New Roman字體類型的aspect值為0.46,則意味著當字體大小為100px時,它的x-height為46px。而Verdana字體類型的aspect值為0.58,則意味著當字體大小為100px時,它的x-height為58px。因此,我們得出在font-size屬性值相同情況下,Verdana字體類型在浏覽器效果會比New Times Roman字體類型的大。

舉例:

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>CSS3 font-size-adjust屬性</title>
    <style type="text/css">
        /*定義整體樣式*/
        div{font-size:16px;}
        #div1{font-family:Times New Roman;}
        #div2{font-family:Verdana}
    </style>
</head>
<body>
    <div id="div1">welcome to lvyestudy !</div>
    <div id="div2">welcome to lvyestudy !</div>
</body>
</html>

在浏覽器預覽效果如下:

分析:

不比不知道,一比嚇一跳!相同的font-size值,由於字體類型font-family不同,在浏覽器顯示效果居然差別這麼大!如果網站換字體類型的話,布局想不亂都不行。

下表為一些常用的西方字體的aspect值:

常用西方字體的參考值 字體類型 aspect值 Fjemish Script 0.28 Caflisch Script Web 0.37 Bernhard Modern 0.4 Gill Sans 0.46 Times New Roman 0.46 Minion Web 0.47 Myriad Web 0.48 Georgia 0.5 Trebuchet MS 0.53 Comic Sans MS 0.54 Verdana 0.58

二、如何使用aspect值

c = (a/b)s

說明:

a:表示原來字體類型的aspect值;

b:表示現在字體類型的aspect值;

s:表示原來字體類型的font-size值;

c:表示現在字體類型的font-size值;

上面公式其實很好理解,我們知道aspect值的計算公式是:

 
aspect =(x-height)/(font-size)

由於想要前後字體類型在浏覽器的實際大小都相同,也就是x-height相同。我們用aspect1和font-size1表示“原來字體類型”的aspect值和font-size屬性值,用aspect2和font-size2表示“現在字體類型”的aspect值和font-size屬性值,由此得到2條公式:

 
aspect1 =(x-height)/(font-size1)
aspect2 =(x-height)/(font-size2)

從上面兩條公式,我們得到:

 
(aspect1)/(aspect2)=(font-size2)/(font-size1)

自此,公式已經生成,不用再說大家都理解“c = (a/b)s”這條最終公式了吧?

如果想將“fontsize:16px;”的Times New Roman字體修改為Verdana字體,並且浏覽器顯示的字體大小仍然保持“fontsize:16px;”的Times New Roman字體的大小,需要執行以下步驟:

  • (1)查詢得到Times New Roman字體的aspect值為0.46,Verdana字體的aspect值為0.58;
  • (2)將0.58除以0.46得到近似值1.26;
  • (3)因為需要讓浏覽器實際顯示的字體大小為16px,所以將16px除以1.26得到近似值13px。然後在樣式中指定字體大小為13px。也就是說,13px的Verdana字體相當於16px的Times New Roman字體。

計算方法很簡單,如果你的數學是體育老師教的,沒辦法理解的話,那我就沒話說了。

舉例:

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>CSS3 font-size-adjust屬性</title>
    <style type="text/css">
        #div1
        {
            font-size:16px;
            font-family:Times New Roman;
            font-size-adjust:0.46;
        }
        #div2
        {
            font-size:13px;
            font-family:Verdana;
            font-size-adjust:0.58;
        }
    </style>
</head>
<body>
    <div id="div1">welcome to lvyestudy !</div>
    <div id="div2">welcome to lvyestudy !</div>
</body>
</html>

在浏覽器預覽效果如下:

分析:

通過使用font-size屬性與font-size-adjust屬性,字體從Times New Roman修改為Verdana後,在浏覽器中的字體大小都沒有改變。那有人又有新的疑惑了,字體大小是沒變了,但是上面的單詞間距怎麼不一樣呢?其實每種字體的單詞間距和字母間距都是不一樣的,這個我們可以使用word-spacing屬性和letter-spacing屬性來設置。

font-size-adjust屬性可能在國內網站中很少用到,但是在英文網站的開發中我們經常碰到!對於想要建立英文網站的前端工程師,font-size-adjust屬性是絕對必要知識之一。

參考:本文部分參考來自《HTML5和CSS3權威指南(第2版)》陸凌牛著,機械工業出版社出版

疑問

1、CSS定義的字體在不同的浏覽器中大小不一樣,如何處理?

例如使用font-size:14px定義的宋體文字,在IE下實際高度為16px,下空白是3px,在Firefox浏覽器下實際高是17px、上空1px、下空3px。其解決辦法是在文字定義時設定line-height屬性,並確保所有文字都有默認的line-height值。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved