Inhaltsverzeichnis
Erstes Setup
Chromspezifische Lösung (Nicht-Standard)
Alternative Ansätze: Pseudoelement- und Grenzbildlösungen
Heim Web-Frontend CSS-Tutorial CSS-Ing-Süßigkeiten-Geisterknöpfe

CSS-Ing-Süßigkeiten-Geisterknöpfe

Mar 18, 2025 pm 12:03 PM

CSS-Ing-Süßigkeiten-Geisterknöpfe

Vor kurzem habe ich Coding Inspiration gesucht und mangelndes künstlerisches Talent. Mein Ansatz? Wiederholung visuell ansprechender Kreationen durch andere und konzentriert sich auf sauberen, prägnanten Code. Diese Bonbongeisterknöpfe fangen mir auf!

Sie schienen perfekt für ein schnelles Projekt zu sein. Innerhalb von fünfzehn Minuten habe ich dies im Chrom erreicht:

Diese Technik verdient das Teilen. Dieser Artikel beschreibt meinen Prozess und untersucht alternative Ansätze.

Erstes Setup

Ein einfaches Tastenelement bildet die Basis und enthält ein data-ico -Attribut für die Emoji-Einfügung und eine benutzerdefinierte CSS-Eigenschaft, --slist , für die Stoppliste im Style-Attribut.

 <code>boo!</code>
Nach dem Login kopieren

Nach der Kartikelabschluss entdeckte ich Safaris signifikante Einschränkungen des Ausschnitts zu den Text. Es scheitert Schaltflächenelemente, display: flex (und möglicherweise Raster-) Elemente und Kinderelementtext. Folglich sind die hier beschriebenen Techniken safari-inkompatibel. Die Problemumgehung beinhaltet die Nistung a<span></span> In der Schaltfläche alle Schaltflächenstile auf die antragen<span></span> und sicherstellen, dass es die Grenzbox des Elternteils abdeckt. Für Linux -Benutzer, bei denen der Zugriff auf den physischen Apple -Gerät fehlt, empfehle ich Epiphany (danke, Brian!).

Das CSS verwendet ein ::after Pseudoelement für das Symbol und ein Gitterlayout für die Ausrichtung der Text-/Symbolausrichtung. Grenze, Polsterung, --slist , Stop-Liste für den diagonalen Gradienten und Schriftstyling werden ebenfalls angewendet.

 <code>button { display: grid; grid-auto-flow: column; grid-gap: .5em; border: solid .25em transparent; padding: 1em 1.5em; border-radius: 9em; background: linear-gradient(to right bottom, var(--slist)) border-box; font: 700 1.5em/ 1.25 ubuntu, sans-serif; text-transform: uppercase; &::after { content: attr(data-ico) } }</code>
Nach dem Login kopieren

Klarstellung zum obigen Code: background-origin und background-clip werden auf border-box eingestellt. background-origin positioniert den 0,0-Punkt der background-position am oberen links der angegebenen Box und bestimmt die Referenz für background-size . border-box stellt sicher, dass der Gradient die gesamte Grenzbox umfasst. Die padding-box würde dazu führen, dass der Gradient nur den Polsterbereich abdeckt.

Chromspezifische Lösung (Nicht-Standard)

Diese Methode verwendet drei Maskenschichten und Komposition. Eine Auffrischung zum Maskenkompositing finden Sie in [Link zum Absturzkurs]. Nur der Alpha -Kanal ist in CSS -Maskenschichten von Bedeutung; RGB -Kanäle wirken sich nicht auf das Ergebnis aus.

Wir beginnen mit zwei Schichten: eine vollständig undurchsichtige Schicht, die die Grenzkiste (Alpha = 1 überall) und eine zweite, ebenfalls vollständig undurchsichtige Ebene, die auf die Polsterung beschränkt ist (Alpha = 1 innerhalb der Polsterkasten, 0 außerhalb).

Visualisieren Sie Layoutboxen als verschachtelte Rechtecke. Die untere Schicht ist über die Grenzkasten vollständig undurchsichtig. Die obere Schicht ist in der Polsterkasten undurchsichtig und im Grenzbereich transparent. Die Eckrundung wird durch border-radius (und border-width für die Padding-Box) bestimmt.

Diese Ebenen werden mit dem exclude (oder xor in Webkit) zusammengesetzt. Das Ergebnis: Alpha = 0 innerhalb der Polsterkiste (beide Schichten haben Alpha = 1) und Alpha = 1 in der Grenzfläche (erste Schicht Alpha = 1, zweite Schicht alpha = 0).

Der Code:

 <code>button { /* same base styles */ --full: linear-gradient(red 0 0); -webkit-mask: var(--full) padding-box, var(--full); -webkit-mask-composite: xor; mask: var(--full) padding-box exclude, var(--full); }</code>
Nach dem Login kopieren

Details: Für Kürze werden rote Gradienten verwendet. Für beide Schichten werden Gradienten aufgrund von Einschränkungen des Hintergrund-Clip-Einschränkungen verwendet. Der Standard- mask-composite ist enthalten, wobei die nicht standardmäßige Version überschrieben ist.

