Worklety farb w różnych przeglądarkach i Houdini.how

Wystarczy kilka kliknięć, aby zwiększyć wydajność usługi porównywania cen dzięki modułom pracy Houdini.

CSS Houdini to termin ogólny, który określa serię interfejsów API niskiego poziomu przeglądarki, które zapewniają deweloperom znacznie większą kontrolę nad stylami.

Warstwa Houdini

Houdini umożliwia bardziej semantyczne CSS dzięki modelowi obiektów typu Typed Object. Deweloperzy mogą definiować zaawansowane właściwości niestandardowe CSS za pomocą składni, wartości domyślnych i dziedziczenia za pomocą interfejsu Properties and Values API.

Wprowadza też worklety do obsługi rysowania, układu i animacji, które otwierają przed autorami wiele możliwości, ułatwiając im tworzenie stylów i układu w ramach silnika renderowania przeglądarki.

Elementy Houdini

Worklety Houdini to instrukcje przeglądarki, które działają w wątku głównym i mogą być wywoływane w razie potrzeby. Worklety umożliwiają pisanie modułowego kodu CSS do wykonywania określonych zadań. Do importowania i rejestracji wystarczy jeden wiersz kodu JavaScript. Podobnie jak w przypadku usług workerów w przypadku stylu CSS, worklety Houdini są rejestrowane w aplikacji i po zarejestrowaniu mogą być używane w CSS według nazwy.

Zapisz plik worklet Zarejestruj moduł worklet (CSS.paintWorklet.addModule(workletURL)) Użyj worklet (background: paint(confetti))

Wdrażanie własnych funkcji za pomocą interfejsu CSS Painting API

Przykładem takiego modułu roboczego (moduł roboczy Paint) jest interfejs API do malowania w CSS, który umożliwia deweloperom definiowanie niestandardowych funkcji malowania na podobieństwo obrazu, które można stosować bezpośrednio w CSS jako tła, obramowania, maski itp. Istnieje wiele możliwości wykorzystania CSS Paint w interfejsach.

Zamiast czekać, aż przeglądarka wdroży funkcję zaokrąglonych krawędzi, możesz napisać własny moduł Paint lub użyć opublikowanego wcześniej modułu. Zamiast używać atrybutu border-radius zastosuj tę funkcję do krawędzi i przycinania.

Powyższy przykład używa tego samego modułu paint z różnymi argumentami (patrz kod poniżej), aby uzyskać ten efekt. Prezentacja na stronie Glitch.
.angled {
  --corner-radius: 15 0 0 0;
  --paint-color: #6200ee;
  --stroke-weight: 0;

  /* Mask every angled button with fill mode */
  -webkit-mask: paint(angled-corners, filled);
}

.outline {
  --stroke-weight: 1;

  /* Paint outline */
  border-image: paint(angled-corners, outlined) 0 fill !important;
}

Interfejs CSS Painting API jest obecnie jednym z najlepiej obsługiwanych interfejsów Houdini, a jego specyfikacja jest zaleceniem kandydata W3C. Jest on obecnie włączony we wszystkich przeglądarkach opartych na Chromium, częściowo obsługiwany w Safari i rozważany w przypadku Firefoxa.

Pomoc dotycząca Caniuse
Interfejs API do malowania za pomocą CSS jest obecnie obsługiwany w przeglądarkach opartych na Chromium.

Nawet bez pełnej obsługi w przeglądarkach możesz tworzyć kreacje za pomocą interfejsu Houdini Paint API i sprawdzać, czy Twoje style działają we wszystkich nowoczesnych przeglądarkach za pomocą CSS Paint Polyfill. Aby zaprezentować kilka unikalnych implementacji oraz udostępnić zasoby i bibliotekę workletów, mój zespół stworzył stronę houdini.how.

Houdini.how

Zrzut ekranu strony Worklet
Zrzut ekranu strony głównej Houdini.how.

Houdini.how to biblioteka i strona odsyłająca do zasobów i workletów Houdini. Znajdziesz w nim wszystko, co musisz wiedzieć o CSS Houdini: informacje o obsługiwanych przeglądarkach, omówienie różnych interfejsów API, informacje o użytkowaniu, dodatkowe zasoby oraz próbki dotyczące funkcji live-paint. Każdy przykład na stronie Houdini.how jest obsługiwany przez interfejs CSS Paint API, co oznacza, że działa we wszystkich nowoczesnych przeglądarkach. Sprawdź to!

Korzystanie z Houdini

Worklety Houdini muszą być uruchamiane na serwerze lokalnie lub w produkcji przez HTTPS. Aby pracować z workletem Houdini, musisz go zainstalować lokalnie lub użyć sieci dystrybucji treści (CDN), takiej jak unpkg, aby przesyłać pliki. Następnie musisz zarejestrować widżet lokalnie.

Istnieje kilka sposobów na umieszczenie workletów z galerii Houdini.how w swoich projektach internetowych. Można ich używać za pomocą CDN do tworzenia prototypów lub samodzielnie zarządzać nimi za pomocą modułów npm. W obu przypadkach warto też dołączyć bibliotekę CSS Paint Polyfill, aby zapewnić zgodność z wieloma przeglądarkami.

1. Prototypowanie z wykorzystaniem CDN

Podczas rejestrowania za pomocą unpkg możesz połączyć się bezpośrednio z plikiem worklet.js, nie instalując go lokalnie. Unpkg zwróci jako główny skrypt plik worklet.js lub możesz go określić samodzielnie. Unpkg nie powoduje problemów z CORS, ponieważ jest udostępniany przez HTTPS.

CSS.paintWorklet.addModule("https://unpkg.com/<package-name>");

Pamiętaj, że nie rejestruje to właściwości niestandardowych pod kątem składni i wartości zastępczych. Zamiast tego mają one wartości zastępcze zakodowane w ramach workletu.

Aby opcjonalnie zarejestrować właściwości niestandardowe, dołącz też plik properties.js.

<script src="https://unpkg.com/<package-name>/properties.js"></script>

Aby uwzględnić wypełnienie za pomocą usługi porównywania cen w CSS Paint:

<script src="https://unpkg.com/css-paint-polyfill"></script>

2. Zarządzanie elementami roboczymi za pomocą NPM

Zainstaluj worklet z npm:

npm install <package-name>
npm install css-paint-polyfill

Zaimportowanie tego pakietu nie powoduje automatycznego wstrzyknięcia workletu paint. Aby zainstalować worklet, musisz wygenerować adres URL, który przekierowuje do pliku worklet.js pakietu, i go zarejestrować. Możesz to zrobić:

CSS.paintWorklet.addModule(..file-path/worklet.js)

Na karcie każdego zadania znajdziesz nazwę i link do pakietu npm.

Musisz też uwzględnić usługę CSS Paint Polyfill za pomocą skryptu lub zaimportować ją bezpośrednio, tak jak w przypadku frameworka lub narzędzia do tworzenia pakietów.

Oto przykład użycia Houdini w połączeniu z polyfillem paint w ramach nowoczesnych pakietów:

import 'css-paint-polyfill';
import '<package-name>/properties.js'; // optionally register properties
import workletURL from 'url:<package-name>/worklet.js';

CSS.paintWorklet.addModule(workletURL);

Publikuj

Teraz, gdy już pobawisz się z kilkoma przykładami Houdini, możesz stworzyć własne. Houdini.how nie hostuje żadnych workletów, ale prezentuje prace społeczności. Jeśli masz jakieś treści lub zasoby, które chcesz przesłać, zapoznaj się z repozytorium GitHub z wytycznymi dotyczącymi publikowania. Chętnie zobaczymy, co wymyślisz.