Obrázek na pozadí horizontální čáry (HR) bez obalového prvku v IE
Rád bořím mýty a hraju si s kaskádovými styly. Dnes jsem si při čtení dávno zaprášených záložek přečetl u Marka Prokopa a Petra Václavka, že se jim v IE nepodařilo zbavit se otravného borderu kolem prvku <hr> tak, aby mohli na pozadí umístit obrázek nějakého jiného, elegantnějšího oddělovače. Já řešení znám.
Chci hezkou čáru, chci ji sémanticky a prakticky
Jde o tohle: máte několik odstavců, které od sebe chcete mít oddělené nějakým hezkým ornamentem či ozdobnou čárou. Zároveň však máte rádi sémantiku a uživatele textových prohlížečů a chcete tedy, aby tyto odstavce byly ve zdrojovém kódu odděleny prvek <hr>. Jaké máte možnosti?
- Pokusit se nastylovat prvek <hr> tak, aby měl patřičnou výšku a na pozadí zobrazoval žádaný ornament. Toto je samozřejmě to nejsémantičtější i nejpraktičtější řešení.
- Ornament zobrazit pomocí background-image na spodek odstavce, kterému nastavíte větší padding-bottom. Vodorovnou čáru, tedy prvek <hr>, skryjete pomocí display: none.
- Vzhledem k tomu, že se vám nepovede realizovat bod jedna, obalíte <hr> prvkem <div>, kterému nastavíte ornament na pozadí, a prvek <hr> skryjete pomocí display: none.
Jak na to půjdou jednotliví kodéři?
- Začínající kodér či kodér ignorující sémantiku dokumentu použije prvek <div> a na nějaké <hr> se vykašle.
- Pokročilejší kodér, který už jednu či dvě stránky vytvořil, se pravděpodobně pokusí o bod 2.
- Kodér-hračička, který chápe kodéřinu jako tvůrčí činnost a ne jako pouhé řemeslo, se bude trápit a pokoušet se o bod 1.
- Kodér-mazák, profík, stroj na layout, se pravděpodobně uchýlí rovnou k řešení 3, protože ví, že trápení se s bodem 1 už mu kdysi v minulosti přidalo pár vrásek.
Kde je problém?
Můžete se ptát, co je tak obtížného na splnění bodu jedna. V tom případě se podívejte na ukázku.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<title>Obrázek na pozadí prvku HR</title>
<style type="text/css">
hr {
border: none;
background: url('obrazek.gif') center center no-repeat;
height: 15px;
}
</style>
<p>Lorem ipsum...</p>
<hr>
<p>Lorem ipsum...</p>
<hr>
<p>Lorem ipsum...</p>
Pokud jste ukázku otevřeli v nějakém moderním prohlížeči, například Firefoxu, Opeře či Safari, vidíte zamýšlený výsledek. Odstavce jsou odděleny třemi čtyřlísky, které jsem si vypůjčil od Marka Prokopa. Pokud jste však použili libovolnou verzi Internet Exploreru (ano, včetně IE7!), vidíte kolem ornamentu okraje čáry i přes to, že pro prvek <hr> jsem ve stylopisu nastavil border: none;
V tomto okamžiku svorně krčí rameny jak Marek Prokop, tak Petr Václavek. Prý řešení neexistuje.
A just existuje…
… byť maličko krkolomné. Ne však pro někoho, kdo si potrpí na čisťounkém a snadno použitelném markupu a kdo nechává veškerou „špinavou“ práci na kaskádových stylech. Po chvilce zkoušení zjistíte, že když nastavíte vlastnost color tak, aby se rovnala barvě pozadí, rámeček zmizne. S ním však i obrázek na pozadí – tudy tedy cesta nevede, ale zato víte, že to, co se zdálo být rámečkem, je ve skutečnosti obsahem (!) prvku <hr>. Napadne vás tedy prubnout záporný text-indent a tento obsah vysunout pryč z obrazovky. To se povede, bohužel obsah s sebou „záhadně“ (vysvětlení je složitější) vezme i obrázek na pozadí. Další slepá ulička, připadáte si jako Jára Cimrman a naštvaně mažete celý zdroják.Takhle nějak si představuji, že skončily veškeré předchozí pokusy. Možná se ještě někdo porozhlédl po internetu a zjistil, že existují nepraktická řešení využívající CSS vlastnosti clip (čára musí být absolutně pozicovaná) nebo filtrů (obsah redukován na 1×1 pixel, nelze tedy na čáru například aplikovat border, background-color nebo opakovat vzorek na pozadí). Možná tato řešení použil a dosáhl tak nejvýš pyrrhova vítězství, které však postrádalo eleganci či praktičnost. Co jsem tedy vymyslel já?
Využití nestandardní vlastnosti zoom
Možná víte, že Internet Explorer dostal do vínku od své pětapůlté verze vlastnost zoom, která umožňuje jednotlivé prvky na stránce libovolně zvětšovat a zmenšovat. Když vám nyní řeknu, že rámeček obsahu <hr> je široký pouhopouhý jeden pixel a že Internet Explorer umí jakž takž správně zaokrouhlovat, možná vás to už trkne.
Stačí pomocí vlastnosti zoom zmenšit čáru na méně než polovinu (v praxi je nejvyšší funkční hodnota 40% původní velikosti) a šířka rámečku kolem obsahu se zaokrouhlí na nulu. Nebudu vás napínat – funguje to. <hr> má navíc jednu příhodnou vlastnost – ať už ji zoomnete jakkoliv, vždy zachovává nastavenou šířku!
Co je pro to v praxi třeba udělat?
- Vzít původní obrázek na pozadí, zvětšit jej na čtyřnásobek (doporučuji pracovat se zoom: 25%) a uložit ho pod jiným názvem.
- Přidat do dokumentu podmíněný komentář, kterým přilinkujete speciální stylopis pouze pro Internet Explorery. Vlastnost zoom je samozřejmě nevalidní, nehyzděte jí svůj hlavní stylopis.
- V tomto speciálním stylopisu nadefinovat nový styl pro čáru, který se od toho původního bude lišit už zmíněnou vlastností zoom, čtyřnásobě velkým obrázkem na pozadí, dále nastavenou čtyřnásobnou výškou (height) a pokud používáte nějaké ohraničení čáry, tak i jeho čtyřnásobnou šířkou.
Výsledek by mohl vypadat nějak takto:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<title>Obrázek na pozadí prvku HR</title>
<style type="text/css">
hr {
border: none;
background: url('obrazek.gif') center center no-repeat;
height: 15px;
}
</style>
<!--[if lte IE 7]>
<style type="text/css">
hr {
background-image: url('ctyrnasobne-velky-obrazek.gif');
height: 60px;
zoom: 25%;
}
</style>
<![endif]-->
<p>Lorem ipsum...</p>
<hr>
<p>Lorem ipsum...</p>
<hr>
<p>Lorem ipsum...</p>
Druhý odkaz ukazuje, že moje řešení dává kodérovi možnost s takto nastylovanou čárou dále pracovat a upravovat ji.
Závěrem…
Není to úplně ideální způsob, ale osobně jej pokládám za první opravdu použitelný – ten jeden obrázek navíc mně osobně za ten efekt stojí. Nejsem si vědom toho, že by na něco podobného přišel někdo přede mnou, ale pokud tomu tak opravdu je – nebo pokud znáte lepší a čistější řešení – prosím, odkažte na ně v komentářích. Příště vám možná ukážu, jak se v IE zbavit toho otravného marginu-nemarginu nad a pod čárou a jak tedy clearovat bez zbytečného vertikálního rozestupu.
Komentáře k tématu vítány.

