<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>CSS-Weblog</title>
	<subtitle>CSS-Weblog</subtitle>
	
	<link href="http://css-weblog.de/feed.xml" rel="self"/>
	<link href="http://css-weblog.de"/>
	<updated>2026-07-09T14:21:29Z</updated>
	<id>http://css-weblog.de</id>
	<author>
		<name>Jens Grochtdreis</name>
		<email>jens@grochtdreis.de</email>
	</author>
	
	<entry>
		<title>Accessible Name</title>
		<link href="http://css-weblog.de/linktipps/accessible-name.html"/>
		<updated>2026-07-09T00:00:00Z</updated>
		<id>http://css-weblog.de/linktipps/accessible-name.html</id>
		<content type="html">
&lt;ul class=&quot;linklist&quot;&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://accessibleit.disability.illinois.edu/courses/aria-intro/slide14.html&quot;&gt;Accessible Name Calculation&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.w3.org/WAI/ARIA/apg/practices/names-and-descriptions/#accessiblenameguidancebyrole&quot;&gt;Providing Accessible Names and Descriptions&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.stefanjudis.com/today-i-learned/the-order-of-accessible-name-computation-steps/&quot;&gt;The order of accessible name computation steps&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://russmaxdesign.github.io/html-elements-names/&quot;&gt;HTML elements and accessible names&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.allaccessible.org/de/blog/implementing-aria-labels-for-web-accessibility&quot;&gt;ARIA Labels for Web Accessibility: Complete 2025 Implementation Guide&lt;/a&gt;
    
&lt;/li&gt;
  
&lt;/ul&gt;</content>
	</entry>
	
	<entry>
		<title>WAI-ARIA</title>
		<link href="http://css-weblog.de/linktipps/wai-aria.html"/>
		<updated>2026-07-09T00:00:00Z</updated>
		<id>http://css-weblog.de/linktipps/wai-aria.html</id>
		<content type="html">
&lt;ul class=&quot;linklist&quot;&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.w3.org/TR/wai-aria&quot;&gt;WAI-ARIA 1.1&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.w3.org/WAI/ARIA/apg/&quot;&gt;ARIA Authoring Practices Guide&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.w3.org/TR/using-aria&quot;&gt;Using ARIA&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.w3.org/TR/html-aria/#document-conformance-requirements-for-use-of-aria-attributes-in-html&quot;&gt;ARIA in HTML&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.digitala11y.com/wai-aria-1-1-cheat-sheet/&quot;&gt;WAI-ARIA 1.1 Cheat Sheet • DigitalA11Y&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.barrierefreiheit-dienstekonsolidierung.bund.de/Webs/PB/DE/umsetzungshilfen/webentwicklung/aria/aria-node.html&quot;&gt; Deutsche Einführung / Überblick in ARIA&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://afixt.com/how-to-use-aria-roles-and-properties-effectively/&quot;&gt;How to Use ARIA Roles and Properties Effectively - AFixt&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Learn/Accessibility/WAI-ARIA_basics&quot;&gt;WAI-ARIA basics - Learn web development | MDN&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;http://whatsock.com/training/matrices&quot;&gt;The ARIA Role Conformance Matrices&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.barrierefreies-webdesign.de/knowhow/msaa/checkpunkte.html&quot;&gt;Worauf bei ARIA zu achten ist - ARIA und die Accessibility-API&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.w3.org/WAI/standards-guidelines/aria&quot;&gt;WAI-ARIA Overview | Web Accessibility Initiative (WAI) | W3C&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://tollwerk.de/projekte/tipps-techniken-inklusiv-barrierefrei/semantik-wai-aria-und-assistive-technologien&quot;&gt;Semantik, WAI-ARIA und assistive Technologien | tollwerk&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://tollwerk.de/projekte/tipps-techniken-inklusiv-barrierefrei/aria-live-regionen&quot;&gt;ARIA-Live-Regionen&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://htmhell.dev/adventcalendar/2023/22/&quot;&gt;ARIA Live Regions - HTMHell&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://dequeuniversity.com/library/aria/liveregion-playground&quot;&gt;Live Region Playground&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.stefanjudis.com/notes/accessible-notifications/&quot;&gt;Accessible notifications&lt;/a&gt;
    
&lt;/li&gt;
  
&lt;/ul&gt;</content>
	</entry>
	
	<entry>
		<title>Wichtige a11y-Links</title>
		<link href="http://css-weblog.de/linktipps/wichtige-a11y-links.html"/>
		<updated>2026-07-09T00:00:00Z</updated>
		<id>http://css-weblog.de/linktipps/wichtige-a11y-links.html</id>
		<content type="html">
&lt;ul class=&quot;linklist&quot;&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/quickref/&quot;&gt;How to Meet WCAG (Quickref Reference)&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://thisiswcag.com/&quot;&gt;This is WCAG&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://handreichungen.bfit-bund.de/barrierefreie-uie/0.3/bedienelemente.html&quot;&gt;Bedienelemente - Barrierefreie Gestaltung von User Interface-Elementen&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://w3c.github.io/html-aam&quot;&gt;HTML Accessibility API Mappings 1.0&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.thewcag.com/testing-guide&quot;&gt;Accessibility Testing Guide 2025 - Complete WCAG 2.2 Testing Methodology&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://afixt.com/how-to-conduct-an-accessibility-audit-a-step-by-step-guide/&quot;&gt;How to Conduct an Accessibility Audit: A Step-by-Step Guide - AFixt&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://romeo.elsevier.com/accessibility_checklist/&quot;&gt;Guidelines - Accessibility Checklist&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.a11yproject.com/checklist/&quot;&gt;Checklist - The A11Y Project&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://www.magentaa11y.com/&quot;&gt;Accessibility checklist&lt;/a&gt;
    
&lt;/li&gt;
  
    &lt;li&gt;
    &lt;a href=&quot;https://inclusive.microsoft.design/&quot;&gt;Microsoft Inclusive Design&lt;/a&gt;
    
&lt;/li&gt;
  
&lt;/ul&gt;</content>
	</entry>
	
	<entry>
		<title>CSSDay 2025</title>
		<link href="http://css-weblog.de/notizen/cssday-2025.html"/>
		<updated>2025-07-06T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/cssday-2025.html</id>
		<content type="html">&lt;p&gt;Am 5. und 6. Juni 2025 fanden die &lt;a href=&quot;https://cssday.nl/&quot;&gt;CSSDays&lt;/a&gt; in Amsterdam zum elften Mal statt und ich hatte es endlich dahin geschafft. Meist kam in den letzten Jahren Urlaub dazwischen. Die Reise hatte sich gelohnt.&lt;br /&gt;
