Jak vytvořit efekt přechodu obrázku v CSS

Jak vytvořit efekt přechodu obrázku v CSS
Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Efekty při najetí na obrázek mohou vašemu webu přidat další úroveň lesku. Vytvářejí plynulý efekt, díky čemuž je navigace v obrazových galeriích nebo kolotočích příjemnější. Nejlepší na tom je, že tyto efekty můžete vytvářet pouze pomocí CSS a bez JavaScriptu.





jak hodit špendlík na google mapy

Na svých obrázcích můžete vytvořit různé styly animace. Patří mezi ně rozmazání nebo přiblížení pozadí, vyblednutí nebo posunutí textu a změna barvy pozadí.





VYUŽÍVÁNÍ VIDEA DNE POKRAČOVÁNÍ V OBSAHU POKRAČUJTE PŘEJÍMÁNÍM

Vytvoření HTML pro

Začněte vytvořením index.html soubor v prázdné složce v počítači a poté soubor otevřete pomocí textového editoru. Uvnitř souboru vytvořte kostru HTML a do úvodních značek těla a zavírání přidejte následující označení:





 <div class="grid"> 
  <div class="image-wrapper">
    <img class="blur" src="https://picsum.photos/500?random=1" alt="">

    <div class="content fade">
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta ad
      sed at amet blanditiis ullam ipsum delectus sit recusandae vel!
    </div>
  </div>

  <div class="image-wrapper">
    <img class="zoom blur" src="https://picsum.photos/500?random=2" alt="">

    <div class="content fade">
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta ad
      sed at amet blanditiis ullam ipsum delectus sit recusandae vel!
    </div>
  </div>

  <div class="image-wrapper">
    <img class="blur" src="https://picsum.photos/500?random=3" alt="">

    <div class="content slide-left">
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta ad
      sed at amet blanditiis ullam ipsum delectus sit recusandae vel!
    </div>
  </div>

  <div class="image-wrapper">
    <img class="grey" src="https://picsum.photos/500?random=3" alt="">

    <div class="content slide-left">
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta ad
      sed at amet blanditiis ullam ipsum delectus sit recusandae vel!
    </div>
  </div>
</div>

Jedná se o mřížkový kontejner se čtyřmi obaly obrázků. Prvky div s image-wrapper třídy slouží jako obal pro obrázek a jeho odpovídající text. Ke každému obrázku a obsahu sekce je přidána jedinečná sada tříd.

Uvnitř šablony stylů budete zacílit tyto prvky podle jejich názvů tříd a aplikujte různé stylingové a animační efekty. Text se ve výchozím nastavení nezobrazí; zobrazíte jej pouze tehdy, když najedete na obálku obrázku a obrázek bude mít různé efekty.



Přidání základního CSS

Nyní, když jste vytvořili HTML, je čas upravit jej pomocí CSS. Vytvořit styl.css a odkaz na tuto šablonu stylů z vašeho souboru HTML uvnitř souboru sekce:

 <link rel="stylesheet" href="style.css">

Uvnitř vašeho styl.css soubor, první věc, kterou musíte udělat, je resetovat okraj na těle na nulu a nastavit nějaký spodní okraj:





 body { 
  margin: 0;
  margin-bottom: 20rem;
}