Dies erzeugt einen Gradientengrenze, aber es fehlt Text. Hinzufügen einer dritten Maskenebene, die auf Text beschränkt ist (mit transparentem Text), und Xoring mit dem vorherigen Ergebnis fügt den Text zurück. Dies ist jedoch aufgrund des nicht standardmäßigen text für mask-clip verchromtspezifisch. Ein @supports -Block sorgt für die Kompatibilität des Cross-Browsers (ohne Textmaskierung in nicht unterstützenden Browsern).

 <code>button { /* same base styles */ @supports (-webkit-mask-clip: text) { -webkit-text-fill-color: transparent; --full: linear-gradient(red 0 0); -webkit-mask: var(--full) text, var(--full) padding-box, var(--full); -webkit-mask-composite: xor; } }</code>
Nach dem Login kopieren

Dies ist ein einfacher Ansatz, aber sein Vertrauen in nicht standardmäßige Funktionen begrenzt seine Browserkompatibilität. Lassen Sie uns alternative, breit unterstützte Methoden untersuchen.

Alternative Ansätze: Pseudoelement- und Grenzbildlösungen

Die zusätzliche Pseudo-Element-Lösung vermeidet die Maskierung, indem der Hintergrund in den Textbereich abgeschnitten und einen Gradientenrand mit einem absolut positionierten ::before Pseudo-Element hinzugefügt wird. Die Grenzmateriallösung hat zwar einfacher, hat jedoch Einschränkungen bei border-radius . Diese Methoden bieten eine bessere Cross-Browser-Kompatibilität als die chromspezifische Lösung. Weitere Details und Code -Beispiele für diese Methoden finden Sie im ursprünglichen Artikel. Die Mischlösung, die ebenfalls im ursprünglichen Artikel beschrieben wird, bietet einen anderen Ansatz, jedoch mit Einschränkungen hinsichtlich der Hintergrundinteraktion. Jede Methode hat ihre Stärken und Schwächen, abhängig von der gewünschten Unterstützung des Cross-Browser-Supports und der spezifischen Entwurfsanforderungen.

Das obige ist der detaillierte Inhalt vonCSS-Ing-Süßigkeiten-Geisterknöpfe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1665
14
PHP-Tutorial
1269
29
C#-Tutorial
1249
24
Ein Beweis für das Konzept, um Sass schneller zu machen Ein Beweis für das Konzept, um Sass schneller zu machen Apr 16, 2025 am 10:38 AM

Zu Beginn eines neuen Projekts erfolgt die SASS -Zusammenstellung im Blinzeln eines Auges. Dies fühlt sich gut an, besonders wenn es mit Browsersync kombiniert ist, das nachlädt

Ein Vergleich statischer Formanbieter Ein Vergleich statischer Formanbieter Apr 16, 2025 am 11:20 AM

Versuchen wir, hier einen Begriff zu prägen: "Statischer Formanbieter". Sie bringen Ihre HTML

Wöchentliche Plattformnachrichten: HTML -Ladeattribut, die Haupt -ARIA -Spezifikationen und Wechsel von Iframe zu Shadow Dom Wöchentliche Plattformnachrichten: HTML -Ladeattribut, die Haupt -ARIA -Spezifikationen und Wechsel von Iframe zu Shadow Dom Apr 17, 2025 am 10:55 AM

In der Zusammenfassung der Plattformnachrichten in dieser Woche stellt Chrome ein neues Attribut für das Laden, Zugänglichkeitspezifikationen für Webentwickler und die BBC -Bewegungen ein

Der Deal mit dem Abschnittselement Der Deal mit dem Abschnittselement Apr 12, 2025 am 11:39 AM

Zwei Artikel veröffentlichten genau den selben Tag:

Einige praktisch mit dem HTML-Dialogelement Einige praktisch mit dem HTML-Dialogelement Apr 16, 2025 am 11:33 AM

Ich schaue mir das HTML -Element zum ersten Mal an. Ich habe es für eine Weile dessen bewusst, aber Haven &#039; Es wurde es noch nicht für einen Dreh genommen. Es hat einige ziemlich cool und

Multi-Daumen-Schieberegler: Allgemeiner Fall Multi-Daumen-Schieberegler: Allgemeiner Fall Apr 12, 2025 am 10:52 AM

In dem ersten Teil dieser zweiteiligen Serie werden beschrieben, wie wir einen Zwei-Daumen-Schieberegler erhalten können. Jetzt sehen wir uns einen allgemeinen Multi-Thumb-Fall an, aber mit einem anderen und

Wie wir Google -Schriftarten getaggt und Goofonts.com erstellt haben Wie wir Google -Schriftarten getaggt und Goofonts.com erstellt haben Apr 12, 2025 pm 12:02 PM

Goofonts ist ein Nebenprojekt, das von einer Entwicklerin und einem Designer-Ehemann signiert wurde, beide große Fans der Typografie. Wir haben Google markiert

Es ist alles in der Kopf Es ist alles in der Kopf Apr 15, 2025 am 11:01 AM

Der Dokumentkopf ist vielleicht nicht der glamouröseste Teil einer Website, aber was darauf einfließt

See all articles