Direksyon-friendly Navigation Bar

Abril 25, 2011 sa 09:12 ng umaga sa pamamagitan ng Thierry Koblentz | Sa CSS 101 , Development | 3 mga Komento

Ako kamakailan lamang ay dumating sa isang pahalang navigate menu sa right-nakahanay na mga link. Bilang maaari mong asahan, ito ay isang listahan ng elemento float:right karapatan at ang mga listahan float:left sa lumutang: kaliwa. Kahit na doon ay walang mali sa diskarte na ito, inspirasyon ito sa akin upang kunin ang pagkakataong ito upang talakayin ang directionality para sa layout.

Ang halaga ng mga lumulutang na mga elemento

Sa kamay ay walang konsepto ng directionality, hindi nila trabaho tulad ng mga inline na mga elemento o mga hanay ng dir (na kung saan ang dir na katangian ay isang magic bullet). Sa mga kamay, ang mga may-akda ay dapat na ipatupad ang mekanismo sa "swap" halaga ltr ang mga rtl ng interface (ltr kumpara sa rtl).

Kaya sa halip ng float lumutang, ang mga may- inline-block pabor ang inline-block. Narito ang isang simpleng halimbawa:

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

Tandaan na ang paggamit ng \ 0 0 "(na walang espasyo) sa halip ng \9 9 "ay mag-ingat ng Opera, ngunit maaaring hindi bilang hinaharap patunay ng \9 9 "(IE lamang) .

Bilang ang demo na pahina ay nagpapakita, sa Chrome, Safari at Firefox, inline-block block na pamamaraan ay gumagawa layout ang pagsusulat-mode na umaasa (sa direksyon ng daloy tumutugma dir ang halaga ng ang dir na katangian, o ang unang halaga kung ang walang direksyon ay tinukoy). Para sa iba pang UA ng, at dahil ng IE ang kakulangan ng suporta para sa ang katangian ng selector html[dir="rtl"] "]), ang mga may-akda kailangan upang magdagdag ng isang hook sa markup sa mangontrata ng pagpapakain sa pagbabago ng direksyon. Halimbawa, para sa buong A-grade pagkakatugma:

Para sa lumutang pamamaraan:
 .rtl ul { float: left; } .rtl ul li { float: right; } 
Para sa mga inline na-block na pamamaraan:
 .rtl ul { text-align: left\9; /* IE8/9 */ *text-align: left; /* IE5/6/7 */ } 

text-align: start | end

Hindi tulad ng left at right , start simula end pagtatapos ay pagsulat-mode umaasa keyword . Sa Ingles, start ang mga left sa end at end right mga mapa sa kanan. Umasa sa start at end kaysa sa left at right ay nagbibigay-daan sa ilang mga browser na ltr ang rtl (ltr / rtl) awtomatikong.

Pagkakaiba sa pagitan ng mga browser at mga pamamaraan

Sa mga browser na hindi sumusuporta sa " start / end "(IE, Opera)
pamamaraan ng lumutang: swapping direksyon ay hindi baguhin ang anumang
inline-block na pamamaraan: swapping direksyon ay hindi baguhin ang pagkakahanay ng menu, ngunit ang mga link ay ipinapakita sa ang tamang sequence
Sa mga browser na support start simulang end dulo "(Chrome, Safari, Firefox )
pamamaraan ng lumutang: swapping direksyon ay hindi baguhin ang anumang
inline-block na pamamaraan: swapping direksyon ay sapat na upang magpalitan ng direksyon ng parehong menu at ang mga link

Iyan na ito! Susunod na oras na mayroon kang mga elemento estilo pahalang, tandaan na display:inline-block - display:table : table ng isang subukan.

Thierry Koblentz Tungkol sa may-akda: Thierry Koblentz ay isang harap-end na engineer sa Yahoo! Siya ay nagmamay- ari ng TJK Design , ez-css.org at css-101.org. Maaari mong sundin ang Thierry sa Twitter sa @ thierrykoblentz .

Ibahagi at i- extend: Bookmark sa del.icio.us | Digg ito ! | reddit!

3 Comments »

RSS feed para sa mga komento sa post na ito TrackBack URI

  1. Thierry,

    Ang pahayag na ito ay bahagyang tama:

    Sa kamay ay walang konsepto ng directionality

    Mangyaring tingnan ang test serye para sa mga kamay at bidirection at ang pagsubok na ito nagpapakita floated menu sa direksyon na 'rtl'. Kasalukuyan Opera at WebKit humahawak overflow mali sa mga itinuro na layout ng 'rtl'.

    Ko sabihin na ang iyong diskarte (taga CSS) ay tulad ng coding sa IE7-masaya. Na ito ay hindi makakatulong sa mga 100s ng mga milyon-milyong mga mga tao na basahin at magsulat ng mga script (ie. na Hebreo o Arabic) na 'rtl' na direksyon. Sa IE7-, web developer ay pataga lubhang sa IE7-kumilos sa direksyon na 'rtl'. Ang isang karaniwang bagay na makita sa CSS para sa mga pahina na may '' direksyon ng rtl ay ang text-align: right ihanay text-align: right ihanay: karapatan na makamit ang tamang paglalagay ng teksto. Ako ay estado na ang IE ay hindi lamang ang browser na hawakan 'rtl' na direksyon mahina.

    Ngayon na ito siguro isang sorpresa sa iyo ngunit IE8 ay sumusuporta sa tama rtl direksyon. Ang tanging mga browser na ito kanan bago IE8 ay Gecko. Iminumungkahi ko na lumutang ang parehong ul at li kanan at hindi magtadtad ng mga IE8 o IE9 dahil ito ay masyadong na artikulo ay nagdadagdag sa buong maling impormasyon tungkol sa bidirection.

    Ako ay may ilang impluwensiya sa spec sa pagsulat ng mode at direksyon. Ito ay tungkol sa lohikal na mga katangian , lumutang at overflow para sa rtl at overflow at bidi.

    Puna sa pamamagitan ng Alan Gresley - Abril 26, 2011 #

  2. @ Alan

    Ay nakalilito sa akin. Nabanggit mo sa iyong mga pahina ng "lumutang: karapatan o magpalutang: simulan para sa rtl", ngunit tulad ng alam ko walang ganoong bagay bilang "simulan" sa ang spec [1] na lamang ang mga listahan left kaliwa right kanan none none inherit magmana .

    Ang isang karaniwang bagay na makita sa CSS para sa mga pahina na may '' direksyon ng rtl ay ang text-align: right ihanay text-align: right ihanay: karapatan na makamit ang tamang paglalagay ng teksto.

    Mukhang na kung ano ang iyong ginagamit sa iyong mga kaso sa pagsubok. is "Makikita overflow at Naglalaman Block para sa rtl" kahit na tingin ko text-align:right karapatan sa kalabisan at text-align:start simulan na ay mas nararapat pa rin .

    Gayundin, mangyaring tandaan na sa artikulong ito ako ang "ipakita" ang paggamit ng text-align: start|end right|left kaliwa mga halaga ay ginagamit lamang bilang isang umurong .

    Talaga, maaari mong nasagot ang buong punto ng artikulong ito na kung saan ay upang maiwasan ang pagkakaroon sa mga bagay estilo na naiiba depende sa konteksto. Ang iyong pahina ng demo na nagpapakita sa dropdown menu sa RTL at LTR contexts swaps magpalutang ng mga halaga at kaliwa / kanan na mga katangian, na kung saan ay walang bagong :-(

    Salamat sa iyong puna!

    [1] http://www.w3.org/TR/CSS21/visuren.html # magpalutang-posisyon

    Puna sa pamamagitan ng Thierry Koblentz - Abril 26, 2011 #

  3. Oh ang saya. Pagsubok.

    sa kamay at bidirection

    Puna sa pamamagitan ng Alan Gresley - Abril 26, 2011 #

Mag-iwan ng komento

Tandaan: Comments ay may tagapamagitan para sa unang-timers. Spam tinanggal.

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

Host sa pamamagitan ng Yahoo!

Copyright © 2006-2011 Yahoo! Inc. Lahat ng karapatan ay reserbado. Patakaran sa Privacy - Mga Tuntunin ng Serbisyo

Pinapatakbo ng WordPress sa Yahoo! Web Hosting .