方向的導航欄

2011年4月25日9:12分由亨利Koblentz |在CSS的101個發展 | 3條評論

我最近碰到一個橫向導航菜單右對齊的鏈接。 正如您所期望的,它是一個列表元素與float:right和列表項與float:left 即使有這種做法沒有錯,它啟發了我藉此機會討論方向性的佈局。

浮動元素的成本

花車沒有方向性的概念,他們不喜歡內聯元素或工作表列(該dir屬性是一個神奇的子彈)。 隨著彩車,作家必須實現一個機制,以“交換”的價值觀時的界面的變化( ltr對比rtl )。

因此,而不是使用float ,作者可能有利於inline-block 下面是一個簡單的例子:

 ul { text-align: end; text-align: right\9; *text-align: right; } li { display: inline; } a { display: inline-block; padding: 5px 15px; margin: 0 5px; } 

請注意,使用“ \ 0 “(無空格),而不是” \9 “會照顧歌劇院,但不得作為面向未來的” \9 “(即只)。

由於這個演示頁顯示,在Chrome,Safari和Firefox中, inline-block技術使得佈局寫作模式依賴(流動的方向相匹配的值的dir屬性,或初始值,如果沒有方向指定)。 對於其他UA的孩子,因為IE的缺乏支持屬性選擇器(即html[dir="rtl"] ),作者需要添加一個鉤標記,以迎合方向的轉變。 例如,對於全面A級兼容性:

對於浮動的技術:
 .rtl ul { float: left; } .rtl ul li { float: right; } 
對於 inline - block的技術:
 .rtl ul { text-align: left\9; /* IE8/9 */ *text-align: left; /* IE5/6/7 */ } 

text-align: start | end

不像leftrightstartend正在編寫模式依賴於關鍵字。 在英語中, start映射到left ,並end映射到right 依托startend ,而不是leftright允許一些瀏覽器做交換( ltr / rtl自動

瀏覽器之間的差異和技術

在瀏覽器不支持“ start / end “(即歌劇)
浮法技術:交換的方向不會改變任何東西
inline - block的技術:交換的方向不會改變路線的菜單,但鏈接將顯示在正確的順序
在瀏覽器都支持“ start / end “(瀏覽器,Safari瀏覽器,火狐)
浮法技術:交換的方向不會改變任何東西
inline - block的技術:交換方向是不夠的方向交換雙方的菜單和鏈接

就是這樣! 下次你要的樣式元素水平,記得給display:inline-blockdisplay:table一試。

蒂埃里Koblentz 關於作者:亨利Koblentz是一個前端工程師,他在雅虎擁有TJK設計的EZ - css.orgCSS的101.org 您可以按照亨利對Twitter的@ thierrykoblentz

共享和擴展: 書籤和書籤 | Digg它! | reddit!

3評論»

RSS提要的評論這篇文章。 引用地址

  1. 亨利,

    這種說法是不正確部分:

    花車沒有方向性的概念

    請參閱此測試系列花車和雙向這項測試顯示浮動菜單中的'勞動教養'方向。 目前,歌劇和WebKit處理溢出錯誤的'勞動教養'方向佈局。

    我要說的是你的方法(破解CSS)是一樣的編碼,使IE7中,快樂。 這不利於 100年代千百萬人誰讀,寫腳本(即希伯來文或阿拉伯文),有'勞動教養'的方向。 在IE7 -,Web開發人員不得不讓 IE7的破解大大,表現在'勞動教養'方向。 一個常見的事,就會看到在這些網頁的CSS與'勞動教養'方向是使用text-align: righttext-align: right實現的正確位置的文本。 我會指出,IE是不是唯一的瀏覽器在處理'勞動教養'方向不佳。

    現在,這也許給你一個驚喜,但IE8的支持RTL的方向正確。 唯一的瀏覽器,這樣做是正確的,是前IE8的壁虎。 我建議你同時浮動 UL和李IE8的權利,而不是黑客或IE9的,因為這個文章補充了這一整個誤傳關於雙向。

    我有一些影響的規範寫作模式和方向。 這是關於邏輯性質float和溢出的RTL溢出和比迪

    評論由阿蘭格雷斯利 - 2011年4月26日

  2. @艾倫

    你是我的困惑。 你提到在你的頁面“浮動:權利或浮動:啟動勞動教養”,但據我所知,沒有這樣的東西“開始”,在規範[1]只列出了leftrightnoneinherit

    一個常見的事,就會看到在這些網頁的CSS與'勞動教養'方向是使用text-align: righttext-align: right實現的正確位置的文本。

    看來這就是你正在使用的是您的測試案例。 即“看得見的溢出和包含塊勞動教養”即使我認為text-align:right在那裡是多餘的, text-align:start會更合適呢。

    另外,請注意,在本文中我“證明”的使用text-align: start|endright|left值僅作為回落。

    其實,你可能已經錯過了這點這篇文章就是要避免在風格不同的事情取決於環境。 您的演示頁面,顯示的下拉菜單中的RTL和LTR上下文交換 float值和左/右特性,這是什麼新鮮事 :-(

    感謝您的反饋!

    [1] http://www.w3.org/TR/CSS21/visuren.html#浮位置

    評論由亨利Koblentz - 2011年4月26日

  3. 哦樂趣。 測試。

    浮動和雙向

    評論由阿蘭格雷斯利 - 2011年4月26日

發表評論

注:意見進行審核的第一次出國。 垃圾郵件刪除。

的XHTML:的<a href="" title="">的<abbr title="">的<acronym title="">的的<b> <blockquote cite=""> <cite>的<code> <del datetime=""> <em>的<i> <q cite=""> <strike>的<strong>

主辦單位雅虎

版權所有© 2006至11年雅虎公司保留所有權利。 隱私權政策 - 服務條款

本站由WordPress的關於雅虎 虛擬主機