Grafika publishing webtip.cz grafika.cz mujiPod.cz mujmac.cz fotografovani.cz printing.cz builder.cz galerie
webtip.cz
adresář  | práce  | diskuse  | redakce  | inzerce
 
 


  Praktická příručka CSS - 11. díl - Viditelnost boxů a jejich obsahu
o autorovi 
poslat mailem 
tisknout článek 
aktuální rubrika 
Popis vlastností overflow, clip a visibility; jejich použití v DHTML.

Staníček Petr - 08.10.2001 - tutorial - Rubrika: HTML
Předchozí díl: Praktická příručka CSS - 10. díl - Výpočet rozměrů
Seriál: 
Následující díl: Praktická příručka CSS - 12. díl - Barvy a pozadí

Obsah toho dílu:


Obsah uvnitř bloků bývá omezen hranami boxu, ale v některých případech může obsah z bloku přetékat (angl. overflow). To se stává tehdy, je-li např. některý řádek obsahu příliš dlouhý a nesmí se zalomit na další řádek; je-li uvnitř boxu jiný blok, jehož některý rozměr je větší než rozměry boxu; když je blok absolutně pozicovaný a jeho obsah se nevejde do stanovených rozměrů; když má obsah záporné hodnoty margin, atd.

V situaci, kdy obsah boxu takto přetéká, nabývá významu vlastnost overflow, která určuje, jak se má s přetékajícím obsahem naložit - zda jej zobrazit celý (třeba i vně rodičovského bloku), nebo jej oříznout (angl. clip), případně jak. Tvar oříznutí obsahu dále definuje vlastnost clip.

Popis vlastnosti overflow

  • povolené hodnoty: visible | hidden | scroll | auto | inherit
  • výchozí hodnota: visible
  • lze použít: blokové a nahrazované prvky
  • dědí se: ne
  • procenta: nelze
  • media: vizuální

Popis povolených hodnot:

visible
Obsah se neořízne, může být zobrazen i vně hranic boxu. Klient však stále může oříznout obsah tak, aby nepřesahoval hranice okna dokumentu.
hidden
Přetékající obsah je oříznut podle hranic boxu a nepoužije se ani žádný posouvací mechanismus (např. scrollbary) - uživatel nemá možnost vidět "odříznutý" obsah. Hranice ořezu definuje vlastnost clip.
scroll
Pokud je obsah oříznut a klient používá nějaký posuvníkový mechanismus (scrollbary, panning atp.), bude zobrazeno ovládání tohoto mechanismu (posuvníky) - tak, aby měl uživatel možnost posouvat se v obsahu a zobrazit i oříznutý obsah. Pokud je specifikována tato hodnota a cílovým médiem je print nebo projection, přetékající obsah bude zobrazen.
auto
Závisí na implementaci v klientu, ale většinou tato hodnota způsobí, že je-li obsah oříznut, použije se hodnota scroll, a pokud není oříznut, použije se visible.

Popis vlastnosti clip

Definuje oblast ořezu (angl. clipping region) - tedy jaká oblast obsahu daného prvku je viditelná.

  • povolené hodnoty: <tvar> | auto | inherit
  • výchozí hodnota: auto
  • lze použít: blokové a nahrazované prvky
  • dědí se: ne
  • procenta: nelze
  • media: vizuální

Popis povolených hodnot:

auto
Plocha má stejný rozměr a polohu jako box(y) daného prvku.
<tvar>
V CSS2 je jediným možným tvarem ořezu obdélník, ale v dalších verzích CSS2 se předpokládají rozšíření i pro neobdélníkové tvary ořezu. Hodnota pro obdélník je ve tvaru: rect(top,right,bottom,left), kde hodnoty top, right, bottom a left určují odstup horní, pravé, dolní, resp. levé hrany ořezu od odpovídajících hran boxu. Těmito hodnotami je buď <velikost> (záporné hodnoty nejsou povoleny) nebo auto, což znamená, že daná hrana ořezu je totožná s odpovídající hranou boxu (tedy totéž jako hodnota 0).

Pokud mají jak prvek, tak i jeho rodičovské prvky definovány v clip nějaké oblasti ořezu, obsah prvku je vykreslen tak, aby byla viditelná pouze oblast, která je průnikem všech dříve definovaných oblastí ořezu.


Popis vlastnosti visibility

Tato vlastnost určuje, zda jsou vykresleny boxy generované prvkem, či nikoli. Neviditelné boxy ale stále ovlivňují vzhled dokumentu (srovnej naopak s vlastností display:none)

  • povolené hodnoty: visible | hidden | colapse | inherit
  • výchozí hodnota: inherit
  • lze použít: všechny prvky
  • dědí se: ne
  • procenta: nelze
  • media: vizuální

Popis povolených hodnot:

visible
Generovaný box je viditelný.
hidden
Generovaný box je neviditelný (zcela průhledný), ale stále ovlivňuje vzhled stránky (prvek ve stránce je, pouze není viditelný).
colapse
Používá se jen u řádků a sloupců tabulek (viz pozdější kapitolu). U ostatních prvků má stejný význam jako hidden.

Praxe

Tyto vlastnosti mají velký význam především v DHTML - zvlášť vlastnost visibility. Chceme-li mít stránku s dynamickým chováním, připravíme si její obsah se všemi prvky, které má obsahovat, a těm, které mají být na počátku skryty, pomocí CSS přiřadíme vlastnost visibility:hidden. Pomocí skriptovacího jazyka (např. Javascriptu) a jeho událostí (events) je potom snadné měnit obsah stránky pouhou změnou této vlastnosti u příslušných prvků - jeden skryjeme a jiný zobrazíme.

Příklad:

...
<SCRIPT type="text/javascript">
<!--
function Skryj(prvek) {
var x=getElementById(prvek);
x.style.visibility="hidden";
}
function Ukaz(prvek) {
var x=getElementById(prvek);
x.style.visibility="visible";
}
-->
</SCRIPT>
...
<BODY>
<SPAN onmouseover="Skryj('osoba2');Ukaz('osoba1')">Ukaz osobu 1</SPAN> -
<SPAN onmouseover="Skryj('osoba2');Ukaz('osoba2')">Ukaz osobu 2</SPAN> -
<DIV id="osoba1" style="visibility:hidden">...</DIV>
<DIV id="osoba2" style="visibility:hidden">...</DIV>

To je pochopitelně velmi triviální příklad - v praxi spíš budeme potřebovat poněkud sofistikovanější postupy. Časté je uložit si všechny dynamické prvky do pole a s ním potom pracovat najednou - má-li se jedna z položek zobrazit, nejprve (pro jistotu) skryjeme všechny ostatní a pak zobrazíme tu jedinou správnou:

...
<SCRIPT type="text/javascript">
<!--
var Prvky = new Array ("clanek1","clanek2","nabidka","odkazy","kontakty");
function Zobraz(n) { for (var i=0;i<Prvky.length;i++) { if (i==n) Ukaz(i,true); else Ukaz(i,false); } } function Ukaz(n,jeVidet) { var x=getElementById(Prvky[n]); x.style.visibility = (jeVidet) ? "visible" : "hidden"; } --> </SCRIPT> ... <SPAN onclick="Zobraz(1)">Clanek 1</SPAN> - <SPAN onclick="Zobraz(4)">Nabidka</SPAN> ... <DIV id="clanek1" style="visibility:hidden">...</DIV> <DIV id="nabidka" style="visibility:hidden">...</DIV>

Pro DHTML je většinou použití visibility vhodnější než display:none, protože neviditelný prvek již je jednou zformátován ve stránce a jeho zviditelnění či skrytí nijak neovlivní celkový vzhled - naproti změna hodnoty ve vlastnosti display může způsobit nové přeformátování stránky a tím i pomalé animace a množství nepěkných vedlejších efektů. Jsou ale situace, kdy je naopak vhodné prvek zcela skrýt - je vždy důležité předem dobře zvážit, který z postupů bude vhodnější.


Mnoho užitečných funkcí pro DHTML najdete v knihovně DHTML Lib, kterou máte k dispozici na mých stránkách http://web.iol.cz/pixy na stránce Praxe-webdesign.

Staníček Petr


Hodnocení článku: -1- -2- -3- -4- -5-  Aktuální hodnocení: 2.63 (2809)

Relevantní články
Žádné články


Příspěvky do diskuse o aktuálním článku
kriplozoik15.01.13:58clip...
Petr Staníček15.01.14:27RE: clip...
kriplozoik16.01.13:01RE: RE: clip...
  

 

  O vydavateli | Kontakt | Ceník reklamy | Ochrana osobních dat
©2002 Grafika Publishing. Všechna práva vyhrazena!