CSS clip-path aneb je libo rovnostranný šestiúhelník?

Jak vytvořit ořezovou masku pro rovnostranný šestiúhelník vepsaný do čtverce pro CSS vlastnost clip-path? Zadání jednoduché, ale bohužel jsem nikde nanašel a tak jsem musel oprášit starou dobrou geometrii a pár vzorečků a masku si vytvořit sám.

Co je to clip-path?

Tato CSS vlastnost slouží k oříznutí HTML prvku podle zadané ořezové masky. Je to v zásadě obdoba masek, jaké známe v grafických programech typu Adobe Photoshopu atd. S touto vlastností jdou dělat hotové psí kusy.

Jak vytvořit ořezovou masku

Vytvářet ořezovou masku by bylo trochu zdlouhavé a pracné a tak na internetu naleznete spoustu online nástrojů, které vám s tímto pomůžou.

Jako HTML element obrázek

Pro naše pokusy použijeme obrázek <img> - čtverec. Lze ale použít jakýkoliv HTML prvek, např. <div>, <span> atd.

Eastburger logo square

Šestiúhelník

Eastburger logo square

<img class="hexagon1" src="">
.hexagon1{
  clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
}

Eastburger logo square

<img class="hexagon2" src="">
.hexagon2{
  clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
}

Rovnostranný šestiúhelník

No to už začíná být zajímavější a ať jsem hledal jak jsem hledal, ořezovou masku pro rovnostranný šestiúhelník vepsaný do čtverce jsme nenašel. A tak jsem oprášil starou dobrou geometrii a pár vzorečků a masku jsem si spočítal sám.

Eastburger logo square

<img class="hexagon3" src="">
.hexagon3{
  clip-path: polygon(50% 0%, 93.3% 25%, 93.3% 75%, 50% 100%, 6.7% 75%, 6.7% 25%);
}

Eastburger logo square

<img class="hexagon4" src="">
.hexagon4{
  clip-path: polygon(25% 6.7%, 75% 6.7%, 100% 50%, 75% 93.3%, 25% 93.3%, 0% 50%);
}

Místo čtverce obdélník

Další možnost je použít masky pro šestiúhelník (první ukázka) ale neaplikovat je na čtverec, ale na obdélník. Zde je ale potřeba znát přesný poměr stran obdélníku, aby byl výsledek skutečný rovnostranný šestiúhelník.

Autor: Ing. Radek Urban

17. 5. 2023