CSS 瀏覽器的等寬空格_Div+CSS教程
很多時(shí)候,希望能夠在 HTML 中使用空格排版。但瀏覽器在解析 HTML 時(shí),會把連續(xù)的空格解析成一個(gè),所以我們會使用 等這樣的占位符。
但是 也不是很可靠,比如空格間距非常大,那么我們必須增加多個(gè)占位符,同時(shí)頁面的體積會變得非常大。
同時(shí),注意到 Safari 中的 寬度是已設(shè)定字符的空格寬度(Safari 的默認(rèn)字體為 Times),也就是說一個(gè)中文字符需要兩個(gè)占位符。
具體情況如下圖所示:

其實(shí),這不是 Safari 的問題,而是字體的問題。解決的方式就是使用下面的屬性
font-family: '宋體';將 Safari 的默認(rèn)字體設(shè)置成“宋體”等中英文等寬的字體,就能解決。Windows 版本的 Safari 字體設(shè)置,需要直接使用中文“宋體”這樣的名稱而不是“Simsun”(了解原因的兄弟請告訴我)。
但至此,我們的根本目標(biāo)沒有解決,就是能否避免使用 這樣的占位符,而使用“原生”的空格。考慮針對空白的相應(yīng) CSS 屬性,具體了解有關(guān) white-space 的用法,接下來就比較好處理了。
總結(jié)下使用 white-space 實(shí)現(xiàn)等寬空格的條件,有兩個(gè)。需要設(shè)置對應(yīng)的屬性
white-space: pre;
然后設(shè)置等寬字符(包括等寬空格)即可。綜合起來,就是這樣
font-family: '宋體', Simsun;
white-space: pre;
由于使用了中文 CSS 名稱,所以在實(shí)際使用中需要考慮樣式的字符編碼問題。同時(shí),需要額外考慮的是,蘋果機(jī)是否有“宋體”(或者其他等寬的字體),有蘋果機(jī)的兄弟請幫忙測試下。
--Split--
感謝 小馬 提供的另外一個(gè)思路,就是使用 em 單位。1em 簡單的說,就可以認(rèn)為是一個(gè)字符寬度;同理,.5em 就是半個(gè)字符。那么,上面的情況就可以使用這樣寫。
<span>買<ins class="half-word"></ins>寶<ins class="half-word"></ins>貝:</span><br />
<span>我的淘寶:</span><br />
<span>社<ins class="two-word"></ins>區(qū):</span><br />
對應(yīng)的 CSS 應(yīng)為
.half-word {width: .5em;}
.two-word{width:2em;}
經(jīng)測試通過。
--Split--
針對這上述的兩種不同方法,個(gè)人認(rèn)為應(yīng)當(dāng)按照實(shí)際情況考慮采用。比如第一種方法,雖然依賴具體的等寬字體,但沒有添加其他額外的結(jié)構(gòu),對于以后的維護(hù)會更加的方便;第二種方法,則更多的考慮了實(shí)際的應(yīng)用情況(同時(shí)也不用依賴具體的等寬字體),但是也添加了額外的結(jié)構(gòu)。
所以,如考慮到以后的可維護(hù)性,同時(shí)“語義”的角度上分析,推崇第一種做法。而實(shí)際的應(yīng)用情況下,同時(shí)需要應(yīng)用比較復(fù)雜時(shí),個(gè)人會選用第二種。
- DIV+CSS設(shè)計(jì)的誤區(qū)
- CSS基礎(chǔ):常用CSS英文字體介紹
- IE6和IE7中border邊框斷線現(xiàn)象
- border:none;與border:0;的有什么不同?
- div+css下js對聯(lián)廣告不隨屏幕滾動的解決方法
- HTML元素的ID和Name屬性的區(qū)別
- divcss教程:深入了解css的行高Line Height屬性
- CSS文檔流,塊級元素和內(nèi)聯(lián)元素
- 5個(gè)你該知道的CSS3新技術(shù)
- 用正則表達(dá)式替換a標(biāo)記href值
- 30個(gè)優(yōu)秀的CSS導(dǎo)航和按鈕設(shè)計(jì)教程
- css中px和em有什么區(qū)別
- 相關(guān)鏈接:
- 教程說明:
Div+CSS教程-CSS 瀏覽器的等寬空格
。