Přejít k navigační liště

Zdroják » Webdesign » Vlastní výřezy obrázků pomocí SVG

Vlastní výřezy obrázků pomocí SVG

Články Webdesign

Mám fotku a chci z ní udělat specifický výřez v přímo v kódu. Pomocí CSS snadno zařídím kulatý, jenže co vlastní tvar?

Nálepky:

Článek původně vyšel na autorově webu Vzhůru dolů.

Příklad jsem ukazoval na přednášce „10 praktických CSS3 a SVG řešení“ na Webexpo 2016.

Náš cíl:

Možností je víc, ale když chci, aby to fungovalo prakticky ve všech prohlížečích, zvolím SVG. Výřez nezvládne jen Internet Explorer 8 a starší. Ale uděláme pro ně docela vyčůrané náhradní řešení, vydržte.

1) Nejdříve fotka v SVG

<svg>
  <image xlink:href="image.jpg" 
    alt="Image">  
</svg>

Namísto prostého <img> použijeme SVG obrázek, abychom na něj mohli aplikovat tvar masky.

2) Definuji tvar výstřižku

<clipPath id="clip-path">
  <path d="…">
</clipPath>

Všimněte si, že zde nepoužívám zanoření do <defs>, oblasti pro vymezení později využívaných objektů. Nefungovalo by to totiž v aktuálních verzích Safari.

3) Výstřižek pak na obrázek nasadím

<image clip-path="url(#clip-path)" …>

A máme skoro hotovo. Nic složitého, že? Ještě trochu vysvětlování a pak ten fallback pro starší prohlížeče.

Nasazení ořezového tvaru (clip-path) dělám přímým parametrem v SVG kódu. Proč jsem nepoužil CSS vlastnost clip-path, která je také standardně k dispozici? Opět kvůli Safari, které ji zatím neumí.

Na obrázku nahoře jste mohli vidět, že jsem si v grafickém editoru naklikal něco jako metalový šestiúhelník.

Vaše maska může pochopitelně vypadat jak chcete vy: trojúhelník, srdce nebo třeba obrys nosu vašeho šéfa. Proti gustu žádný dišputát. A jasně, tvar i obrázek v něm můžete třeba animovat po najetí myši.

Řešení bude fungovat ve všech dnes vyráběných prohlížečích. Ve starých bez podpory SVG obrázek ani ořez neuvidíte.

4) Víte, že prohlížeče znají <image>? Postavíme na tom náhradní řešení pro staré Explorery

Mohli bychom pro ně přidat SVG fallback pomocí značky <desc>:

<desc>
  <img src="image.jpg" alt="…">
</desc>  

Ale neuděláme to. Prohlížeče se totiž tváří, že značku <image> znají, i když by ji znát neměly. Přeborníkem v tomto je, chválabohu, právě Explorer. Náš <image> uvnitř <svg> považuje za <img>, kterému jsme zapomněli přidat parametr src. Švanda, což? To nám ale umožní vrátit se na začátek a udělat vtipně jednoduchý fallback:

<svg>
  <image 
    xlink:href="image.jpg" 
    src="image.jpg" 
    …>  
</svg>

Tady je živá ukázka: cdpn.io/e/jrPpdO.

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Nejvíce hlasů

Fronta před rychlým backendem. Co ukázal veřejný test eDokladů

Veřejný zátěžový test eDokladů přinesl zdánlivě protichůdný výsledek: aplikační servery odpovídaly v milisekundách, zatímco část lidí čekala desítky sekund. Za hlavní omezení závěrečná analýza DIA označila vstupní bránu, jejíž automatické škálování nestačilo na náhlý náběh provozu. Test zároveň ukázal, proč samotný generátor HTTP požadavků nenahradí identity skutečných uživatelů a jejich zařízení.

Cloudflare otevřel zdrojové kódy Cloudflare OS – platformy pro AI agenty, aplikace a firemní práci

AI
Komentáře: 0
Cloudflare otevřel zdrojové kódy Cloudflare OS – platformy, kterou si přes rok testoval sám na sobě a která má dát každému zaměstnanci ve firmě AI agenta rozumějícího interním systémům, procesům a datům. Klíčové na celém řešení není samotné psaní kódu agentem, ale bezpečnostní model postavený na nulovém výchozím přístupu a takzvaných Gatekeeperech, které hlídají nejen to, jaká data agent smí číst, ale i kam se dál mohou dostat.