CSS průhlednost a nastavení krytí
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

CSS průhlednost a nastavení krytíCSS průhlednost a nastavení krytí

 

CSS průhlednost a nastavení krytí

Google       Google       1. 5. 2008       85 853×

Možná si někdo z vás pokládal otázku, zda lze pomocí CSS zprůhlednit obrázek, nebo text. Možná už se to někomu podařilo, možná ne. My se proletíme od základů CSS transparentnosti přes moře příkladů až po využití v praxi.

Reklama
Reklama

Jestli jste někdy překrývali vzorek na pozadí své stránky PNG obrázkem, abyste určitou plochu ztmavili, nebo zesvětlili, dělali jste to zbytečně – CSS práci průhledných PNG obrázků zastane. Stejně jako u PNG obrázků si můžete v CSS nastavit míru průhlednosti, velikost plochy, vzorek na pozadí, obrys… Možná se nyní ptáte, proč je lepší udělat průhlednost přes CSS, než přes grafický formát PNG. Odpověď je velice jednoduchá – starší verze IE vůbec nezvládají formát PNG, bohužel.

Základy CSS průhlednosti

Jak moc chceme mít obrázek průhledný? Chceme, aby byl z 50 % průhledný, nebo úplně neprůhledný? Abych vysvětlil pojmy „průhlednost“ a „neprůhlednost“  – když máme obrázek z 5 % průhledný, znamená to, že je z 95 % neprůhledný (tedy skoro v standardním zobrazení, standard je 100 %). Pokud tedy chceme mít obrázek úplně neprůhledný, potom použijeme CSS zápis opacity: 1.0;. Naopak naprosto průhledný obrázek se bude reprezentovat zápisem opacity: 0.0;.

Jak docílit průhlednosti ve všech prohlížečích?

Průhlednost je jedna z těch věcí, které každý prohlížeč zobrazí úplně jinak (popřípadě vůbec). Pro správné zobrazení ve všech prohlížečích potřebujeme čtyři CSS zápisy, které zajistí správné zobrazení v Internet Exploreru, Firefoxu, Opeře, Safari a Netscape Navigatoru. Zde jsou, všechny jsou nastaveny na průhlednost 50 %:

.pruhledne {
	opacity: 0.5;
	filter: alpha(opacity=50);
	-moz-opacity: 0.5;
	-khtml-opacity: 0.5;
}
  • opacity: 0.5; – nejdůležitější zápis, protože je to standard v CSS. Tento zápis bude fungovat v nejnovějších verzích prohlížečů Firefox, Safari a Opera. Bylo by to vše, co k průhlednosti potřebujete, kdyby všechny prohlížeče podporovaly běžné standardy.
  • filter: alpha(opacity=50); – tento zápis potřebujete pro správnou funkčnost v IE.
  • -moz-opacity: 0.5; – aby průhlednost podporovaly i starší verze prohlížeče Netscape Navigator, použijete tento zápis.
  • -khtml-opacity: 0.5; – tímto zápisem otevřete cestu k průhlednosti starším verzím prohlížeče Safari.

Příklady průhlednosti textu

Tento text má nastavenou průhlednost na 25 %. Tento text má nastavenou průhlednost na 50 %. Tento text má nastavenou průhlednost na 75 %. Tento text nemá nastavenou průhlednost.

Možná si nyní říkáte, proč takovýto „stupidní“ příklad vůbec uvádím – že je to jasné. Bohužel, není. Průhlednost textu je totiž ještě o něco komplikovanější, než průhlednost obrázků.

Ze zvědavosti jsem si zkusil malý pokus, který mě o průhlednosti textu mnoho naučil.

Pokus s průhledností textu

Nejspíš si myslíte, že když jde tak lehce zprůhlednit obrázek, že to bude s textem podobné (když jsem poprvé viděl průhlednost přes CSS, také jsem si to myslel). Tento pokus mě naučil, že to tak vůbec není.