Lepšie riešenie som ešte nevidel. Gratulujem.
Ale škoda, že IE/Mac nepodporuje vlastnosť zoom.
Jozef: Ano, je to škoda. Stejně tak je škoda, že jej nepodporuje IE5.0 – ale uživatelé těchto zastaralých prohlížečů už jsou zvyklí na vykreslování, které rozhodně není perfektní.
Pokud jde o estetickou záležitost, myslím, že není bezvýhradně třeba lpět na identickém vykreslování i v těchto obstarožních prohlížečích, není-li to jednoduše možné.
Velmi pěkná práce. Myslím, že by tento návod zasloužil překlad a publikování v angličtině -)
Někde mi vypadl středník
Nějak mi ty komentáře nefungují, že by (mo)mentální výpadek? ;–(
Mozna se mi to zda, ale je prvni kvitecek trochu vic zprava oriznut nez jeho zvetsenina?
Tohle jsme asi před dvěma měsíci řešili s Plaváčkem. Zkoušeli jsme, zda by pro klasický image replacement nešlo použít hr namísto prázdného spanu. Řešil jsem to stejně jako ty, v tom problém vůbec nebyl. Ukázal se ale jiný problém – IE nedokáže vykreslit hr vyšší než 100px. Částečným řešením je hr otočit na výšku, pak ale zas nebude širší než 100px :o)
Takže jediná možnost je právě zoom, ale v protisměru – tím se těch 100px přelézt dá, jenže IE začně zvětšovat i obrázek na pozadí. A uznej, že reprezentativní obrázek v headeru stránky prostě nejde zmenšit, uložit a pak roztahovat zoomem.
Dal jsem tehdy dohromady tuším čtyři různá řešení, ale ani jedno nebylo úplně 100%. A pak jsem to naštvaně všechno smazal :o)
No a pak jsem změnil ICQ klienta a přišel tak o historii té debaty s Plaváčkem, takže už si to nemůžu ověřit a paměť slábne :o). Ale on by to třeba někde dohledal…
Hezká práce, Dero a zároveň dík za pomoc, zrovna tu něco podobného řeším. S tímhle prvkem už jsem se navztekal…
Hm, obdivuju lidi co mají čas a chuť si s tím takhle vyhrát. Když pak člověk sedí nad nějakou prací tak většinou nemá chuť řešit podobné blbosti buhví jak dlouho na úkor práce.
Jen otázka: Vy někdo dáváte mezi odstavce čáru? Já jsem se s tímhle problémem taky potkal, ale většinou při odělování nějakých prvků (bloků) které byly graficky nějak oddělené a bylo dobré je oddělit i bez stylů. Ale odstavec sem ještě čárama neodděloval
Tady bych se spíš naopak
přikláněl k tomu, že ta čára je čistě grafický prvek patřící do
stylu, žádné HR ale pěkně jen na pozadí P.
[3] Děkuji, Viléme, na překlad však v současné době nemám čas, takže trik pravděpodobně zůstane znám jen v kotlině české. :o)
[8] Rádo se stalo, Honzo.
[9] Mezi jednotlivé odstavce čáru většinou nedávám a případné ornamenty řeším, jak říkáš, přes obrázek na pozadí. Mezi soustavy odstavců, kapitoly či jiné logické bloky však už ano – a v takovém případě přichází na řadu tento trik.
Aaaaah, to jsem řešil asi před měsícem, škoda že jsem Tvoje řešení neznal. Byl jsem blízko, ale nechtěl jsem se pouštět do takových tweaků pro IE.
Tohle je na webdesignu krásné. Hledání nemožného, hledání atlantidy. Přestavte si, že by IE stránky vykresloval správně, kde by pak byly tyto články?
No dobře, asi by nám vše bylo líp a ušetřili bychom spoustu času, ale stejně… Nekamenujte mě.
Krásná práce, Dero.
pouzivam reseni 3, ale ten zoom vypada dobre… dik za tip :)
btw. taky by me ale zajimalo proc ma ten prvni zeleny kvitek useklou pravou cast… je to videt na obou samplech…
Má to tu nevýhodu, že když přiblížím v IE tak to udělá zas ten efekt jako bez opravy.
[14] Jak „přiblížím“?
Pravděpodobně SneakerXZ taky používá bookmarklet na zoom: javascript:void(document.body.style.zoom=‚200%‘)
[16] Díky za vysvětlení. Popravdě mne nenapadlo, že by někdo mohl používat něco podobného – spíš bych čekal, že takoví uživatelé budou holdovat Opeře.
Na věci to nic nemění, bookmarklety s sebou přinášejí různá překvapení – tohle je jedno z těch méně příjemných. Kdyby někdo chtěl mermomocí přizpůsobit trik i dvojnásobnému zvětšení, musel by v příkladu zaměnit 25% za 20%, veškeré další hodnoty by potom nebyly větší čtyřikrát, ale pětkrát.
No když tak na to koukám, napadá mně že použít div nebo span obsahující odělovací čáru v ASCII (x krát tečky, čáry, či cokoliv nadlšího) nebode nakonec menší zlo něž používání takovýchto složitých konstrukcí
Mám IE7 podržím CTRL a scrolluju.
Koukám a koukám :)
Před cca dvěma roky jsem se s tím taky pral, nakonec mi ruply nervy a pro IE jsem tehda vymyslel nějakou strašnou expression která modifikovala DOM a něco někam vkládala a odstraňovala… hrůza… a pak to asi raši zahodil, protože IE stejně čas od času nesmyslně chyboval nebo ten strom interpretoval špatně… ;)
Gratuluji Dero, je videt ze mas vetsi trpelivost nez ja :)
no, nevím jak vy, ale já HR používám pouze pro oddělování logických bloků – menu od obsahu, obsah od hlavičky atp. základní css vlastností hr bývá u mě něco jako clear: both a visibility:hidden – mají význam pouze a čistě v tom případě, kdy má člověk CSS vypnuté
Potřebuji-li horizontální čáru v ostylovaném dokumentu, dělám to nastavováním border nebo background (top/bottom) daných prvků. Tj. když budu potřebovat oddělit třeba jednotlivé články blogu, tak prostě nastavím nějaký border-top či background: top divu, ve kterém je perex článku, nebo jestli nepoužívám divy, tak třeba H2, který je nadpisem toho daného článku.
Vždycky mi to naprosto vyhovovalo, nikdy nebyla potřeba to dělat jakkoliv jinak, nemám v html bezvýznamové hr, nemusím používat různé podobné nesmyslné konstrukce.
Nicméně uznávám, je to zajímavé, i když to nikdy nepoužiju ;)
[12] gwh: když by prohlížeče byly dokonalé, kodéřina by byla nuda, radujme se že můžeme řešit takové příklady obludnými konstrukcemi… to je to krásné… kdyby mi fungovalo všechno co napíšu a nemusel mlátit hlavou o stůl, fakt by mě to nebavilo… jinak dero gratuluji k takovému výbornému postupu, já se s tím zkoušel prát a zkoušel jsem variantu číslo 1 ( i když mi bylo jasné, že to nepůjde, ale byla to holt výzva) a nakonec jsem toho nechal… hmm a co kdyby přece jen ta jednička šla? je to výzva….
Dobrá práce. Díky
Ja by som si predstavoval riešenie 4: nahlásiť Microsoftu, že border:none u hr v MSIE nefunguje a do týždňa vydajú patch, kde to už fungovať bude
.. inak ja mám zase problém v MSIE s prekrývaním prvku <select> .. keď niečo prekresľujem nad ním (menu), tak nezostane na pozadí. Zatiaľ som to „vyriešil“ skrývaním celého <select>-u cez display:none, ale tiež sa mi to nepáči. Nepoznáte niekto na to lepšiu fintu?
„Příště vám možná ukážu, jak se v IE zbavit toho otravného marginu-nemarginu nad a pod čárou a jak tedy clearovat bez zbytečného vertikálního rozestupu.“
Prosim, prosim, prstickem hrabu, uz aby to bylo :)
a jak by ste to udelali kdybyste nemeli moznost zasahnout do html struktury stranky poze v css
hele kde sis zalozil tenhle svuj blog????????napis mi tu stranku jestli j eot vubec blog
Díky moc, opravdu jsi mi vytrhl trn z paty, neuvěřitelný řešení… Díííky
no nevim kdo to bude pouzivat.
Dakujem, skvele riesenie. It works like a charm
díky moc, je to super.. koho by to napadlo
Pěkné řešení :), obdivuji tvoji trpělivost
Osobně používám variantu „mazáckou“ vylepšenou tak, že se mi obalující div vkládá přes js. Dosáhnu stejné sémantiky jako ty a to bez trápení
V IE8 mi to bohužel nefunguje. :( Ach jo, už aby někdo ty Microsofty převálcoval.
BUY wow power leveling
CHEAP wow gold cheapest wow power leveling
cheap wow gold
MY wow power leveling
<h1>tiffanychina iphonewholesale fashion</h1>
<h1>buy shoesiphone 3gs wholesale无为人生</h1>
replica bagsdfdfdfsd
sdfzumba dvd wholesale wholesale boots wholesale nfl
wholesale MAC Blush</br>sdfdsf wholesale MAC Eyeshadow</br> sdf wholesale MAC Brow pencil</br>
Wangshanghai, a woman of the favorite shopping sites, counter skin care, skin care products purchased direct, popular cosmetics, makeup, perfume, jewelry, apparel, accessories, shoes, bags, mother and child, body care, household products, fine straight purchase, home appliances , online sea, online shopping, mall, online boutique, network transactions 网上购物 美白 To recommend
ddfdsfdsfdksfl kdfkdlkfdskfldsk; dkfdkfdsl;f;dkfdskfldf;dskl;fkldsfkdls;
why raooody ?????
You will love it! China wholesale! Aluminum garlic press Aluminum nut sheller Aluminum nutcrack
Pandora Jewelry tiffany necklace true religion tiffany rings
golf bags
handbags lady bags golf bags
watches replica
replica Tiffany Rings watches
replica Montblanc watches<BR
Tennis Shoes but also offer the necessary thrust
We look forward to your company becoming one of our respected customers, and would appreciate any of your inquiries and sincerely hope to enjoy a fruitful long-term business relationship cheap gucci shoes gucci shoes high womens gucci shoes with clients from all over the world to share in the mutual benefits. Please go through our complete product catalog and company profile to visit more products.
Obrázek na pozadí horizontální čáry (HR) bez obalového prvku v IE I've been to China travel, in my opinion chinese people are very freidly, and i especially like the city of beijingshenzhen, i have a friend from china, i ike her blog discount china, now she is in Jewish, just now, she send me a Jewish Directory website, i think the it is very useful.
herve leger bandage dress
Herve Leger Dresses
herve leger
<p> china wholesale Connector Blush</br> china wholesale Laptop Accessories Eyeshadow</br> dfg china wholesale Computer Peripheral </br>dfg</p>
This might sound insane to you but in the interests of the book I felt I had to try it. And of course it helps that DrTiffany Bangles. LookGood has promised me my stomach will be flat for the rest of my life.Baltimore Ravens This is extremely good news for someone who has suffered from a pot belly since the age of nine andcheap five fingers shoes whose body has been ravaged by three children and industrial quantities of pasta.Audemars Piguet
nderfake juicy couture armour<a
really love your website,I really love your website, it's so useful, i'm just sharing for my friends!Strong winter weather is hitting most of the United States right now. Many of the states that are not used to seeing even the slightest amount of snow, are being bombarded with strong winter weather. If you want to keep warm in this winter you might try adding some boots to your inventory likeUGG boots on sale,ugg boots,ugg boots sale,Very practical.
or . and other as Replica Louis Vuitton HandbagsReplica Chanel Handbags
Do you know ffxi gil?if you play the online game,you will know final fantasy gil is the game gold. In the game,if you had more final fantasy xi gil,you will had a tall level. Quickly come here.
yongyuan
Wow, thank you for the info. I really like your writing style. I finally discovered this information by searching on Google, I really didn’t think I was going to find my answer, but I did. Thanks again for your help!Seo Technical Bar Products Party Dancing Fun Ecommerce Fulfillment
so nice!
abercrombie & fitch london
http://www.eyeskey.com cunjin001
http://www.savi-crane.com cunjin001
so nice!
support you!
LV and future generations,louis handbags not merely those who presently louis bag wallet wish to gain advantage for themselves.
I totally love this article. I think you could write some other things to make your blog more complete.For example: christian louboutin shoes uk louboutin boots
hollisterbootboot
power balance