Tutorial CSS - podzielony tekst

Jak utworzyć efekt podzielonego tekstu za pomocą pseudoelementów CSS

W tym poradniku pokażę Ci sprytną technikę wykorzystującą pseudoelementy CSS (::before i ::after) do stworzenia stylowego, warstwowego efektu tekstu. Tekst zostaje podzielony na dwie kolorowe części, lekko przesunięte względem siebie, co daje fajny efekt wizualny — a przy tym pozostaje dostępny dla czytników ekranu.

Hero image

Krok 1: Zacznij od podstawowego kodu HTML

Zaczniemy od prostego elementu <h1> ostylowanego za pomocą CSS.

  <h1>This is some text </h1>  

A oto CSS:

    
h1 {
    font-size: 10vw;
    color: white;
    font-weight: bold;
    position: relative;
}

    
Split text tutorial: image 0
position: relative jest bardzo ważne — zapewnia, że pseudoelementy będą pozycjonowane względem samego elementu <h1>.

Krok 2: Dodaj atrybut danych

Teraz dodamy atrybut `data-slug` do naszego elementu <h1>. Posłuży on jako źródło treści dla pseudoelementów.

  <h1 data-slug="This is some text">This is some text</h1>  
Split text tutorial: image 1

Tekst zawarty w `data-slug` zostanie dynamicznie wstawiony do ::before i ::after przy użyciu funkcji CSS `attr()`.

Krok 3: Dodaj pseudoelementy

Tutaj zaczyna się magia. Użyjemy ::before i ::after, aby sklonować oryginalny tekst, a następnie przytniemy i ostylujemy każdą część w inny sposób.


h1::before {
    content: attr(data-slug);appears here */
    position: absolute;
    color: orange;
    font-size: inherit;
    width: 100%;
    left: 0;
    top: 0;
    z-index: 3;
    clip-path: inset(0 0 40% 0);
    pointer-events: none;
}

h1::after {
    content: attr(data-slug);
    position: absolute;
    color: olive;
    font-size: inherit;
    width: 100%;
    left: 0;
    top: 0;
    z-index: 3;
    clip-path: inset(60% 0 0 0);
    pointer-events: none;
}

Split text tutorial: image 2
Dlaczego clip-path?

W praktyce przecinamy tekst na pół:

::before pokazuje górną część (0-40%).
::after pokazuje dolną część (60-100%).

Przestrzeń między nimi tworzy naturalne rozdzielenie, które później przesuniemy, aby uzyskać efekt warstwowania.

Krok 4: Przesuń warstwy

Aby wzmocnić efekt warstw, lekko przesuniemy każdy pseudoelement.


h1::before {
    left: -2px;
}

h1::after {
    left: 2px;
    top: 2px;
}

Split text tutorial: image 3

Krok 5: Ukryj oryginalny kolor tekstu

Skoro pseudoelementy w pełni kopiują tekst, możemy ustawić kolor oryginalnego tekstu jako przezroczysty:


h1 {
    color: transparent;
}

Split text tutorial: image 4

Krok 6: Dostosuj końcowy wygląd

Chcesz czystszy, jednolity efekt? Po prostu zmień kolory pseudoelementów:


h1::before,
h1::after {
    color: #fff;
}

Split text tutorial: image 5

Efekt końcowy

Masz teraz atrakcyjny efekt tekstowy, który łączy dwie warstwy tej samej treści — świetnie sprawdza się w nowoczesnych interfejsach, tytułach typu hero czy nagłówkach promocyjnych. A ponieważ oryginalny tekst nadal znajduje się w DOM i nie został zmodyfikowany przez JS, pozostaje dostępny dla czytników ekranu.

To wszystko!

Właśnie stworzyłeś fajny, dostępny efekt wizualny przy użyciu czystego CSS. Baw się `clip-path`, kolorami i przesunięciami, aby dopasować projekt do siebie.

Miłej zabawy!

Przewiń do góry
Wordpress I've lately been using:
  • Wordpress
  • PHP
  • CSS
  • jQuery

Summary: Font-end and Back-end developer, also designer with 27+ years of experience. Currently based in Poland. Eligible to work in the US (US Social Security Number holder) for any employer on W2 / 1099 basis. Utilizes both technical skills and designing aptitude. Lived and worked in Europe, Australia and North America.

PHP CMS HTML5 CSS3 RWD OOP MySQL PDO JS jQuery JSON GIT Bitbucket GitHub Gulp