Tento text má nastavenou průhlednost na 50 %.

.pokus_pruhledne {
	width: 100%;
	filter: alpha(opacity=50);
	-moz-opacity: 0.5;
	-khtml-opacity: 0.5;
	opacity: 0.5;
}

Všimněte si, že jsme ke čtyřem zápisům transparentnosti přidali ještě zápis šířky (což jsme výše nedělali a vše fungovalo skvěle). To je proto, že průhlednost funguje pouze s přesně specifikovaným rozložením – v IE.

Výše uvedený příklad textu je uzavřen v DIVu. Myslíte, že průhlednost textu bude fungovat, jestliže bude text uzavřen v tagu SPAN?

Ano, avšak pouze se speciálním zápisem zobrazení. Kdybychom chtěli zprůhlednit text ve SPANu, museli bychom do stylů přidat zápis display: block;.

Příklady průhlednosti obrázků

Už výše jsem se zmiňoval o zesvětlení a ztmavení (třeba jen části) obrázku pomocí CSS. Nyní si tento způsob ukážeme v akci.

Máme obrázek jako pozadí DIVu a jeho horní část chceme zesvětlit o 50 % (pomocí CSS). Náš podklad bude mít rozměry 454×180 a bude mít zesvětlený pruh (50px) nahoře. Operovat budeme pouze se 2 DIVy (podklad a DIV, který část obrázku zesvětlí). Náš kód bude vypadat následovně:

<div class="podklad">
	<div class="zesvetleni"></div>
</div>

A CSS zápis:

.podklad {
	width: 454px;
	height: 180px;
	background-image: url(http://programujte.com/galerie/2008/04/200804291654_css_transparent.jpg);
}

.zesvetleni {
	width: 454px;
	height: 50px;
	background-color: #FFFFFF;
	filter: alpha(opacity=50);
	-moz-opacity: 0.5;
	-khtml-opacity: 0.5;
	opacity: 0.5;
}

A takto bude vypadat naše dílo:

Naprosto stejně budeme postupovat, jestliže budeme chtít část obrázku ztmavit, nebo dokonce nabarvit (barvení již barevných obrázků nepovažuji za zrovna šťastné řešení):

Průhlednost a hover efekty

Dalším praktickým využitím CSS transparentnosti je hover efekt. Žádné scripty, pouze jeden obrázek (nadpis, tabulka…), který se při najetí myší změní.

Zápis do CSS je více než jednoduchý, protože jsme u tohoto příkladu pracovali pouze s průhledností.

a.svetlejsi img {
	filter: alpha(opacity=50);
	-moz-opacity: 0.5;
	-khtml-opacity: 0.5;
	opacity: 0.5;
}

a.svetlejsi:hover img {
	filter: alpha(opacity=100);
	-moz-opacity: 1.0;
	-khtml-opacity: 1.0;
	opacity: 1.0;
}

/*---*/

a.normal img {
	filter: alpha(opacity=100);
	-moz-opacity: 1.0;
	-khtml-opacity: 1.0;
	opacity: 1.0;
}

a.normal:hover img {
	filter: alpha(opacity=50);
	-moz-opacity: 0.5;
	-khtml-opacity: 0.5;
	opacity: 0.5;
}

A XHTML kód vypadá následovně:

<a href="#" class="svetlejsi"><img src="http://programujte.com/galerie/2008/04/200804301717_css_transparent3.jpg" width="177" height="132" border="0" /></a>
<a href="#" class="normal"><img src="http://programujte.com/galerie/2008/04/200804301717_css_transparent3.jpg" alt="" width="177" height="132" border="0" /></a>

Průhlednost a onmouseover a onmouseout efekty

Další možnost, kde se dá uplatnit CSS průhlednost, jsou onmouseover a onmouseout scripty.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam sit amet lorem et tellus consequat suscipit. Nunc condimentum facilisis risus.

XHTML kód pro tento příklad je:

<div class="vypnute" onmouseover="this.className='zapnute'" onmouseout="this.className='vypnute'">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam sit amet lorem et tellus consequat suscipit. Nunc condimentum facilisis risus.</div>

A CSS zápis:

div.vypnute {
	width: 450px;
	height: 65px;
	margin: auto;
	background-color: #CCCCCC;
	border: 1px solid #666666;
	color: #000000;
}

div.zapnute {
	width: 450px;
	height: 65px;
	margin: auto;
	background-color: #CCCCCC;
	border: 1px solid #666666;
	color: #000000;
	filter: alpha(opacity=50);
	-moz-opacity: 0.5;
	-khtml-opacity: 0.5;
	opacity: 0.5;
}

Příklad CSS průhlednosti v praxi

Představte si, že máte nádhernou hlavičku, ale název webu tam chcete napsat obyčejným textem. Jak to udělat, aby to nevypadalo blbě? Jak to udělat zajímavější?

AZ Sekačky

Hezký efekt opět zastal poměrně jednoduchý CSS zápis:

div.text_header {
	width: 454px;
	height: 88px;
	background-image: url(http://programujte.com/galerie/2008/04/200804291654_css_transparent.jpg);
}

div.pruhl_text_header {
	width: 454px;
	font-size: 68px;
	color: #FFFFFF;
	filter: alpha(opacity=75);
	-moz-opacity: 0.75;
	-khtml-opacity: 0.75;
	opacity: 0.75;
}

A kód vypadá následovně:

<div class="text_header">
	<div class="pruhl_text_header" align="center">AZ Sekačky</div>
</div>

Závěrem

Co jsme se naučili a co je důležité si pamatovat

  • Poloprůhledné grafické formáty PNG je dobré nahrazovat CSS transparentností.
  • Zápis průhlednosti vyjadřují čísla od 0.0 až po 1.0 (0.1, 0.8…).
  • Aby bylo dílo průhledné ve věch prohlížečích, musíme použít čtyři CSS zápisy.
  • V IE funguje průhlednost textu pouze s přesně stanovenými rozměry.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Roman Bartoš je grafický designér z Prahy. Zaměřuje se na digitální grafiku, tištěnou grafiku a úpravy fotografií.
Web     Twitter     Facebook    

Nové články

Reklama
Reklama
Obrázek ke článku Nový IT hráč na českém trhu

Nový IT hráč na českém trhu

V roce 2015 otevřela v Praze na Pankráci v budově City Tower své kanceláře společnost EPAM Systems (NYSE:EPAM), jejíž centrála se nachází v USA. Společnost byla založená v roce 1993 a od té doby prošla velkým vývojem a stále roste.

Obrázek ke článku České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace (CRA) pořádají druhý ročník CRA IoT Hackathonů. Zájemci z řad vývojářů a fanoušků moderních technologií mohou změřit své síly a během jediného dne sestrojit co nejzajímavější funkční prototyp zařízení, které bude komunikovat prostřednictvím sítě LoRa. CRA IoT Hackathony se letos uskuteční ve dvou fázích, na jaře a na podzim, v různých městech České republiky. Jarní běh se odstartuje 31. března v Brně a 7. dubna v Praze.

Obrázek ke článku Cloud computing je využíván stále intenzivněji

Cloud computing je využíván stále intenzivněji

Využívání cloud computingu nabývá na intenzitě. Jen v letošním roce vzroste podle analytiků trh se službami veřejného cloudu o 18 %, přičemž o téměř 37 % vzrostou služby typu IaaS. Růst o více než pětinu pak čeká služby poskytování softwaru formou služby, tedy SaaS. Aktuálním trendům v oblasti využívání cloudu se bude věnovat konference Cloud computing v praxi, která se koná 23. března. 2017 v pražském Kongresovém centru Vavruška na Karlově náměstí 5.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý