Přesné obtékání obrázku textem

Tento článek je určen spíše začátečníkům v oboru a to zejména takzvaným hračičkům, budu totiž popisovat, kterak za pomoci pouze HTML a CSS docílit stavu, kdy bude obrázek obtékán přesně podle jeho grafických hranic. Cílem tedy bude dosáhnout tohoto stavu:

Ilustrační obrázek

K dispozici máme tento obrázek:

Ilustrační obrázek

Zelený strom teorie

Jediný použitelný způsob, kterak psát do prostoru, který je vymezen pro obrázek, je nastavení tohoto obrázku jako pozadí nějakého prvku. Vytvoříme si tedy box o libovolné šířce a minimální výšce, která je rovna výšce obrázku. Pro minimální výšku máme v CSS vlastnost min-height. Bohužel Internet Explorer tuto vlastnost nezná, zná však špatně vlasnost height, se kterou nakládá stejně jako rozumné prohlížeče s min-height. Je tedy třeba prohlížeče rozlišit. Já v příkladu používám hack se selektorem potomka, který Internet Explorer nezná a tudíž v něm můžeme nastavit vlastnosti pro ostatní prohlížeče a vynulovat nastavenou výšku.

#box { background-image: url('screw.jpg'); background-repeat: no-repeat; width: 360px; height: 175px; }
body > #box { min-height: 175px; height: auto; }

Nyní můžeme vložit text to boxu #box. Zatím se však bude vykreslovat v celém boxu, tedy i přes obrázek.

Trik

Logicky je třeba nějak zajistit, aby v levé části obrázku v odpovídající míře „něco“ bylo. K tomuto účelu velice dobře poslouží pár plovoucích DIVů s definovanou výškou a šířkou, které vytvoří tzv. plovoucí okraj obrázku a které bude text přirozeně obtékat. Pro jednotlivé divy můžeme v CSS obecně nastavit následující:
div.indent { height: 15px; float: left; line-height: 0; clear: left; }

Výška 15 pixelů je adekvátní z hlediska poměru počtu DIVů a zubatosti okraje. Výška řádku je nastavena na nulu z toho důvodu, aby některé prohlížeče (zcela konkrétně opět Internet Explorer) neměnily výšku DIVu s rostoucí velikostí písma. Clear: left zaručí, že každý DIV bude na samostatném řádku.

V kódu samotné stránky potom chvilku experimentujeme s šířkou a počtem jednotlivých DIVů. Vyjde nám něco takového:

<div id="box">

          <div class="indent" style="width: 70px;">&nbsp;</div>
          <div class="indent" style="width: 90px;">&nbsp;</div>
          <div class="indent" style="width: 110px;">&nbsp;</div>
          <div class="indent" style="width: 120px;">&nbsp;</div>
          <div class="indent" style="width: 130px;">&nbsp;</div>
          <div class="indent" style="width: 150px;">&nbsp;</div>
          <div class="indent" style="width: 170px;">&nbsp;</div>
          <div class="indent" style="width: 190px;">&nbsp;</div>
          <div class="indent" style="width: 210px;">&nbsp;</div>
          <div class="indent" style="width: 210px;">&nbsp;</div>
          <div class="indent" style="width: 210px;">&nbsp;</div>

          Lorem ipsum ...

</div>

8. 11. 2005, 21.04 | (X)HTML, CSS.


Zanechte komentář





Můžete použít Texy! formátování.
Pokud se obsah boxů níže mění, zatímco píšete, potom žádné číslice nevyplňujte. V takovém případě antispam funguje, pouze se prohlížeči nepovedlo skrýt tento box.