Tai mano pirmasis straipsnis todėl tikriausiai neišvengsiu klaidų, prašau tai suprasti ir nepykti.

Nusprendžiau parašyti straipsnį apie Internet Explorer’io sąlygos sakinius, o tiksliau sąlygos komentarus (Conditional Comments). Tai žymės (tag’ai) - šiek tiek patobulinta paprasto komentaro versija kurią supranta tik IE 5+, visos kitos naršyklės tiesiog laiko juos paprasčiausiais komentarais ir nekreipia dėmesio į jų turinį.

Skamba nelabai aiškiai, bet pažvelkite į pavyzdį:

#1:

<!- -[if IE]>
Jūs naudojate IE (IE5+ ir naujesnes).
<![endif]- ->

#2:

<!- -[if !IE]>
Jūs NEnaudojate IE.
<![endif]- ->

Gerai įsižiūrėję į šį pavyzdį turėtumėt pastebėti skirtumą tarp pirmojo ir antrojo pavyzdžių. Pirmajame kodas tarp sąlygos žymių (tag’ų) bus vykdomas vartotojams naudojantiems Internet Explorer 5 ar naujesnę naršyklę, o antrajame pavyzdyje kodas bus vykdomas visose naršyklėse išskyrus IE.

Sąlygos tam tikrai versijai

Yra galimybė parašyti sąlygą ir pagal IE versiją pvz.:

#3:

<!- -[if IE 5.5000]>
Jūs naudojate IE 5.5!
<![endif]- ->

#4:

<!- -[if IE 6]>
Jūs naudojate IE 6!
<![endif]- ->

Atkreipkite dėmesį kaip randama 5.5 versija, ji aprašoma kaip 5.5000.

Sąlygos operatoriai

Ankstesniuose pavyzdžiuose jau panaudojau vieną sąlygos operatorių - tai “!”, reiškiantis neigimą. Dabar pažiūrėkim kokie dar operatoriai yra:

Operatoriaus sintaksė Aprašymas
! “ne” operatorius.
lt “less than” (mažiau negu) operatorius.
lte “less than or equal to” (mažiau arba lygu) operatorius.
gt “greater than” (daugiau nei) operatorius.
gte “greater than or equal to” (daugiau arba lygu) operatorius

Naudojantis šiais sąlygos operatoriais galima nuveikti tikrai nemažai.

Šių sąlygos sakinių/komentarų pagalba galima nesunkiai ir neskausmingai išspręsti dažnai kylančias CSS vaizdavimo problemas. Tiesiog parašykite atskirus stilius Internet Explorer’iui ir kitoms naršyklėms.

P.s. tarp brūkšnelių (minusų) kode, tarpų nereikia.

Panašūs straipsniai


“Internet Explorer sąlygos sakiniai - komentarai (if…else)” komentarų: 17

  1. Martinas

    Nesinori čia kažkaip kritikuot, viskas su straipsniu gerai.. bet kokio velnio naudot conditional commentus ir rašyt kelis visiškai atskirus stilių aprašus, jei galima tiesiog panaudoti vienokį ar kitokį css hack’ą viename css apraše (jei, žinoma, tai neišvengiama). Profesionaliau atrodo? Abejoju. Darbo tik daugiau..

  2. Eimantas

    Maniau, kad tai vadinama JavaScript preprocesoriaus teiginiais.

    Gaila, kad nieko apart IE versijos tikrinimo neparašei.

  3. justjust

    CSS hack’ai ne visad geriausias sprendimas, kaip ir šie komentarai, bet kartais vienas geriau ar paprasčiau už kitą.

    Dėl JavaScript tai su juo tai niekaip nesusyją, tai tiesiog IE f-ja, na o CSS pavyzdį ir daviau tik kaip pavyzdį, galima tarp tų sąlygos komentarų ir JS failiuka atitinkama parinkti, ir stilių kokį ir kas tik į galvą šaus.

    P.S. kilo mintis parašyti dar vieną straipsnį vien su šių sąlygos sakinių panaudojimo pavyzdžiais, manau daug kam pravers juk tik copy ir paste ;)

  4. Sergej Kurakin

    Klausikit, man atrodo, ar vietinis WP vel suvalge kazka is kodo. Man rodos ten visur turejo buti — (dvigubi minusai).

  5. justjust

    Sergej teisingai pastebėjo, #1, #3 ir #4 pavyzdžiuose turi būti du minusai, vietoj vieno.

    P.S. 2pvz. viskas tvarkoj

  6. NePo

    Norėčiau užstoti autorių, kadangi iš tiesų jis rašydamas klaidos tikrai nepadarė ir ten yra būtent DU MINUSAI.
    Kodėl musiškis WP atvaizduoja kaip vieną aš nežinau. Reikės spręsti šią problemą.

  7. armands

    Martinui:
    Na cia skonio reikalas, bet man labiau patinka svarus atskiras failas, o ne kratinys, kuriame pilna zvaigduciu slesu ir kt. “hackinimo” elementu :) Mano nuomone - hackams vienas failas, pagrindiniam kitas.

  8. Sergej Kurakin

    Nesu dydelis cross-browser-css specialistas, bet kiek pastebejau iš kolegų-koderių, ši IE šustrumą jie išnaudoja tik tada, kai reikia pakrauti atsikra CSS dali, skitra IE6 ar IE7 bugams/ipatumams pataisyti. Dažniausiai tą IE skirtą CSS dalis buna tik mažas koda gabaliukas, kuris pataiso/papildo tam tikra įpatuma ar skirtuma, kuri Microsoft idejo i IE, padaridamas pakankamai/visiškai vienoda vaizda su kituomis naršyklėmis.

  9. Mr.Killer

    Na žmonės pakentėkit dar kelis metus (apie 5) kai atsiras CSS3 ir tik ~5% žmonių naudos IE6 ir

  10. -

    Sergej Kurakin, tu visiškai teisus.

    Eina vienas stilius visiems puslapiams, ir, ne visada, atskiras ie6.css su keletu pataisymų specialiai ie6. Visa kita, jei rašai normaliai, atrodo identiškai ir taisyti nereikia.

  11. IdeaG

    Mr.Killer, malonu girdeti optimistišką balselį, tačiau manau kad CSS3 normalaus palaikymo teks laukti dar ilgiau. Iki pat šiol dar nei viena iš didžiųjų naršyklių neturi pilno CSS2 standarto palaikymo - http://www.quirksmode.org/css/contents.html . O prisiminkim kad W3C kaip oficialia rekomendacija jį pateike 1998 m. - prieš 9 metus praktiškai. Šiuo metu working draft’o stadijoj vis dar yra ir CSS2 revision 1, o CSS3 tikrai bus paskelbtas oficialia rekomendacija vėliau nei CSS2.1… IMHO drasiai galima teigti, kad dar 2-3 metus CSS3 i rekomendacijos statusa nebus perkelta. dabar pridėk ~ 10 meteliu, kurių, kaip rodo praktika reikia, kad toks standartas būtų perkeltas į pagrindinius browserius…. Na, tarkim 2020 metais jau galima tiketis turėti browserį, normaliai palaikanti CSS3.
    Iš kitos pusės, nemanau kad po 5 metų IE6 vis dar naudos net 5% žmonių. jau dabar IE6 gauna mažiau nei 60% rinkos, o po 5 metų manau tikrai tures mažiau, negu dabar turi IE5 (pagal ta pati šaltinį - 3.5%). Kodėl? yra keletas priežasčių. Pirmiausiai konkuruojančios naršyklės (visų pirma - FF) daro nemažą spaudimą ir vis po truputį atkanda IE rinkos dalies. Taip, IE7 turėtų situaciją kažkiek stabilizuoti, tačiau mes juk kalbam apie IE6, kuriam ir IE7 konkurentas. Kitas dalykas, Windows’ai irgi manau šiek tiek praras rinkos dalies per tuos metus, nes tokie Linux projektai kaip Ubuntu jau visai neblogai tinka ir paprastam useriui, ne tik geek’ui, o tokios akcijos kaip Ubuntu Ship-it, manau padės populiarinant tokias sistemas, kuriose IE6 tikrai neras sau vietos.

  12. asterisk

    Kodėl daugelis naudoja IE6, ir kodėl jis dar greitai neišnyks manau diskutuoti nereikia - nelegalūs windows ;) Mano žiniomis IE7 negausi jei neturi legalių windozių

  13. IdeaG

    na, viena karta pasitares su dede Google per nepilna minute radau bent du tutorial’us, kaip suinstaliuoti IE7 i nelegalius windowsus. Taip kad…

  14. asterisk

    Na tai čia faktas jog galima. Turiu omeny, jog windows tavęs ‘neprivers’ atsinaujint jeigu tu neturi legalių ir nenaudoji windows update, o jeigu niekas neverčia - kam atnaujint ? :)

  15. IdeaG

    5 metai, pakankamai ilgas laiko tarpas, per kurį tikrai didelė dalis namų vartotojų pereis prie Windows Vista, su kuria, kiek žinau IE7 eina po defaultu. Corporate useriai manyčiau bus permesti ant Vistos arba Linux dar greičiau, negu pereis namų vartotojai. IE6 visa karta atsilieka nuo šiuolaikinių browseriu, t.y. IE7 nuo IE6 skiriasi žymiai labiau nei tarkim IE6 nuo IE5, todėl įtariu, kad žymiai didesnė dalis paprastų vartotojų pajaus poreikį iškeisti IE6 į šiuolaikinį browseri, negu kad buvo poreikis, kai IE6 keitė IE5

  16. asterisk

    Galbūt.. bet po 5 metų jau bus windows fiji ir galbūt windows vienna, bus tikriausiai ir IE 8 su jom, tad mes jau svajosim ne apie IE7, o apie IE8 :) ir vėl bus blogai :))
    Anyway.. visa tai tik spėliojimai, dabar reikia taikytis prie padėties, kuri yra šiuo metu, o ne bus po 5 metų ;)

  17. IdeaG

    na, IE6 buvo išleistas 2001 rugpjūtį, o IE7 - 2006 spalį - daugiau nei penkerių metų tarpas. Atsižvelgiant į tai kad tarp IE5 ir IE6 buvo tik poros metų tarpas (1999-2001), tarp IE4 ir IE5 irgi dviejų (1997-1996), o tarp IE3 ir IE4 iš viso tik metai, matosi kad laikas, per kurį pagaminama nauja versija vis ilgėja. Taip kad IE8 gali tekt palaukt ir ilgėliau, juo labiau kad IE7 buvo riebiai atnaujinta ir pagrindinėm savybem praktiškai pasivijo FF ir Operą.
    Kas dėl fiji, stipriai įtariu kad tai bus tik service pack’as Vistai. Jeigu prisiminsim, kad Vistą buvo planuojama išleisti dar 2003, o realiai pasirodo tik šiais metais, tai 2008 metai neatrodo realu Fiji, nebent tai tebus menkutis service pack’as. Na, 5 metu laikotarpyje jis aisku pasirodys :) , tik stipriai abejoju, ar su juo galėtų ateiti IE8. Kas dėl Vienna, netikiu kad bus išleista per artimiausius penkerius metus.
    Aisku, mum gerai niekad nebus, nes naršykės buvo ir bus kreivos. Visai gali buti, kad po 5 metu keiksnosim FF arba opera, ir reikalausim, kad visi naudotu safari ;)

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.