Die CSSDays sind eindeutig eine Konferenz für CSS-Profis. Keine überflüssigen Einführungen in bekannte Techniken. Die Teilnehmer werden als Profis ernstgenommen. Das bedeutete:&lt;/p&gt;
&lt;ul class=&quot;list list--ul&quot;&gt;
&lt;li&gt;Die Vortragenden gingen meist direkt ins Thema, hielten sich nicht mit zuviel Details auf.&lt;/li&gt;
&lt;li&gt;Wir bekamen von vielen Vortragenden die schon fast flehende Bitte, man möge sich doch am Standardisierungsprozess beteiligen. Dabei wurden vor allem Bugreports, Feature-Requests und Fallbeispiele gewünscht.&lt;/li&gt;
&lt;li&gt;In vielen Beispielen wurden wie selbstverständlich Techniken verwendet, über die ich maximal gelesen hatte, aber nie eingesetzt habe. Und sie scheinen abseits von Protytotypen und Artikeln sinnvoll zu sein.&lt;/li&gt;
&lt;li&gt;Eigene Notizen waren mir fast unmöglich. Ein länger ausformulierter Gedanke und ich habe den nächsten oder sogar übernächsten Inhalt verpasst.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Notizen?&lt;/h2&gt;
&lt;p&gt;Das Fehlen eigener Notizen wurde durch zwei Menschen ausgeglichen, die tolle Sketchnotes erstellten und dann auf Bluesky hochluden (&lt;a href=&quot;https://bsky.app/profile/erblack.me&quot;&gt;Account 1&lt;/a&gt;, &lt;a href=&quot;https://bsky.app/profile/ankedesign.bsky.social&quot;&gt;Account 2&lt;/a&gt;). Die offizielle Kommunikation mit dem Hashtag &lt;a href=&quot;https://bsky.app/hashtag/cssday&quot;&gt;#cssday&lt;/a&gt; lief ausschliesslich über Bluesky.&lt;/p&gt;
&lt;p&gt;Jeder Vortrag und jede Q&amp;amp;A im Nachgang wurde live von &lt;a href=&quot;https://bsky.app/profile/did:plc:vpxbyqkjhudaldaaurajktr4&quot;&gt;Amanda aus New Mexiko&lt;/a&gt; (!) transkribiert. Die Transkription lief mit einem ganz kurzen Versatz auf einem großen Bildschirm mit. So konnte jeder, egal ob hörgeschädigt oder nicht, den Vorträgen auch lesend folgen. Bei manchen hingenuschelten Worten war mir das eine große Hilfe. Amanda zeigt &lt;a href=&quot;https://bsky.app/profile/asignia.bsky.social/post/3lqwheg5kb22t&quot;&gt;in einem Post&lt;/a&gt; ihr technisches Setup. Sie hat offenbar eine Art Tastatur, über die sie Steno tippt. Einfach irre.&lt;/p&gt;
&lt;h2&gt;Wichtige Nebensächlichkeiten&lt;/h2&gt;
&lt;p&gt;Die Struktur des Tages war gut durchdacht. Morgens gab es nach dem ersten Vortrag eine längere Kaffeepause und danach kamen immer zwei Vorträge hintereinander, denen dann eine Pause folgte.&lt;/p&gt;
&lt;p&gt;Die Mittagspause war sehr lang und dadurch auch sehr erholsam. Überall poppten kleinen Diskussionszirkel auf, nebenher wurde auch gegessen. Das Buffet war nicht übermässig voll, was ich sehr gut finde. Niemand ist aus kulinarischen Gründen bei einer Konferenz.&lt;/p&gt;
&lt;h2&gt;Die Vorträge&lt;/h2&gt;
&lt;p&gt;Die Liste der Teilnehmer und Themen war vielversprechend. Ich versuche einen kurzen Überblick zu geben.&lt;/p&gt;
&lt;h3&gt;Adam Argyle: Level up your scroll UX&lt;/h3&gt;
&lt;p&gt;Adam Argyle kümmerte sich um Scrollbars. Ihn interessierten dabei weniger die der Seite, als die der Module auf einer Seite. So ganz nebenbei erzählte er von Unterschieden zwischen Browsern (Safari tanzt wieder aus der Reihe), gegen die man nichts machen kann. Bei ihm sah ich die schöne Idee, die einzelnen Schritte eines Codes in &lt;code&gt;@layer&lt;/code&gt; zu unterteilen und die dann als &lt;code&gt;@slayer&lt;/code&gt; erst einmal “auszuschalten”. Durch das Löschen des hinzugefügten “s” wird der &lt;code&gt;@layer&lt;/code&gt; wieder interpretiert.&lt;/p&gt;
&lt;p&gt;Adam schoss wie immer ein Feuerwerk an Beispielen und tollen Ideen ab. Wie gut, dass er seine Experimente immer offen [in Codepen]&lt;br /&gt;
(&lt;a href=&quot;https://codepen.io/collection/JYdmwr&quot;&gt;https://codepen.io/collection/JYdmwr&lt;/a&gt;) oder &lt;a href=&quot;https://nerdy.dev/cssday-2025&quot;&gt;auf seiner Seite&lt;/a&gt; dokumentiert und seine Talks veröffentlicht. Es ist quasi unmöglich alle guten Ideen und Details mitzuschreiben. Aber ein Nacharbeiten &lt;a href=&quot;https://css-day-2025.argyleink.deno.net/&quot;&gt;seines Vortrags&lt;/a&gt; ist sicherlich sehr hilfreich. Und dabei sollte man immer auch auf mögliche cross-browser Probleme achten, die Adam gerne mal unter den Tisch fallen lässt. Der Vortrag zeigte, dass man sich viel Gedanken über Details machen kann und sollte. Und er zeigte dadurch auch, wieviel heute möglich ist.&lt;/p&gt;
&lt;h3&gt;John Allsopp: A Dao of CSS&lt;/h3&gt;
&lt;p&gt;John Allsopp veröffentlichte im Jahr 2000 bei A List Apart einen Grundsatzartikel, der noch heute lesbar und wahr ist: &lt;a href=&quot;https://alistapart.com/article/dao/&quot;&gt;A Dao of Webdesign&lt;/a&gt;. In seinem aktuellen &lt;a href=&quot;https://webdirections.org/talks/cssday25/&quot;&gt;Vortrag&lt;/a&gt; nahm er den Grundgedanken auf und schaute auf sieben Grundprinzipien des Dao und verglich diese mit CSS-Techniken. Die Prinzipien hier aufzuführen erklärt leider nicht die Inhalte. Im Prinzip sortierte er den Prinzipien einzelne Techniken und Funktionsweisen von CSS zu.&lt;/p&gt;
&lt;ol class=&quot;list list--ol&quot;&gt;
&lt;li&gt;The few as many&lt;/li&gt;
&lt;li&gt;Less and less&lt;/li&gt;
&lt;li&gt;Code without coding&lt;/li&gt;
&lt;li&gt;Softness is strength&lt;/li&gt;
&lt;li&gt;Balance without effort&lt;/li&gt;
&lt;li&gt;Yield to context&lt;/li&gt;
&lt;li&gt;Humility&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ich liebe solche Vorträge. Im Detail lerne ich nichts Neues. Aber ich lerne eine neue Sichtweise kennen. Mein Blick auf meine Arbeit wird verändert, bereichert. Und auch hier sind es manchmal die kleinen Nebensächlichkeiten, die mich zum Weiterdenken bewegen. Wie einige andere Sprecher auch nutzte John HTML zur Präsentation. Das tue ich auch seit vielen Jahren, indem ich &lt;a href=&quot;https://revealjs.com/&quot;&gt;reveal.js&lt;/a&gt; nutze. Reveal packt alle Inhalte in eine einzelne Seite, man kann also fast von einer SPA sprechen. John splittete jeden Slide in eine einzelen HTML-Seite, sodass er keine SPA sondern eine klassische Webseite hatte. Manchmal sind es solche nebensächlichen Details, die bei mir hängen bleiben.&lt;/p&gt;
&lt;p&gt;Ich bin auf die Aufzeichnung gespannt, damit ich den Vortrag noch einmal in Ruhe nachvollziehen kann. Einen Artikel scheint es nicht zu geben. So müssen die Slides &lt;a href=&quot;https://webdirections.org/talks/cssday25/&quot;&gt;seines Vortrages&lt;/a&gt; erst einmal reichen.&lt;/p&gt;
&lt;h3&gt;Miriam Suzanne: Is Sass Dead Yet? CSS Mixins &amp;amp; Functions&lt;/h3&gt;
&lt;p&gt;Miriam Suzanne war viele Jahre sehr stark in der Weiterentwicklung von Sass beschäftigt, hatte auch mal ein eigenes Sass-Gridsystem erstellt. In den letzten Jahren engagiert sie sich sehr für neue Standards. Container Queries haben wir ihr zu verdanken.&lt;/p&gt;
&lt;p&gt;Nun hat sie sich um eine Spezifikation für &lt;a href=&quot;https://slides.oddbird.net/mixins/cssday/&quot;&gt;Funktionen und Mixins&lt;/a&gt; innerhalb von CSS bemüht. Im Prinzip war der Vortrag eine rein theoretische Geschichte, denn es gibt noch keine Implementierung. Wobei das nicht ganz stimmt, denn es gibt einen &lt;a href=&quot;https://codepen.io/miriamsuzanne/pen/EajgabR&quot;&gt;Codepen von ihr&lt;/a&gt;, der in aktuellen Chromium-Browsern funktioniert. Es besteht also eine leichte Hoffnung.&lt;/p&gt;
&lt;p&gt;Die Ideen sind vielversprechend. Werden sie Realität und sterben die Browser aus, die nichts damit anfangen können, dann gibt es zwei Argumente weniger hat für Sass.&lt;/p&gt;
&lt;p&gt;Sehr schön fand ich, dass Miriam mehrfach betonte, dass man weder mit noch ohne Sass etwas falsch mache. Man solle die Tools nutzen, die für einen selber und das Projekt am Praktischsten sind. Sie wollte nichts verkaufen, nichts ausgrenzen.&lt;/p&gt;
&lt;p&gt;Miriam holte sehr weit aus, um das Thema zu erklären. Aber das war sehr erhellend und hilfreich. Denn sie machte klar, dass die Sprache an sich schon sehr komplex ist. Als Bonus bekamen wir auch noch einen ausführlichen Abstecher in interessante Details von custom properties (a.k.a. CSS Variablen). Und wegen dieses Exkurses wurde auch jedem im Raum klar, wo die Schwierigkeiten in der Umsetzung dieser Ideen sind. Denn wie bei den Variablen wird das Konzept von Präprozessoren genommen und in CSS eingebaut.&lt;/p&gt;
&lt;p&gt;Aber beide Techniken funktionieren unterschiedlich. Wie der Name es schon sagt, wir der Code es Präprozessors wie Sass &lt;strong&gt;vor&lt;/strong&gt; der Ausführung im Browser behandelt. Eine Variable wird dann also aufgelöst, wohingegen sie bei CSS im Code existent bleibt. Ähnliches wird auch bei Mixins und Funktionenn passieren. Die Idee ist die gleiche zwischen CSS und Sass/Less. Aber die Umsetzung wird sich unterscheiden.&lt;/p&gt;
&lt;p&gt;Ich bin gespannt, wie schnell diese Spezifikation finalisiert und implementiert wird.&lt;/p&gt;
&lt;h3&gt;Cyd Stumpel: CSS tried to come for my job&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://cydstumpel.nl/&quot;&gt;Cyd&lt;/a&gt; beschäftigt sich viel mit Animationen, manche einfach, einige komplex. Sie hat in der Vergangenheit deshalb sehr intensiv mit JavaScript-Animationstools gearbeitet. Da CSS aber immer mächtiger wird, zeigte sie uns, was man heute alles mit ein paar Zeilen CSS animieren kann. Alles unter dem Motto “das ist ganz einfach” - was eindeutig im Auge des Betrachters liegt. Ein großer Fokus waren dabei &lt;a href=&quot;https://developer.chrome.com/docs/web-platform/view-transitions/&quot;&gt;view-transitions&lt;/a&gt; im &lt;a href=&quot;https://codepen.io/Sidstumple/pen/ByyJqmy&quot;&gt;praktischen Einsatz&lt;/a&gt; und &lt;a href=&quot;https://cydstumpel.nl/css-scroll-driven-animations-for-creative-developers/&quot;&gt;scroll-driven animations&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Brecht De Ruyte: Select it! Styling new HTML UI capabilities&lt;/h3&gt;
&lt;p&gt;Der Belgier Brecht de Ruyte warb für das Engagement in der Gruppe &lt;a href=&quot;https://open-ui.org/&quot;&gt;OpenUI&lt;/a&gt; und nahm sich als ein Beispiel für deren Output die kommenden Änderungen am Select-Element vor. In seinem Blog hat er &lt;a href=&quot;https://utilitybend.com/blog/the-customizable-select-part-one-history-trickery-and-styling-the-select-with-css&quot;&gt;eine mittlerweile vierteilige Serie&lt;/a&gt; darüber verfasst.&lt;/p&gt;
&lt;p&gt;Es war extrem beeindruckend zu sehen, in welcher Form wir demnächst in allen Browsern das Select-Element gestalten können.&lt;/p&gt;
&lt;h3&gt;Rachel Andrew: Multicol and fragmentation&lt;/h3&gt;
&lt;p&gt;Rachel widmete sich einer selten genutzten Technik: der &lt;a href=&quot;https://noti.st/rachelandrew/mI9WWD/multicol-and-fragmentation&quot;&gt;mehrspaltigen Formatierung&lt;/a&gt;. Sie stellte sehr treffend die zahlreichen Probleme der Technik dar und endete mit dem aktuellen Vorschlag zur Erneuerung der Technik.&lt;/p&gt;
&lt;p&gt;Dazwischen unternahm sie einen umfangreichen Exkurs in die &lt;a href=&quot;https://www.w3.org/TR/css-break-3/&quot;&gt;Fragmentation-Spec&lt;/a&gt;. Diese ist immer dann wichtig, wenn Inhalte in einen neuen Kontext überführt werden sollen - oder auch nicht. Das betrifft natürlich ein Mehrspalten-Layout, aber auch den Druck von Webseiten. Schliesslich müssen da Seitenumbrüche definiert werden.&lt;/p&gt;
&lt;p&gt;Es war wieder einmal sehr erhellend, Rachel zuzuhören. Ich habe wieder viele Details der Browserinnereien kennengelernt. Solche Vorträge und die darin befindlichen Exkurse finde ich immer sehr wertvoll, um ein besseres Gesamtbild von CSS (und HTML) zu bekommen.&lt;/p&gt;
&lt;p&gt;Sollte die Spec irgendwann umgesetzt werden, werden wir eine Art “Grid light” bekommen. Nach kurzem Überlegen finde ich diese Lösung sehr passend und gut. Ich hoffe, die Browserhersteller beeilen sich. Denn diese Neuerung könnte vor allem auf textintensiven Newsseiten neue Optionen für das Design eröffnen.&lt;/p&gt;
&lt;p&gt;Interessant und erfrischend fand ich, dass sie mehrfach betonte, dass Analogien zum Printdesign nichts Böses wären. Sie würden einfach neue Perspektiven eröffnen und Ziele definieren. Den Vortrag kann man sich auch frei &lt;a href=&quot;https://www.youtube.com/watch?v=NfwDP9shxNQ&quot;&gt;auf Youtube&lt;/a&gt; anschauen.&lt;/p&gt;
&lt;h3&gt;Brad &amp;amp; Ian Frost: Design Token Architecture&lt;/h3&gt;
&lt;p&gt;Der erste Tag endete mit einem inhaltlich schwachen Vortrag. Brad Frost hatte aus unerfindlichen Gründen seinen Bruder mitgeschleppt und liess ihm dann nur wenige Minuten Zeit. Ansonsten redete er, so wie wir es gewohnt sind. Als der Vortrag interessant zu werden drohte war er vorbei. Ich trete ihm wohl nicht zu nahe, wenn ich vermute, dass beide nur anwesend waren, um ihren 900 Dollar teuren Kurs über Design Tokens zu bewerben.&lt;/p&gt;
&lt;p&gt;Es gab leider keine tieferen Einsichten in Tokens, keine guten Tipps für Benamung, Sortierung, Umgang mit Tools. Wer sich wie ich schon einmal mit Tokens und deren Implementierung in Figma beschäftigt hat, langweilte sich. Und ich denke, alle anderen waren nachher nicht viel schlauer als zuvor.&lt;/p&gt;
&lt;h3&gt;Chris Coyier: Scope in CSS&lt;/h3&gt;
&lt;p&gt;Viele Entwickler, die CSS irgendwann entdecken aber von typischen Programmiersprachen kommen, haben ganz offensichtlich Probleme, mit der Grundidee von CSS zurecht zu kommen. So entstand Sass (damit man CSS wie Ruby programmieren konnte) und so entstanden Bibliotheken, die Klassen an ganz bestimmte Elemente binden sollen. Sie sollen sie “scopen”.&lt;/p&gt;
&lt;p&gt;Chris Coyier, der Gründer von CSS-Tricks und Codepen, nahm sich dieses sehr grundsätzlichen Themas an. Er zeigte sehr schön, dass wir bei CSS &lt;strong&gt;immer&lt;/strong&gt; scopen. Jede Klasse ist ein Scope.&lt;/p&gt;
&lt;p&gt;Im Laufe des Vortrags nahm er sich die unterschiedlichen Ansätze des Scopings vor und betrachtete Vor- und Nachteile. Er betrachtete CSS-Modules, CSS-in-JS, CSS in React, Scoped Styles in Vue und Svelte. Auch iframe und das Shadow DOM sowie Utility Classes durften nicht fehlen. Zum Schluss wurde auch das neue &lt;code&gt;@scope&lt;/code&gt; betrachtet. Es war ein kenntnisreicher und interessanter Rundumschlag.&lt;/p&gt;
&lt;p&gt;Ein sehr erfrischender &lt;a href=&quot;https://frontendmasters.com/blog/scope-in-css/&quot;&gt;Vortrag&lt;/a&gt;, den es als PDF und mit ein wenig erläuterndem Text in Artikelform gibt.&lt;/p&gt;
&lt;h3&gt;Ahmad Shadeed: Smart layouts&lt;/h3&gt;
&lt;p&gt;Das war einer der Vorträge, auf die ich mich am Meisten gefreut habe. Ahmad betreibt ein sehr interessantes Blog und hat im letzten Jahr einen enormen Sprung gemacht, seine Inhalte zu präsentieren und nachvollziehbar zu machen.&lt;/p&gt;
&lt;p&gt;Im Grunde drehte sich sein Vortrag darum, das Layout einer Seite auf mehrere Parameter reagieren zu lassen und dabei den Browser die Arbeit machen zu lassen. Ahmad zeigte uns, wie wir mit kreativer Kombination aller mittlerweile existierender moderner Techniken zu sehr anpassbaren Layouts kommen. Seine Bezugsgrößen sind:&lt;/p&gt;
&lt;ul class=&quot;list list--ul&quot;&gt;
&lt;li&gt;der Viewport&lt;/li&gt;
&lt;li&gt;der Inhalt&lt;/li&gt;
&lt;li&gt;der umgebende Container&lt;/li&gt;
&lt;li&gt;die User-Präferenzen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Er zeigte bspw., wie man ein Layout ändern kann, je nach dem ob sich in einem Container Inhalte befinden oder einen bestimmten Umfang überschreiten. Eine sehr pfiffige Idee. Ich bin mal gespannt, was meine Designer-Kollegen dazu sagen. Es wäre ein Kontrollaspekt weniger (Kontrolle ist eh nur eine Illusion).&lt;/p&gt;
&lt;p&gt;Es war ein Genuss, den Beispiellayouts zu folgen. Zum Glück hat er &lt;a href=&quot;https://www.figma.com/deck/NewdIWNVLbsX8ipYOFZ4p8/Smart-Layouts---CSS-Day-2025?node-id=9-70&amp;amp;p=f&amp;amp;viewport=44%2C-78%2C0.03&amp;amp;t=RB3Tz4rgswyOw04s-1&amp;amp;scaling=min-zoom&amp;amp;content-scaling=fixed&amp;amp;page-id=0%3A1&quot;&gt;sein Slidedeck&lt;/a&gt; veröffentlicht. Ich wusste ja, dass er viele Slides hatte, aber 224 Slides bei einer Dreiviertelstunde Redezeit ist dann doch sportlich.&lt;/p&gt;
&lt;p&gt;Die Nacharbeit der Ideen dieser Slides wird viel Zeit in Anspruch nehmen. Aber das Ergebnis wird jede Anstrngung wert sein. Für mich war dies der wichtigste Vortrag der Konferenz. Denn im Gegensatz zu den auch sehr anregenden Talsk von Brecht und Adam sind Ahmads Ideen jetzt schon in allen modernen Browsern umsetzbar.&lt;/p&gt;
&lt;h3&gt;Tim Nguyen: Form control styling&lt;/h3&gt;
&lt;p&gt;Tim arbeitet für Apple und kümmert sich u.a. um die Standardisierung von Stylingtechniken für Formulare. Dieser Talk war wieder viel Zukunftsmusik. Aber eine Musik, die ich sehr gerne höre. Schließlich werden die Formularelemente seit jeher sehr stiefmütterlich behandelt. Insbesondere aus CSS-Sicht.&lt;/p&gt;
&lt;p&gt;Tim präsentierte den frischen &lt;a href=&quot;https://drafts.csswg.org/css-forms/&quot;&gt;Editors Draft&lt;/a&gt;. Alles baut auf der neuen Eigenschaft &lt;code&gt;appearance: base&lt;/code&gt; und einer großen Zahl neuer Pseudoelemente und Pseudoselektoren auf.&lt;/p&gt;
&lt;p&gt;Endlich geht die Entwicklung in die richtige Richtung. All das, was wir aktuell in den Devtools als Shadow DOM sehen, soll vereinheitlicht werden und von aussen gestaltbar sein. Leider ist noch nichts in Browsern implementiert. Aber ich kann mir vorstellen, dass es bald geschehen wird. Diesen Vortrag kann man auch frei &lt;a href=&quot;https://www.youtube.com/watch?v=WgSiqSqxTxw&quot;&gt;auf Youtube&lt;/a&gt; anschauen. Es lohnt sich.&lt;/p&gt;
&lt;h3&gt;Amit Sheen: Building a Computer with CSS&lt;/h3&gt;
&lt;p&gt;Dies war ein Spaßvortrag, der so ziemlich jeden bass erstaunt zurück liess. Erst einmal definierte &lt;a href=&quot;https://codepen.io/amit_sheen/&quot;&gt;Amit&lt;/a&gt;, was eine CPU ist: eine Einheit, die logische Berechnungen durchführt. Für mich als Nicht-Informatiker war das etwas Neues. Ich stelle mir da immer ein Hardwareteil drunter vor.&lt;/p&gt;
&lt;p&gt;Sodann hob er an, alle logischen Operatoren in CSS zu implementieren. Durch intensive Nutzung des &lt;code&gt;:has()&lt;/code&gt;- und des &lt;code&gt;:not()&lt;/code&gt;-Selektors in Zusammenarbeit mit wengen Checkboxen war es ihm möglich, innerhalb relativ kurzer Zeit eine CPU zu bauen.&lt;/p&gt;
&lt;h3&gt;Ana Rodrigues: Refactoring CSS&lt;/h3&gt;
&lt;p&gt;Von diesem &lt;a href=&quot;https://noti.st/anarodrigues/abfj0M/refactoring-css&quot;&gt;Vortrag&lt;/a&gt; hatte ich mir ein paar praktische Tipps oder Hinweise auf Tools erhofft. Ich fand ihn inhaltlich leichtgewichtig, so wie den von Brad Frost. Nichts, was ich nicht schon vorher gewusst hätte. Schön erzählt, aber wenig erhellend.&lt;/p&gt;
&lt;h3&gt;Hidde de Vries: display: green; applying the web sustainability guidelines&lt;/h3&gt;
&lt;p&gt;Hidde ist eigentlich für seine Detailkenntnis in Sachen Accessibility bekannt. Er widmete sich diesmal aber dem Klimaschutz. &lt;a href=&quot;https://talks.hiddedevries.nl/3do3c4/display-green-applying-the-web-sustainability-guidelines&quot;&gt;Seine Frage war&lt;/a&gt;: Was können wir als Entwickler dafür tun, dass weniger Energie produziert wird für unserere Job sund dadurch auch weniger CO2 produziert wird?&lt;/p&gt;
&lt;p&gt;Er betrachtete auch die in Entwicklung befindlichen “&lt;a href=&quot;https://w3c.github.io/sustainableweb-wsg/&quot;&gt;Web Sustainability Guidelines&lt;/a&gt;”. Deren Aufbau erinnert doch stark an die WCAG.&lt;/p&gt;
&lt;p&gt;Der Vortrag war eindeutig zum Nachdenken gemacht. Man sollte sich die Slides immer wieder anschauen und das eigene Handlen hinterfragen. Nur weil wir mit unseren Computern nicht sichtbar Abgase emmittieren bedeutet das ja nicht, dass dies nicht &lt;strong&gt;für uns&lt;/strong&gt; geschieht.&lt;/p&gt;
&lt;p&gt;Abseits des inhaltlichen Vortrags war es bemerkenswert, dass Hidde von vielen der vorherigen Vorträge Fotos in seine Präsentation eingebaut hatte. Das spricht für gute Organisation seinerseits aber auch dafür, dass er eine gute Vorstellung hatte, welche Geschichte er erzählt und wie er sie mit einem Schnappschuss wirksam unterstützen kann. So kommen dann am Ende 147 Slides für 45 Minuten raus. Sie sind auf alle Fälle lesenswert.&lt;/p&gt;
&lt;h3&gt;Bruce Lawson: The goose and the common&lt;/h3&gt;
&lt;p&gt;Vorträge von Bruce Lawsin haben immer einen esten Hintergrund, werden aber immer mit einer großen Portion (Selbst-)Ironie und Sarkasmus vorgetragen. Eindeutig der richtige Rausschmeisser nach zwei inhaltsvollen Tagen.&lt;/p&gt;
&lt;p&gt;Der Titel des Vortrags erklärte sich aus einem alten, englischen Märchen. Er nahm dessen Versatzstücke wunderbar herbei, um sie für das eigentliche Thema zu benutzen. Bruce kann wunderbar Geschichten erzählen. Das ist schon eine hohe Kunst, die wenige beherrschen, speziell bei technisch orientierten Konferenzen.&lt;/p&gt;
&lt;p&gt;Früher arbeitete Bruce bei Opera, mittlerweile arbeitet er für Vivaldi. Bekannt dürfte er hauptsächlich über seine profunde Kenntnis in Sachen Accessibilty sein. Aber darum ging es nicht. &lt;a href=&quot;https://speakerdeck.com/brucel/cssday-amsterdam&quot;&gt;Sein Vortrag&lt;/a&gt; drehte sich um WebApps und warum Apples Weigerung, diese auf iOS zuzulassen, eine sehr schlechte Entscheidung ist. Natürlich behandelte er auch die Bedeutung von Smartphones ausserhalb der westlichen Industriestaaten und die Nachteile der Abschottung von iOS gegenüber alternativen Browsern. Ich habe durch diesen Vortrag wenig Neues gelernt, bekam aber den Sachstand kompakt zusammengefasst.&lt;/p&gt;
&lt;h2&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Ich werde versuchen, auch nächstes Jahr wieder auf diese Konferenz zu kommen. Die inhaltliche Mischung war super, die Vortragenden im Wesentlichen auch. Es ist eine Mischung aus Inspiration und Wissensvermittlung. Dazu kommt die perfekte Organisation und die tollen Gespräche in den Pausen und nach der Veranstaltung. Für CSS-Profis ist diese Konferenz in meinen Augen ein Muss. Und ich bin sehr froh, dass Teil meines Eintritts der Zugang zu allen Videos ist. Sollte man die Reise nach Amsterdam scheuen und nur Interesse an den Vortträgen hegen, kann man auch einen Videozugang (live und als Archiv) stark verbilligt buchen.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Modalfenster sind standardisiert</title>
		<link href="http://css-weblog.de/notizen/modalfenster-sind-standardisiert.html"/>
		<updated>2025-02-18T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/modalfenster-sind-standardisiert.html</id>
		<content type="html">&lt;p&gt;Modalfenster (vulgo Popup, Layer, Overlay) sind jetzt standardisiert. Bislang haben  wir unsere eigenen Varianten von Modalfenstern mit individuellem HTML, JavaScript und CSS erstellt. Die Implementierungen differierten logischerweise. Mittlerweile wurde dieses Feature standardisiert und in allen Evergreen-Browsern implementiert. Es gibt ein neues HTML-Element, das nur noch minimales JavaScript (oder auch keins) benötigt. Auch das Abdunkeln und Sperren der Seite ist jetzt mit neuem CSS möglich. Wir diese Neuerung zum Anlass nehmen, bestehende Projekte von unnötigem Code (HTML, JS, CSS) zu befreien und neue Projekte mit einfacherem Code zu beginnen.&lt;/p&gt;
&lt;p&gt;Es gibt zwei Wege, ein Modalfenster zu öffnen:&lt;/p&gt;
&lt;ol class=&quot;list list--ol&quot;&gt;
&lt;li&gt;Das dialog-Element&lt;/li&gt;
&lt;li&gt;Das popover-Attribut&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Die unterschiedlichen Wege stehen für unterschiedliche Typen von Modalfenstern. Das &lt;code&gt;dialog&lt;/code&gt;-Element ist für Kommunikationselemente gedacht, die die weitere Bedienung der Webseite blocken. Deshalb erscheinen sie nur einzeln.&lt;br /&gt;
Das &lt;code&gt;popover&lt;/code&gt;-Attribut kann an viele verschiedene Elemente gepackt werden. Es blockt nicht den Rest der Seite und kann mehrfach auftreten. Es ist viel mehr für Design-Elemente nutzbar, als das &lt;code&gt;dialog&lt;/code&gt;-Element.&lt;/p&gt;
&lt;p&gt;Beide haben gemein, dass die Browserhersteller eine neue künstliche Ebene für sie konstruierten: den &lt;strong&gt;top-layer&lt;/strong&gt;. Kein anderes Element kann mit einem noch so hohen &lt;code&gt;z-index&lt;/code&gt; an diesen Layer herankommen oder sich gar drüber legen. Dieser neue Layer wird neben dem geöffneten Element in den Browser-Devtools angezeigt. So wie dort auch eine Flexbox-Umgebung markiert ist.&lt;/p&gt;
&lt;p&gt;Ein solches Modalfenster sieht auf den ersten Blick simpel aus. Der Teufel steckt wie immer im Detail, eher in den Details. Hidde de Vries widmet sich diesen Details ausführlich und kenntnisreich in seinem sehr lesenswerten Artikel “&lt;a href=&quot;https://hidde.blog/dialog-modal-popover-differences/&quot;&gt;Dialogs and popovers seem similar. How are they different?&lt;/a&gt;”. Auch die anderen unten verlinkten Quellen sind lesenswert. Sie eröffnen wichtige Perspektiven.&lt;/p&gt;
&lt;p&gt;Wir schauen uns in diesem Artikel nur die absoluten Basics an. Sie befähigen zu eigenen Experimenten. Ich bin begeistert von der einfachen Art, mit Modalfenstern jeglicher Art umzugehen. Mal schauen, ob wir bspw. ein typisches Burgermenü demnächst grundsätzlich mit einem popover ausstatten.&lt;/p&gt;
&lt;aside class=&quot;aside&quot;&gt;&lt;p&gt;In einer früheren Version dieser Seite hatte ich das Burgermenü erfolgreich mittels &lt;code&gt;popover&lt;/code&gt;-Attribut realisiert. Nach dem Wegfall eines Menüpunktes war das Burgermenü unnötig geworden. Es kann aber sein, dass komplexere Menüs mit dieser Technik an ihre Grenzen kommen. Ich bin auf Testcases gespannt.&lt;/p&gt;
&lt;/aside&gt;
&lt;h2&gt;Das dialog-Element&lt;/h2&gt;
&lt;p&gt;Das neue HTML-Element bringt automatisch die wichtigsten Features mit, die wir sonst mittels JavaScript und CSS individuell erzeugen mussten:&lt;/p&gt;
&lt;ol class=&quot;list list--ol&quot;&gt;
&lt;li&gt;Es ist initial versteckt.&lt;/li&gt;
&lt;li&gt;Wenn es dargestellt wird, ist es immer auf der obersten Ebene.&lt;/li&gt;
&lt;li&gt;Die typische Abdunkelungsfläche muss nicht extra mit einem leeren Container erzeugt werden. Es gibt einen CSS-Selektor dafür.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Das HTML ist schlicht:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;dialog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Willkommen im Dialog&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Lorem ipsum ...&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;autofocus&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;btn close&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Schliessen&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;dialog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mittels CSS können wir nun zwei Aspekte ganz einfach steuern:&lt;/p&gt;
&lt;ol class=&quot;list list--ol&quot;&gt;
&lt;li&gt;Wir können verhindern, dass die Seite hinter dem Dialogfenster scrollbar ist.&lt;/li&gt;
&lt;li&gt;Wir können eine flächendeckende Verdunkelung definieren. Dafür müssen wir kein leeres &lt;code&gt;DIV&lt;/code&gt; erstellen.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* Die Seite hinter dem Dialog &quot;sperren&quot; */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;html:has(dialog[open])&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* Abdunkelung */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;::backdrop&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;15&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;15&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;15&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.85&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Zu guter Letzt benötigen wir ein klein wenig JavaScript, um das Fenster zu öffnen und zu schliessen:&lt;/p&gt;
&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; dialog &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;querySelector&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;dialog&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; showButton &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;querySelector&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;.open&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; closeButton &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;querySelector&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;.close&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// &quot;showModal&quot; öffnet das Dialogelement als Modalfenster&lt;/span&gt;
showButton&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;click&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  dialog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;showModal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// &quot;close&quot; schliesst das Dialogelement&lt;/span&gt;
closeButton&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;click&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  dialog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ein &lt;a href=&quot;https://codepen.io/jensgro/pen/dyBrrEJ&quot;&gt;Codepen&lt;/a&gt; demonstriert das Ergebnis.&lt;/p&gt;
&lt;p&gt;&lt;baseline-status featureId=&quot;dialog&quot;&gt;&lt;/baseline-status&gt;&lt;/p&gt;
&lt;h2&gt;Das popover-Attribut&lt;/h2&gt;
&lt;p&gt;Das neue &lt;code&gt;popover&lt;/code&gt;-Attribut ist global, kann also an so ziemlich alles gehängt werden. Ein Element mit dem Attribut &lt;code&gt;popover&lt;/code&gt; wird mittels &lt;code&gt;display: none&lt;/code&gt; ausgeblendet. Es wird dann mittels &lt;code&gt;popovertarget&lt;/code&gt; getriggert. Diese Aktion geschieht gänzlich ohne JavaScript, nur mittels Verknüpfung im HTML.&lt;/p&gt;
&lt;p&gt;Das Popover liegt in einer eigenen Ebene ganz oben und kann durch Positionierung auch der Elternelemente nicht beeinflusst werden. Als Standard kann nur ein Popover gleichzeitig gezeigt werden. Dieses schliesst sich bei Klick ausserhalb. Durch &lt;code&gt;popover=&amp;quot;manual&amp;quot;&lt;/code&gt; können mehrere Popover aufgerufen werden. Diese müssen allerdings immer bewusst geschlossen werden. Dafür wird dann minimales JavaScript benötigt.&lt;/p&gt;
&lt;p&gt;Das Browser-CSS sieht folgendermaßen aus:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;[popover]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; fixed&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; fit-content&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; fit-content&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; canvastext&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; canvas&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;inset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; auto&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;border-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; initial&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;border-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; solid&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;border-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; initial&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;border-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; initial&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.25em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; auto&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://codepen.io/jensgro/pen/dyBLRrV&quot;&gt;Codepen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;baseline-status featureId=&quot;popover&quot;&gt;&lt;/baseline-status&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Einen Teil eines Nunjucks-Loops durchlaufen</title>
		<link href="http://css-weblog.de/notizen/einen-teil-eines-nunjucks-loops-durchlaufen.html"/>
		<updated>2025-02-13T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/einen-teil-eines-nunjucks-loops-durchlaufen.html</id>
		<content type="html">&lt;p&gt;Manchmal möchte man nicht alle Ergebnisse einer collection in 11ty zeigen, sondern nur einen Teil. Beispielsweise auf Übersichtsseiten, auf der eventuell nur fünf ausgewählte Einträge gezeigt werden sollen. Das ist ganz einfach möglich:&lt;/p&gt;
&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; images &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; index &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;loop&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;index &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt; Hier kommt das notwendige &lt;span class=&quot;token constant&quot;&gt;HTML&lt;/span&gt; hin &lt;span class=&quot;token operator&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; endif &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; endfor &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Innerhalb der Loops haben wir Zugriff auf diese Variablen:&lt;/p&gt;
&lt;ul class=&quot;list list--ul&quot;&gt;
&lt;li&gt;&lt;code&gt;loop.index&lt;/code&gt;: die aktuelle Iteration der Schleife, beginnend bei 1&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loop.index0&lt;/code&gt;: die aktuelle Iteration der Schleife, beginnend bei 0&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loop.revindex&lt;/code&gt;: Anzahl der Iterationen bis zum Ende der Schleife, beginnend bei 1&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loop.revindex0&lt;/code&gt;: Anzahl der Iterationen bis zum Ende der Schleife, beginnend bei 0&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loop.first&lt;/code&gt;: Boolean, zeigt die erste Iteration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loop.last&lt;/code&gt;: Boolean, zeigt die letzte Iteration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loop.length&lt;/code&gt;: Die absolute Anzahl der Items&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>Modalfenster (dialog, popover)</title>
		<link href="http://css-weblog.de/linktipps/modalfenster-dialog-popover.html"/>
		<updated>2025-02-12T00:00:00Z</updated>
		<id>http://css-weblog.de/linktipps/modalfenster-dialog-popover.html</id>
		<content type="html">&lt;ul class=&quot;linklist&quot;&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog&quot;&gt;MDN über das dialog-Element&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://hidde.blog/dialog-modal-popover-differences/&quot;&gt;Dialogs and popovers seem similar. How are they different?&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://frontendmasters.com/blog/whats-the-difference-between-htmls-dialog-element-and-popovers/&quot;&gt;What’s the Difference Between HTML’s Dialog Element and Popovers?&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://hidde.blog/popover-accessibility/&quot;&gt;On popover accessibility: what the browser does and doesn’t do&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://web.dev/blog/popover-baseline/&quot;&gt;The Popover API is now Baseline Newly available&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://talks.hiddedevries.nl/VZNuWJ&quot;&gt;Dialog dilemmas and modal mischief: on building popovers&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://www.scottohara.me/blog/2023/01/26/use-the-dialog-element.html&quot;&gt;Use the dialog element (reasonably)&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://web.dev/articles/building/a-dialog-component&quot;&gt;Building a dialog component&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://wiki.selfhtml.org/wiki/Infobox/Tooltips_mit_Popover&quot;&gt;Tooltips mit Popover&lt;/a&gt;
    
&lt;/li&gt;

&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>Artikel schnell erstellen</title>
		<link href="http://css-weblog.de/notizen/artikel-schnell-erstellen.html"/>
		<updated>2025-02-12T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/artikel-schnell-erstellen.html</id>
		<content type="html">&lt;p&gt;Um einen neuen Artikel in Eleventy zu erstellen, muss man nicht nur eine neue Datei erzeugen, man muss auch das Frontmatter ausfüllen.&lt;/p&gt;
&lt;p&gt;Ich habe mich glücklicherweise für eine einfache Struktur entschieden. Andere erstellen für jeden neuen Artikel einen gut benannten Ordner und packen dort eine &lt;code&gt;index.md&lt;/code&gt; hinein. Egal welchen Weg man wählt, es ist ein wenig mühselig. Ich kann (und will) mir vor allem die wichtigen Bestandteile des Frontmatter nicht immer merken.&lt;/p&gt;
&lt;p&gt;Glücklicherweise haben andere Menschen das gleiche Problem und finden dann auch eine Lösung. Bob Monsour stellte &lt;a href=&quot;https://github.com/bobmonsour/mkbo&quot;&gt;eine interessante Lösung&lt;/a&gt; auf Github zur Verfügung. Sie beruht auf einer Idee von DeepakNess, der sie &lt;a href=&quot;https://deepakness.com/blog/create-posts-faster-11ty/&quot;&gt;gut beschreibt&lt;/a&gt;. Interessant ist hierbei aber auch das kurze Video im Artikel.&lt;/p&gt;
&lt;p&gt;Beide Umsetzungen sind nicht exakt das von mir gesuchte. Aber ein paar kleine Anpassungen des Originalskripts haben mir eine sehr schöne Lösung gebracht. Jetzt kann ich mit &lt;code&gt;node create.js neuer-artikel-titel&lt;/code&gt; eine neue Datei am richtigen Ort erstellen lassen, die auch schon einen vorausgefüllten Frontmatter hat. Prima Sache!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Die Pseudoklassen is() und where()</title>
		<link href="http://css-weblog.de/notizen/die-pseudoklassen-is-und-where.html"/>
		<updated>2025-02-11T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/die-pseudoklassen-is-und-where.html</id>
		<content type="html">&lt;p&gt;Flexbox und CSS-Grid revolutionierten unseren Umgang mit dem Layout, schufen neue Möglichkeiten. Die Einführung der  drei Pseudoklassen &lt;code&gt;:where()&lt;/code&gt;, &lt;code&gt;:is()&lt;/code&gt; und &lt;code&gt;:has()&lt;/code&gt; packe ich in eine ähnliche Kategorie. Diese neuen Pseudoklassen können unsere Codebasis erheblich verschlanken und unseren Code lesbarer machen. Schauen wir uns die ersten beiden einmal in Beispielen an.&lt;/p&gt;
&lt;p&gt;Früher schrieben wir beispielsweise:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.teaser &gt; header,
.teaser &gt; footer,
.teaser &gt; h2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; red&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das geht jetzt folgendermassen kürzer:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.teaser &gt; :is(header, footer, h2)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; red&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* ==== oder ==== */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.teaser &gt; :where(header, footer, h2)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; red&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das ist doch schon eine große Ecke lesbarer.&lt;/p&gt;
&lt;p&gt;Beide Pseudoklassen werden prinzipiell identisch genutzt. Aber sie haben unterschiedliche Auswirkungen auf die Spezifität einer Regel. Die Pseudoklassen selber besitzen keine Spezifität. &lt;code&gt;:where()&lt;/code&gt; setzt jegliche Spezifität innerhalb des Klammerausdrucks auf 0. Bei &lt;code&gt;:is()&lt;/code&gt; wird die größte Spezifität innerhalb der Klammer genommen. Schauen wir uns ein Beispiel an:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* 0,1,1 */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;ul[class]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; red&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* 0,1,1 */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;:is(ul[class])&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; red&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* 0,0,0 */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;:where(ul[class])&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; red&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* ==== böser Trick :-) */&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* 1,0,0 */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;:is(ul[class], #michGibtEsNicht)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; red&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Weitere interessante Beispiele sind:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;:is(h1, h2, h3)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; green&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;:where(h1, h2, h3, h4, h5, h6)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;text-wrap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; balance&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;overflow-wrap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; break-word&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;:where(button)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;all&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; unset&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;baseline-status featureId=&quot;is&quot;&gt;&lt;/baseline-status&gt;&lt;br /&gt;
&lt;baseline-status featureId=&quot;where&quot;&gt;&lt;/baseline-status&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Container Queries</title>
		<link href="http://css-weblog.de/linktipps/container-queries.html"/>
		<updated>2025-02-08T00:00:00Z</updated>
		<id>http://css-weblog.de/linktipps/container-queries.html</id>
		<content type="html">&lt;ul class=&quot;linklist&quot;&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://www.joshwcomeau.com/css/container-queries-introduction/&quot;&gt;A Friendly Introduction to Container Queries&lt;/a&gt;
    
    &lt;span&gt;Eine sehr schön gestaltete, interaktive Einführung von Josh W. Comeau.&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://ishadeed.com/article/css-container-query-guide&quot;&gt;An Interactive Guide to CSS Container Queries&lt;/a&gt;
    
    &lt;span&gt;Eine sehr schön gestaltete, interaktive Einführung von Ahmad Shadeed.&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://web.dev/blog/cq-stable&quot;&gt;Container queries land in stable browsers&lt;/a&gt;
    
    &lt;span&gt;Una Cravets im Google Blog&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://beyond-the-cascade.com/the-inevitable-end-of-mobile-first/&quot;&gt;Container Queries - The inevitable end of mobile first&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://web.dev/blog/how-to-use-container-queries-now&quot;&gt;How to use container queries now&lt;/a&gt;
    
    &lt;span&gt;Philip Walton im Google Blog&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://dbushell.com/2024/09/23/misleading-container-queries/&quot;&gt;Misleading Container Queries&lt;/a&gt;
    
    &lt;span&gt;David Bushell diskutiert einen Fall, in dem man mit Container Queries in Probleme laufen kann.&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://www.smashingmagazine.com/2024/06/what-are-css-container-style-queries-good-for/&quot;&gt;What Are CSS Container Style Queries Good For?&lt;/a&gt;
    
&lt;/li&gt;

&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>A11y-Checklisten</title>
		<link href="http://css-weblog.de/linktipps/a11y-checklisten.html"/>
		<updated>2025-02-07T00:00:00Z</updated>
		<id>http://css-weblog.de/linktipps/a11y-checklisten.html</id>
		<content type="html">&lt;ul class=&quot;linklist&quot;&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/quickref/&quot;&gt;How to Meet WCAG (Quick Reference)&lt;/a&gt;
    
    &lt;span&gt;Vom W3C - häßlich, nützlich, die Basis von allem&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://www.a11yproject.com/checklist/&quot;&gt;A11y Checklist&lt;/a&gt;
    
    &lt;span&gt;umfangreich und schön gestaltet&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://accessibility-for-teams.com/&quot;&gt;A11y Checklist for Teams&lt;/a&gt;
    
    &lt;span&gt;A11y-Tipps für Designer und Produkt Manager, leider immer noch nicht für Entwickler.&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://not-checklist.intopia.digital/&quot;&gt;A11y Not-Checklist&lt;/a&gt;
    
    &lt;span&gt;Die Ausgabe ist u.a. nach Job-Rollen konfigurierbar.&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://webaccessibilitychecklist.com/&quot;&gt;Web Accessibility Checklist&lt;/a&gt;
    
    &lt;span&gt;Diese Checkliste ist niocht besonders umfangreich. Aber dadurch nimmt sie auch ein wenig Furcht vor der Aufgabe.&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://thisiswcag.com/&quot;&gt;Web Accessibility Simplified&lt;/a&gt;
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://ukhomeoffice.github.io/accessibility-posters&quot;&gt;Designing accessible services&lt;/a&gt;
    
    &lt;span&gt;Das Britische Innenmisterium informiert über A11y für unterschiedliche Behinderungen. Gibt es auch als Poster zum Download.&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://moritzglantz.de/accessibility-cheatsheet/&quot;&gt;A11y-Cheatsheet&lt;/a&gt;
    
    &lt;span&gt;Das legendäre A11y-Cheatsheet von Moritz Glantz&lt;/span&gt;  
    
&lt;/li&gt;

&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>min(), max(), clamp()</title>
		<link href="http://css-weblog.de/notizen/min-max-clamp.html"/>
		<updated>2025-02-05T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/min-max-clamp.html</id>
		<content type="html">&lt;p&gt;Die &lt;code&gt;min()&lt;/code&gt;-Funktion bildet den &lt;strong&gt;minimalen&lt;/strong&gt; Wert aus einer Auswahl von zwei Werten ab.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.my-box&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;50%&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 500px&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Der kleinste Wert&lt;/strong&gt; von beiden wird gewählt. Das Modul soll &lt;strong&gt;maximal&lt;/strong&gt; 500px breit sein. Hier ist eine &lt;a href=&quot;https://codepen.io/una/pen/rNeGNVL&quot;&gt;Codepen-Demo des Prinzips&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Die &lt;code&gt;max()&lt;/code&gt;-Funktion wählt den &lt;strong&gt;maximalen&lt;/strong&gt; Wert aus einer Auswahl von zwei Werten.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.my-box&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;50%&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 500px&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Der größere Wert&lt;/strong&gt; von beiden wird gewählt. Das Modul soll also &lt;strong&gt;minimal&lt;/strong&gt; 500px breit sein.&lt;/p&gt;
&lt;p&gt;Man kann es auch konfigurierbar und ein wenig schwer lesbar machen:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;--container-max-width&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1728px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.container&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;48px&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;100% - &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--container-max-width&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; / 2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ein &lt;a href=&quot;https://codepen.io/una/pen/RwaZXqR&quot;&gt;Codepen&lt;/a&gt; demonstriert das Prinzip.&lt;/p&gt;
&lt;p&gt;Die &lt;code&gt;clamp()&lt;/code&gt;-Funktion vereint die beiden eben vorgestellten. Ich finde sie pfiffig, nützlich, aber nicht intuitiv nutzbar. Die beiden bisherigen Funktionen hatten zwei Werte. Die Funktion &lt;code&gt;clamp()&lt;/code&gt; hat drei. Der erste Wert ist der Minimalwert, der dritte Wert der Maximalwert. Der mittlere Wert ist ein idealer Wert. Dieser Wert muss flexibel sein, damit diese Funktion einen Sinn hat. Hier können wir uns also experimentell mit relativen Werten austoben. Dabei sollten wir darauf achten, wie der mittlere Wert dazu beiträgt, dass zwischen den beiden extremen skaliert wird.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/* clamp( minimum,  ideal,  maximum ) */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;clamp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0.75rem&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 3vw&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 1.5rem&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.my-box&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;clamp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;250px&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 50%&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 800px&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wichtig ist, dass die Idealgröße die notwendige Flexibilität und Dynamik bringt. Hier kann und sollte man mit den unterschiedlichen relativen Einheiten experimentieren. Man kann mit &lt;code&gt;vw&lt;/code&gt; einen Bezug zur Browserbreite machen, aber auch einfach nur schlichte Prozentwerte nehmen. Hier sollte man intensiv experimentieren.&lt;/p&gt;
&lt;p&gt;&lt;baseline-status featureId=&quot;min-max-clamp&quot;&gt;&lt;/baseline-status&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Barrierefreiheit im Workingdraft</title>
		<link href="http://css-weblog.de/notizen/barrierefreiheit-im-workingdraft.html"/>
		<updated>2025-02-04T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/barrierefreiheit-im-workingdraft.html</id>
		<content type="html">&lt;p&gt;Der Podcast “&lt;a href=&quot;https://workingdraft.de/&quot;&gt;Workingdraft&lt;/a&gt;” hat die ersten Folgen dieses Jahres komplett einem Thema verschrieben: der Barrierefreiheit (a11y)&lt;/p&gt;
&lt;p&gt;Es sind sehr interessante Folgen dabei herausgekommen. Sie changieren zwischen niedrigschwelligem Einstieg und Infos für Profis. Ich bin den Kollegen (und Freunden) sehr dankbar, dass sie sich so konzentriert und facettenreich des Themas angenommen haben. Die Folgenliste:&lt;/p&gt;
&lt;ul class=&quot;list list--ul&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://workingdraft.de/647/&quot;&gt;Revision 647&lt;/a&gt;: WCAG-Spezifikationen lesen und verstehen (4. Februar 2025)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://workingdraft.de/646/&quot;&gt;Revision 646&lt;/a&gt;: (Automatisiertes) Testing von Barrierefreiheit (29. Januar 2025)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://workingdraft.de/645/&quot;&gt;Revision 645&lt;/a&gt;: Barrierefreiheit kann so einfach sein (21. Januar 2025)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://workingdraft.de/644/&quot;&gt;Revision 644&lt;/a&gt;: Das Barrierefreiheitsstärkungsgesetz (BFSG) (14. Januar 2025)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://workingdraft.de/643/&quot;&gt;Revision 643&lt;/a&gt;: Das Web Accessibility Cookbook (7. Januar 2025)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aber auch ältere Folgen lohnen, gehört zu werden:&lt;/p&gt;
&lt;ul class=&quot;list list--ul&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://workingdraft.de/609/&quot;&gt;Revision 609&lt;/a&gt;: Farbsehschwäche und Farbblindheit (19. März 2024)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://workingdraft.de/562/&quot;&gt;Revision 562&lt;/a&gt;: Interview mit Entwicklerin Svenja zu Barrierefreiheit (29. März 2023)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://workingdraft.de/503/&quot;&gt;Revision 503&lt;/a&gt;: CSS-, HTML-, und Accessibility-Kleinkram (16. November 2021)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://workingdraft.de/474/&quot;&gt;Revision 474&lt;/a&gt;: Barrierefreiheit in Single Page Applications (27. April 2021)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ich finde es immer sehr hilfreich, die Webseite zur Folge anzusteuern. Dort gibt es weiterführende Links. Die Kollegen sammeln und publizieren diese sehr gewissenhaft. Dabei ist mir mal wieder aufgefallen, dass es in Sachen Barrierefreiheit und deren Umsetzung eigentlich kein Informationsdefizit gibt. Aber die existierenden Informationen sind sehr oft unattraktiv präsentiert. Sie sind eine Ansammlung von Checklisten, die dann am Besten sehr technisch auf die WCAG und deren Kriterien verweisen.&lt;/p&gt;
&lt;p&gt;Es fehlen Seiten, die nicht nur optisch etwas hermachen, sondern die in der Ansprache auch Lust auf das Thema machen. Es ist kein Problem solche Seiten zu CSS zu finden. Aber bei Barrierefreiheit kenne ich keine.&lt;/p&gt;
&lt;p&gt;Vielleicht erbarmen sich ja ein paar talentierte Menschen. So etwas könnte man auch als Abschlussarbeit eines Studiums erstellen. Die Hoffnung stirbt zuletzt.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>A11y-Links</title>
		<link href="http://css-weblog.de/linktipps/a11y-links.html"/>
		<updated>2025-02-02T00:00:00Z</updated>
		<id>http://css-weblog.de/linktipps/a11y-links.html</id>
		<content type="html">&lt;ul class=&quot;linklist&quot;&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://practical-accessibility.today/code/hiding-techniques/&quot;&gt;Techniken zum Verstecken von Inhalten&lt;/a&gt;
    
    &lt;span&gt;tabellarische Übersicht von Sara Soueidan&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://yatil.net/blog/no-accessibility-without-disabilities&quot;&gt;A11y without disabilities&lt;/a&gt;
    
    &lt;span&gt;Blogpost von @yatil&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://yatil.net/blog/ai-wont-solve-accessibility&quot;&gt;AI won&amp;#39;t solve accessibility&lt;/a&gt;
    
    &lt;span&gt;Blogpost von @yatil&lt;/span&gt;  
    
&lt;/li&gt;

  &lt;li&gt;
    &lt;a href=&quot;https://www.a11yproject.com/&quot;&gt;A11y Project&lt;/a&gt;
    
    &lt;span&gt;umfangreiche Sammlung von Informationen und Tools&lt;/span&gt;  
    
&lt;/li&gt;

&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>Der neue :has()-Selektor</title>
		<link href="http://css-weblog.de/notizen/der-neue-has-selektor.html"/>
		<updated>2025-02-02T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/der-neue-has-selektor.html</id>
		<content type="html">&lt;p&gt;Mit dem &lt;code&gt;has()&lt;/code&gt;-Selektor bekommen wir endlich sowas ähnliches wie einen Parent-Selektor. Es muss aber nicht als solcher benutzt werden. Ein Element wird durch die Bedingung innerhalb dieses neuen Selektors definiert. Wir können nun bspw. ein Formular selektieren, in dem ein Eingabefeld fokussiert wurde oder das deaktivierte Eingabefelder besitzt.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;form:has(input:focused)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; lightgrey&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;:where(label:has(&gt; input:disabled),
label:has(+ input:disabled))&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;cursor&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; not-allowed&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Viele unterschiedliche Kombinationen sind mit diesem Selektor möglich. So kann ich eine Headline selektieren, auf die direkt ein Absatz folgt und die sich in einem Konstrukt mit Klasse .card befindet.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.card h2:has(+ p)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Oder einen Footer, der entweder eine Klasse .broadcastinfo hat oder ein Element mit dieser Klasse in sich hat.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;footer:has(.broadcastinfo)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sehr interessant ist auch die Möglichkeit, externe Styles in Abhängigkeit von Inline-Styles zu definieren:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.teaser:has(.topline[style=&quot;display: none;&quot;]) .hgroup a:before&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Oder nehmen wir als Beispiel ein Bild in einem &lt;code&gt;figure&lt;/code&gt;-Element.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;figure&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;img&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;thumb.jpg&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;figcaption&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;A great looking tart.&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;figcaption&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;figure&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Es wird mit Hilfe des &lt;code&gt;has()&lt;/code&gt;-Selektors anders formatiert, wenn eine &lt;code&gt;figcaption&lt;/code&gt; zusätzlich ausgegeben wird:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;figure:has(figcaption)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.5rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #fff&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 3px 10px 0 &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 8px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;baseline-status featureId=&quot;has&quot;&gt;&lt;/baseline-status&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Texte kürzen</title>
		<link href="http://css-weblog.de/notizen/texte-kuerzen.html"/>
		<updated>2025-02-01T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/texte-kuerzen.html</id>
		<content type="html">&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -webkit-box&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;-webkit-box-orient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; vertical&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;-webkit-line-clamp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;max-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3.6em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Der Trick liegt in der Abhängigkeit von Anzahl der Zeilen, Zeilenhöhe und Maximalhöhe. Deshalb habe ich mir ein Sass-Mixin gebaut:&lt;/p&gt;
&lt;pre class=&quot;language-scss&quot;&gt;&lt;code class=&quot;language-scss&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;@mixin&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;textclamp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$num_of_lines&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$line_height&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -webkit-box&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;-webkit-box-orient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; vertical&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token property&quot;&gt;-webkit-line-clamp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$num_of_lines&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$line_height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;max-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$line_height&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$num_of_lines&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; 1em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;p &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;@include&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;textclamp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$num_of_lines&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 5&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content>
	</entry>
	
	<entry>
		<title>Übersicht über Fähigkeiten der Browser</title>
		<link href="http://css-weblog.de/notizen/uebersicht-ueber-faehigkeiten-der-browser.html"/>
		<updated>2025-01-20T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/uebersicht-ueber-faehigkeiten-der-browser.html</id>
		<content type="html">&lt;p&gt;Egal wie man es wendet, wir müssen uns als Frontendentwickler immer wieder damit auseinandersetzen, welche Fähigkeiten die einzelnen Browser haben. Nicht alle HTML- und CSS-Techniken sind jemals in allen Browsern umgesetzt worden und trotz &lt;a href=&quot;http://css-weblog.de/notizen/kooperation-der-browserhersteller.html&quot;&gt;der Anstrengungen der Browserhersteller&lt;/a&gt; werden Features selten bis nie gleichzeitig umgesetzt.&lt;/p&gt;
&lt;p&gt;Selbstverständlich sollte jeder Frontend-Entwickler &lt;a href=&quot;https://caniuse.com/&quot;&gt;caniuse&lt;/a&gt; kennen. Es gibt aber noch mehr Übersichten über die Browserfähigkeiten. Am Ende einer jeden Technik steht bei &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web&quot;&gt;MDN&lt;/a&gt; eine passende Übersicht.&lt;/p&gt;
&lt;p&gt;Eine andere Form der Darstellung und Aussenkommunikation bietet die &lt;a href=&quot;https://web-platform-dx.github.io/web-features/&quot;&gt;Baseline-Initiative&lt;/a&gt;. Auf der &lt;a href=&quot;https://web.dev/baseline&quot;&gt;Übersichtsseite von Baseline&lt;/a&gt; werden die gemeinsam umgesetzten Features präsentiert. Die für jeden verfügbare &lt;a href=&quot;https://github.com/web-platform-dx/baseline-status&quot;&gt;Webcomponent von Baseline&lt;/a&gt; ist mittlerweile auch bei CanIUse und MDN eingebunden. Sie ermöglicht eine sehr schnelle Erfassung des Status Quo der Technik in den gängigen Evergreen Browsern.&lt;/p&gt;
&lt;p&gt;Die Webcomponente sieht folgendermaßen aus:&lt;/p&gt;
&lt;p&gt;&lt;baseline-status featureId=&quot;subgrid&quot;&gt;&lt;/baseline-status&gt;&lt;/p&gt;
&lt;p&gt;Ich habe mir zum Testen &lt;a href=&quot;https://codepen.io/jensgro/pen/dPbKdzm&quot;&gt;einen Codepen&lt;/a&gt; erstellt. Mir fehlen ehrlich gesagt zwei Informationen, die spätestens im Aufklapper existieren sollten: ab welcher Version eines Browsers die Technik unterstützt wird und welche Browserversion jeweils die aktuelle ist. Man kann es natürlich auch abkürzen und das Releasedatums der ersten unterstützenden Browserversion ausgeben.&lt;br /&gt;
Dadurch könnte man abschätzen, wie groß die Verbreitung aktuell ist. Vielleicht kommt diese Ergänzung ja noch.&lt;/p&gt;
&lt;p&gt;Interessant finde ich auch folgende Seiten:&lt;/p&gt;
&lt;ul class=&quot;list list--ul&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://css-weblog.de/notizen/CanIWebview&quot;&gt;https://caniwebview.com/search/?cat=web_feature&lt;/a&gt; - CanIUse für die unterschiedlichen Webviews.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.fffuel.co/rrready/&quot;&gt;Chart of CSS &amp;amp; web platform feature support in evergreen browsers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://canwe.dev/&quot;&gt;Can We&lt;/a&gt; - Liste mehrerer Projekte, die sich mit Fähigkeiten von Browsern und assistiver Technologie beschäftigen&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.caniemail.com/&quot;&gt;Can I Email&lt;/a&gt; - Welcher gängige Mailclient kann welche Technik?&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>CSS hat ein neues Logo</title>
		<link href="http://css-weblog.de/notizen/css-hat-ein-neues-logo.html"/>
		<updated>2025-01-02T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/css-hat-ein-neues-logo.html</id>
		<content type="html">&lt;p&gt;HTML5 und CSS3 sind echte Marketing-Buzzwords. In einigen Stellenanzeigen werden sie noch heute genannt. Dabei wurde CSS eine nie existierende Versionierung unterstellt.&lt;/p&gt;
&lt;p&gt;Eine Gruppe Entwickler möchte daran anschliessen, denn mittlerweile hat sich CSS sehr stark weiterentwickelt. Die Idee ist, eine Gruppe von Techniken zu benennen, die zusammen eine neue Evolutionsstufe von CSS bilden, sodass wir dann von CSS4, CSS5 usw. sprechen können. Das könnte wieder einen neuen Werbeeffekt erzeugen. Denn ohne Frage hat sich CSS enorm weiter entwickelt. Die hinein interpretierte Versionierung könnte da ein Zeichen setzen, so der Gedanke.&lt;/p&gt;
&lt;p&gt;Der werbende Effekt wäre für Agenturen und Entwickler gleichermassen. Es kann aber auch dazu dienen, ein Featureset einer Webseite zu definieren, denn man kann es ja auch “nach oben” abgrenzend nutzen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nerdy.dev/&quot;&gt;Adam Argyle&lt;/a&gt; von Google hat dazu einen sehr interessanten &lt;a href=&quot;https://youtu.be/bfa5svAYDW8?si=W_7zALQ84hLTp0Fk&quot;&gt;Vortrag beim CSS Café&lt;/a&gt; gehalten. Er warb auch &lt;a href=&quot;https://front-end.social/@argyleink&quot;&gt;auf Mastodon&lt;/a&gt; immer wieder für &lt;a href=&quot;https://github.com/CSS-Next/css-next/issues/105&quot;&gt;Kommentare zur Logo-Entwicklung&lt;/a&gt;. Die angesammelten Entwürfe sind beeindruckend in ihrer Bandbreite und Qualität. Ende 2024 kam nun endlich das Endergebnis, das man in einem eigenen &lt;a href=&quot;https://github.com/CSS-Next/logo.css&quot;&gt;Github-Repo&lt;/a&gt; bewundern kann. Dort gibt es auch notwendige Hintergrundinfos zum Logo.&lt;/p&gt;
&lt;p&gt;&lt;svg class=&quot;svg-icon&quot;&gt;&lt;use xlink:href=&quot;/assets/svg/webdev1.svg#css&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;br /&gt;
&lt;svg class=&quot;svg-icon svg-icon--medium&quot;&gt;&lt;use xlink:href=&quot;/assets/svg/webdev1.svg#css&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;br /&gt;
&lt;svg class=&quot;svg-icon svg-icon--large&quot;&gt;&lt;use xlink:href=&quot;/assets/svg/webdev1.svg#css&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>CSS soll versioniert werden</title>
		<link href="http://css-weblog.de/notizen/css-soll-versioniert-werden.html"/>
		<updated>2025-01-01T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/css-soll-versioniert-werden.html</id>
		<content type="html">&lt;p&gt;HTML5 und CSS3 sind echte Marketing-Buzzwords. In einigen Stellenanzeigen werden sie noch heute genannt. Dabei wurde CSS eine nie existierende Versionierung unterstellt.&lt;/p&gt;
&lt;p&gt;Eine Gruppe Entwickler möchte daran anschliessen, denn mittlerweile hat sich CSS sehr stark weiterentwickelt. Die Idee ist, eine Gruppe von Techniken zu benennen, die zusammen eine neue Evolutionsstufe von CSS bilden, sodass wir dann von CSS4, CSS5 usw. sprechen können. Das könnte wieder einen neuen Werbeeffekt erzeugen. Denn ohne Frage hat sich CSS enorm weiter entwickelt. Die hinein interpretierte Versionierung könnte da ein Zeichen setzen, so der Gedanke.&lt;/p&gt;
&lt;p&gt;Der werbende Effekt wäre für Agenturen und Entwickler gleichermassen. Es kann aber auch dazu dienen, ein Featureset einer Webseite zu definieren, denn man kann es ja auch “nach oben” abgrenzend nutzen. &lt;a href=&quot;https://nerdy.dev/&quot;&gt;Adam Argyle&lt;/a&gt; von Google hat dazu einen sehr interessanten &lt;a href=&quot;https://youtu.be/bfa5svAYDW8?si=W_7zALQ84hLTp0Fk&quot;&gt;Vortrag beim CSS Café&lt;/a&gt; gehalten. Brecht de Ruyte schrieb einen &lt;a href=&quot;https://www.smashingmagazine.com/2024/08/time-to-talk-about-css5/&quot;&gt;Artikel auf Smashingmagazine&lt;/a&gt; dazu.&lt;/p&gt;
&lt;p&gt;Für eine genauere Abgrenzung wurden &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1CPV_BwVdZb8yOvsx-AYhwuIVRcFZ4o4htqnSCnZUE-k/edit?pli=1&amp;amp;resourcekey=0-lbyzWof4EXdz-k5SsYoTjA&amp;amp;gid=0#gid=0&quot;&gt;alle CSS-Features&lt;/a&gt; gesammelt und kategorisiert. Ich finde das Dokument sehr beeindruckend.&lt;br /&gt;
Daraus ergab sich dann ein &lt;a href=&quot;https://css-levels.netlify.app/&quot;&gt;erster Vorschlag&lt;/a&gt; für ein W3C-Dokument zur CSS-Versionierung. Ich bin gespannt, ob sich daraus etwas ergeben wird.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Kooperation der Browserhersteller</title>
		<link href="http://css-weblog.de/notizen/kooperation-der-browserhersteller.html"/>
		<updated>2024-11-20T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/kooperation-der-browserhersteller.html</id>
		<content type="html">&lt;p&gt;Einer Kooperation der Browserhersteller haben wir HTML5 zu verdanken. Sie schlossen sich damals parallel zum W3C zusammen und entwickelten HTML weiter. Doch die Phase der strategischen Einigkeit währte nie lange, sie wiederholte sich allerdings immer wieder.&lt;/p&gt;
&lt;p&gt;Unterschiedliche Initiativen wurden gestartet und wieder eingestampft. Die neueste Kooperation geht wieder in eine andere Richtung als bisher und ist sowohl vielversprechend als auch hilfreich für uns Entwickler: Interop. Auch die Baseline-Idee von Google gehört m.E. dazu.&lt;/p&gt;
&lt;p&gt;Bei Interop geben sich die Browserhersteller für ein Jahr ein Entwicklungsziel für die gemeinsame Implementierung von neuen Techniken. So soll ein vermehrter Gleichschritt der Evergreen-Browser ermöglicht werden. Das klappt anscheinend halbwegs gut.&lt;/p&gt;
&lt;p&gt;Der Vorteil für uns ist, dass wir wissen, welche Technologien in der nahen Zukunft in allen Browsern implementiert werden sollen. Und wir bekommen die große Chance, dass kein Browser zu lange hinter den anderen hinterher hinkt und uns unnötig Kopfschmerzen bereitet. Übrigens haben die Browserhersteller auch uns als Nutzer und Entwickler aufgerufen, &lt;a href=&quot;https://webkit.org/blog/15942/get-ready-for-interop-2025-your-chance-to-shape-the-web/&quot;&gt;neue Ideen für Interop 2025&lt;/a&gt; einzureichen. Ich bin gespannt, welche Ergebnisse dabei herausgekommen sind.&lt;/p&gt;
&lt;p&gt;Für diese Initiative gibt es einige interessante (Informations-)Seiten:&lt;/p&gt;
&lt;ul class=&quot;list list--ul&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://hacks.mozilla.org/2022/03/interop-2022/&quot;&gt;Announcing Interop 2022&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/blog/interop-2023&quot;&gt;Interop 2023: continuing to improve the web for developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wpt.fyi/interop-2024&quot;&gt;web-platform-tests dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web-platform-tests.org/&quot;&gt;web-platform-tests documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bocoup.com/blog/wpt-an-overview-and-history&quot;&gt;WPT: An overview and history&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://webstatus.dev/&quot;&gt;Web Platform Status&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/baseline&quot;&gt;Baseline Ankündigung&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web-platform-dx.github.io/web-features/&quot;&gt;Baseline Projektseite&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>Leichteres Positionieren mit CSS</title>
		<link href="http://css-weblog.de/notizen/leichteres-positionieren-mit-css.html"/>
		<updated>2024-11-10T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/leichteres-positionieren-mit-css.html</id>
		<content type="html">&lt;p&gt;Wollten wir ein Element über die gesamte Seite ausdehnen und absolut positionieren, mussten wir bisher immer alle vier Himmelsrichtungen angeben. Das sah dann so aus:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.test-1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mittlerweile geht das auch wesentlich kürzer:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.test-2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;inset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;inset&lt;/code&gt; ist ein Shorthand-Ausdruck und funktioniert analog zu &lt;code&gt;margin&lt;/code&gt;. Deshalb können wir auch gemischte Angaben machen:&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.test-3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; fixed&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;inset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 50px 0 0 20%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content>
	</entry>
	
	<entry>
		<title>Mehrere Codeblöcke in 11ty</title>
		<link href="http://css-weblog.de/notizen/mehrere-codebloecke-in-11ty.html"/>
		<updated>2024-10-10T00:00:00Z</updated>
		<id>http://css-weblog.de/notizen/mehrere-codebloecke-in-11ty.html</id>
		<content type="html">&lt;p&gt;Es kann in 11ty sehr sinnvoll sein, keine Markdown-Dateien, sondern Nunjucks-Dateien zu erstellen und dann spezielle Nunjucks-Features zu nutzen.&lt;/p&gt;
&lt;p&gt;Wenn man in einer Nunjucks-Seite anstelle des Links zum Template im Frontmatter das Template “extended”, dann kann man auf erweiterte Features zugreifen, die sonst nicht möglich sind.&lt;/p&gt;
&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;template.njk&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So kann man zwei oder mehr Contentblöcke in einer Seite nutzen:&lt;/p&gt;
&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;My page&quot;&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;parameter1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; lorem
&lt;span class=&quot;token literal-property property&quot;&gt;parameter2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; ipsum
&lt;span class=&quot;token literal-property property&quot;&gt;parameter3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3333&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;template.njk&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; block content &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
   &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token plain-text&quot;&gt;Title content 1&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token plain-text&quot;&gt;Lorem ipsum&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; endblock &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; block content2 &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token plain-text&quot;&gt;Title content 2&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token plain-text&quot;&gt;Lorem ipsum&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; endblock &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
</content>
	</entry>
</feed>