Dále musíte proměnit vnější nádobu na a Mřížka CSS, kterou můžete použít k rozložení prvků ve dvou rozměrech . Následující kód vytvoří mřížku s tolika sloupci nebo řádky, které se vejdou. Minimální velikost každého sloupce je 300 pixelů a maximální velikost je 1 zlomek kontejneru:

 .grid { 
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

Protože chcete umístit text vzhledem k jeho kontejneru, musíte nastavit polohu vzhledem k obalu obrázku:





 .image-wrapper { 
  position: relative;
  overflow: hidden;
}

Dalším krokem je stylizace obrázku. Zobrazte obrázek jako prvek bloku, nastavte jej na šířku celého kontejneru a umístěte jej do středu kontejneru:

 .image-wrapper > img { 
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  object-position: center;
}

Pokud jde o text, umístěte jej do středu a vytvořte průhlednou, světle šedou barvu pozadí:

 .image-wrapper > .content { 
  position: absolute;
  inset: 0;
  font-size: 2rem;
  padding: 1rem;
  background: rgba(255, 255, 255, .4);
  display: flex;
  align-items: center;
  justify-content: center;
}

Uložte soubor CSS a otevřete index.html ve vašem prohlížeči. Měli byste najít stránku podobnou té na obrázku níže.

  Snímek obrazovky s obrázky v mřížce

Zapnutí přechodu a textů

Nyní, když jste na obrázky použili základní styly, je dalším krokem přidat k nim nějakou animaci. Začněte přidáním přechodu k oběma obrázkům a jejich odpovídajícímu textu:

 .image-wrapper > img, 
.image-wrapper > .content {
  transition: 200ms ease-in-out;
}

To znamená, že všechny přechodové efekty (tj. roztmívání, přiblížení a rozostření) budou trvat 200 milisekund a budou mít stejnou křivku časování.

Animace Fade-In a Blur

První styl animace v textu mizí. Když umístíte ukazatel myši na konkrétní obálku obrázku, obsah, který má slábnout třída bude mít na sebe tento efekt (animace zatmívání a slábnutí). Toho dosáhnete nastavením krytí na nulu a jeho změnou na jedničku, když myš najede na konkrétní obálku obrázku:

 .image-wrapper > .content.fade { 
  opacity: 0;
}

.image-wrapper:hover > .content.fade {
  opacity: 1;
}

Pokud soubor uložíte a zkontrolujete svůj prohlížeč, uvidíte aktivní animaci prolínání. Ale můžete si také všimnout, že text je trochu špatně čitelný (pokud je obrázek ostrý a má hodně kontrastu). Připomeňme, že všechny obrázky mají také název třídy rozmazat . Slouží k rozmazání obrázků a přidání potřebného kontrastu mezi nimi a textem:

 image-wrapper:hover > img.blur { 
  filter: blur(5px)
}

Nyní, když najedete na obrázek, můžete vidět, že se jen rozmaže. Můžete zvýšit hodnotu pixelů, aby bylo rozmazání na obrázcích výraznější, a tím přidat větší kontrast mezi ním a textem.

Přidání dalších efektů

Další efekty jsou posunutí textu zleva, přiblížení obrázku a přidání stupňů šedi do obrázku. Zde je kód pro dosažení všech tří efektů:

 .image-wrapper > .content.slide-left { 
    transform: translateX(100%)
}

.image-wrapper:hover > .content.slide-left {
    transform: translateX(0%)
}

.image-wrapper:hover > img.grey {
    filter: greyscale(1)
}

.image-wrapper:hover > img.blur {
    filter: blur(5px)
}

.image-wrapper:hover > img.zoom {
    transform: scale(1.1)
}

Uložte soubor, přejděte do prohlížeče a najeďte myší na každý obrázek. Měli byste vidět různé efekty v akci.

  Screenshot obrázku s aktivní animací

Chcete-li dokončit zasouvací efekty, můžete vytvořit tři další obálky obrázků, z nichž každý obsahuje obrázek a text. Každý text bude mít název třídy vysunout , sklouznout dolů, nebo mírně vpravo . Pak byste předali správnou hodnotu pixel, em nebo rem , uvnitř přeměnit() funkce pro vytvoření všech tří efektů.

CSS Grid a Flexbox

CSS Grid a Flexbox jsou dvě funkce, které vám umožní vytvářet fantastické rozvržení pro váš web. Snadno můžete vytvořit prakticky libovolné rozvržení a přizpůsobit si řádky a sloupce podle svého vkusu. Sloupce budou také ve výchozím nastavení responzivní. Když se naučíte, kdy používat jednu přes druhou, pomůže vám to stát se špičkovým vývojářem CSS o jedno procento.