日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

[CSS]复选框单选框与文字对齐问题的研究与解决.

發布時間:2025/7/14 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [CSS]复选框单选框与文字对齐问题的研究与解决. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:
今天碰到的這個問題, 恰好找到一個很好的博文, 在這里轉載過來 學習下.?
原文地址:復選框單選框與文字對齊問題的研究與解決.

目前中文網站上面的文字,就我的個人感覺而言,絕大多數網站的主流文字大小為12px,因為在目前高分辨率顯示器屏幕下,11px的漢字,其像素點開始不規整,文字不如12px來的顯示良好。12px大小的文字就是主流也是底線。然而12px的文字與單選框和復選框是不對齊的。例如下面這張雅虎中國首頁在火狐瀏覽器下的截圖:

雅虎中國首頁單選框復選框與文字不對齊


這里,不是說,雅虎中國的團隊不夠認真,而因為這12px大小文字與單選框和復選框對齊的問題不是好解決的。考慮到兼容性,控件本身的特殊性以及代碼成本的控制等,使得這個問題不是簡單就能解決的。
這不是我第一次研究單選框復選框對齊的問題了,因為平時對這個問題注意的比較多,也經常做些測試,對這個問題還是有一定的了解,也總結了不少自己的解決方法。今天我就寫下來,供交流與參考。

?

一、問題產生的條件
對于14像素大小的字體是沒有本篇所要探討的單(復)選框與文字對齊的問題的。(見下圖)

14像素大小文字與單復選框無對齊的問題


但是,對于12像素大小的文字,則就存在對齊問題了,尤其在Firefox火狐瀏覽器以及chrome谷歌瀏覽器下。(見下圖)

12像素文字相對于單復選框位置偏下不對齊


這就是本文所要研究與解決的問題。這種不對齊的根本原因我不清楚,但我可以肯定的是單復選框與文字默認以vertical-align:baseline的方式對齊的。

?

二、解決方案
下面我將提供五種解決方案,有三個方案沒有使用任何hack,且IE6,IE7,Firefox,chrome瀏覽器下表現都很好的,有一種方案使用了一個IE hack,但成本較低,各個瀏覽器表現良好。還有一種方案,代碼成本很低,但在chrome瀏覽器下文字稍微偏上,使用input類型選擇器,或chrome hack可以解決這個問題,但是對于單復選框這類控件,代碼一多反而不劃算,權衡之下,不針對chrome瀏覽器單獨處理。
這些方案都是我經過平時積累,反復試驗得出的結論,其兼容性值得信賴。要使用的話就給單復選框命名一個class,該class樣式為下面方案提供的css樣式即可。

1.以vertical-align:text-bottom為基礎的
css代碼如下:vertical-align:text-bottom; margin-bottom:2px; *margin-bottom:-2px;
css代碼如下:vertical-align:text-bottom; margin-bottom:2px; margin-bottom:-2px\9;
結果如下圖(以IE6瀏覽器和Firefox瀏覽器示例):

IE6瀏覽器下的樣式表現

?

Firefox瀏覽器下的樣式表現

?

2.以vertical-align:text-top為基礎的
css代碼如下:height:13px; vertical-align:text-top; margin-top:0;
結果如下圖(以IE7瀏覽器和chrome瀏覽器截圖示例):

IE7下的樣式表現

?

chrome下的樣式表現

?

3.以vertical-align:bottom為基礎的
css代碼如下:height:15px; vertical-align:bottom; margin-bottom:3px; margin-top:-1px;
結果如下圖(以IE6和Firefox瀏覽器截圖做示例):

IE6下的表現

?

Firefox下的表現

?

4.以vertical-align:top為基礎的
css代碼如下:height:14px; vertical-align:top;
結果如下圖(chrome下文字略微偏上,其他瀏覽器下很完美,以IE7和chrome瀏覽器示例):

IE7下的表現

?

chrome下的表現-文字偏上

?

5.以vertical-align:middle為基礎的
css代碼如下:vertical-align:middle; margin-top:-2px; margin-bottom:1px;
結果如下截圖(以IE6和Firefox示例):

IE6下的樣式表現

?

Firefox瀏覽器下的表現

?

最后的說明
*未顯示在opera瀏覽器下測試的結果,原因一是opera市場份額奇怪的小,即使不管它也影響不大;二是減輕自己的截圖,對比處理的工作量。這里就直接用文字表述在opera瀏覽器下的表現吧。opera是個怪胎,應該來說,它對標準的支持應該是很好的,但是14像素的文字和單選框復選框卻是不對齊的,當然,12像素更不用說了。但是,在方案3和方案5下的表現卻是意外的好,所以方案3和方案5是不錯的方案。
*IE8瀏覽器下未測試,不是不想測,而是現在手頭上就一臺電腦,IE8由于系統原因,測不了,抱歉。
*以上方案不一定是最優的方法,我沒有加入padding進行測試,還有其他一些屬性,只要有時間,將各類組合一個一個的試驗,可能會找到另外的方法。
*Firefox瀏覽器和chrome瀏覽器下的單選框和復選框默認是由一個margin值的。其兩者的值大小近乎一致,拿chrome瀏覽器舉例。在chrome谷歌瀏覽器下,radio單選框的默認margin值是:margin:3px 3px 0 5px;checkbox復選框的margin值為margin:3px 3px 3px 4px;而IE瀏覽器下似乎沒有margin值,但是對margin敏感。這是不用hack解決對齊問題的難點之一。
*最后,說句結論性的話,方案3和方案5從兼容性,代碼的利用率,css的消耗等來講都是我非常推薦的兩種方法。建議您試試!

作者補充于11月3號凌晨2:40,曾在人人網的css代碼中看到使用vertialc-align:-3px解決此問題,我試過,雖然表現不能用完美形容,但確實緩解了對齊的問題,是個性價比非常高的方法。我是建議您試試的。

尾聲,獻上本文的終極demo實例頁面,狠狠地點擊這里吧。



總結

以上是生活随笔為你收集整理的[CSS]复选框单选框与文字对齐问题的研究与解决.的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。