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 ogólny termin opisujący szereg niskopoziomowych interfejsów API w przeglądarkach, które dają programistom większą kontrolę i większą kontrolę nad tworzonymi przez siebie stylami.

Warstwa Houdini

Houdini umożliwia korzystanie z bardziej semantycznego kodu CSS za pomocą typowego modelu obiektu. 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 trafiają do wątku głównego i można je w razie potrzeby wywoływać. Worklety umożliwiają pisanie modułowego kodu CSS do wykonywania określonych zadań. Wymagają tylko jednej linii kodu JavaScript do importowania i rejestrowania. 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 Rejestruj moduł Worklet (CSS.paintWorklet.addModule(workletURL)) Użyj Workleta (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 użytkownika.

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. Następnie zamiast obramowania

Przykład powyżej używa tego samego modułu paint z różnymi argumentami (patrz kod poniżej). Demo na 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 rekomendacją 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.

Obsługa 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ądarce 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ć bibliotekę zasobów i 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 przykłady workletów do tworzenia na żywo. Każda próbka na Houdini.how korzysta z interfejsu CSS Paint API, co oznacza, że działa we wszystkich nowoczesnych przeglądarkach. Sprawdź się!

Korzystanie z Houdini

Worklety Houdini muszą być uruchamiane na serwerze lokalnym 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 w swoich projektach internetowych workletów z prezentacją Houdini.how. Można ich używać przez CDN w ramach prototypowania lub samodzielnie zarządzać listami 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, bez konieczności instalowania 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 spowoduje to zarejestrowania właściwości niestandardowych wartości składni ani wartości zastępczych. Zamiast tego każdy z nich ma wartości zastępcze osadzone w workletze.

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 CSS Paint za pomocą unpkg:

<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 ramach polyfilla paint w nowoczesnych pakietach:

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ż zapoznałeś/zapoznałaś 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.