Ich bin ziemlich zufrieden mit CSS. Ich weiß, es ist üblich, sich über CSS zu beschweren und wie es nie dazu gedacht war, Webseiten so zu bauen, wie wir es heute tun, und dass es für viele Aufgaben ungeeignet ist und bla bla bla. Aber ich weiß nicht. Ich arbeite jeden Tag damit und habe das Gefühl, dass es die Arbeit ziemlich gut erledigt. Vielleicht habe ich nicht die schicken Gedanken großer Denker, die alternative Universen vorhersagen können, in denen perfektere Sprachen existieren. Oder so.
Wie Hakim sagt
Wenn man bedenkt, dass CSS zum Stylen von Textdokumenten entwickelt wurde, ist es ziemlich beeindruckend, was wir heute damit machen können.
— Hakim El Hattab (@hakimel) 24. Januar 2013
Was hält also 2013 für CSS bereit? Tab Atkins arbeitet direkt an den CSS-Spezifikationen und hat seinen eigenen Plan für das Jahr dargelegt. Das klingt alles gut für mich. Besonders gut gefällt mir der Fokus auf Flexbox und Grid. Diese werden sehr mächtige Layout-Werkzeuge bieten, die uns so lange dienen werden, wie das Web 2D ist. Und der Fokus auf natives @extend, was erstaunlich wäre.
Ehrlich gesagt, vertraue ich Tabs eigenen Instinkten, wie CSS weiterentwickelt werden muss, mehr als meinen eigenen, da er so involviert ist und ein Systemverständnis hat. Man kann nicht einfach alles hineinstopfen, was irgendein Autor sagt, dass er es will, sonst endet man in einem Chaos. Nun, trotzdem, als Autor, hier sind einige Dinge, die ich gerne dort hineingestopft hätte.
1. Ich möchte ein Element auswählen können, basierend darauf, ob es einen anderen bestimmten Selektor enthält
Zum Beispiel, wähle ein Blockquote aus, wenn es einen Absatz enthält.
blockquote::contains("p") {
/* Not like this, since it's not a pseudo element, but something like it */
}
Ich habe das Gefühl, dass das ständig vorkommt und es seltsam erscheint, dass es nicht möglich ist. Das ist im gleichen Sinne wie der Elternselektor, den ich immer noch möchte und der eine ganze Dose Wurm ist.
2. Ich möchte ein Element auswählen können, basierend auf dem Inhalt, den es enthält
Inhalt, also buchstäblich Textinhalt, egal ob er in einem anderen Element steht oder nicht. Wie
h1::match-string("coyier") {
/* Not this again, since it's not a pseudo element, but something like it */
}
Ich finde, ich sollte Elemente ansprechen können, wenn sie meinen Namen enthalten, wenn ich möchte. Oder stellen Sie sich eine Seite wie Twitter vor. Sie sollten in der Lage sein, einen Tweet, der ein bestimmtes Wort enthält, auf eine bestimmte Weise zu gestalten, wenn Sie möchten. Oder Suchergebnisse.
3. Ich möchte mehrere Pseudoelemente
Wie in
.speech-bubble::before(2) {
/* Or ::before::before or something, smart people can decide */
}
Wie wir hier diskutiert haben, ist es eine gute Idee. Web Components / Shadow DOM ist cool, aber es ist zu komplex für etwas so Einfaches wie das Bedürfnis nach einem zusätzlichen bedeutungslosen Element, um es anzuhängen und ein visuelles Design-Detail zu vervollständigen.
4. Ich möchte etwas zu height: auto; animieren/übergängen können
Wie in
.flash-message {
height: 0;
opacity: 0;
transition: all 0.2s ease;
}
.flash-message.loaded {
height: auto; /* nope */
opacity: 1; /* yep */
}
Der Browser könnte die Höhe eines Elements erkennen, wenn es height: auto; (anstatt dessen aktuellen Wert) darauf hat, oder? Also herausfinden und zu diesem Wert animieren.
5. Ich möchte ein gutes Stück vom Zeug von Sass haben
In Reihenfolge, wie großartig es wäre
- @extend – d.h. dieser Selektor erbt das Zeug von diesem Selektor
- @mixin / @include – d.h. wiederverwendbare/veränderbare Blöcke
- Verschachtelung – d.h. .modul { hintergrund: schwarz; h2 { farbe: weiß; } }
Ich würde die Grenze bei Dingen wie Schleifen ziehen, die CSS zu weit in die Programmierung und sofortige Lesbarkeit treiben. Ich bin nicht einmal ein großer Fan von Variablen als native Funktion, obwohl ich denke, dass es dafür zu spät ist. Die Farbfunktionen wären süß, wenn sie auf einfache, offensichtliche, lesbare Weise gemacht werden könnten.
6. Ich möchte ::nth-letter, ::nth-word, etc. haben
::nth-everything, wirklich. Buchstaben, Wörter, Zeilen und mit all ihren verwandten Selektoren. Für ausgefallene Sachen wie diese
article.poem p:first-child::nth-line(-n+2) {
font-variant-caps: small-caps;
color: red;
}
Ich verstehe, dass der größte Blocker hier Sprachen sind. In einigen Sprachen repräsentiert ein Zeichen ein ganzes Wort, und das macht diese Konzepte unscharf. Mir scheint, dass dies jedoch überwunden werden könnte.
Der größte aller Wünsche…
Wäre, dass alle wichtigen Browser, auch mobile, eine schicke automatische Aktualisierung integriert hätten, die den Browser ohne jegliche Benutzerintervention aktualisiert. Wie Google Chrome Desktop. In fünf Jahren wäre es schön, wenn wir gar nicht mehr über Browserversionen sprechen würden. Wir würden sie nur noch beim Namen nennen, weil offensichtlich jeder, der sie benutzt, die neueste Version hat.
Ich stimme zu. Ich kenne Leute, die das lieben würden
Könnte in der Tat eine coole Funktion sein.
Mein größter Wunsch wäre die Unterstützung für Vordergrund, die genauso funktionieren würde wie Hintergrund, aber sie würde ihn über den Inhalt des Elements legen, anstatt darunter.
Außerdem würde ich mir wünschen, dass pointer-events:none in allen Browsern funktioniert. :)
Oh, oh, oh. Noch einer.
Wenn man
box-shadowauf einimganwendet, sollte es über dem Bild gerendert werden. Es ist völlig nutzlos darunter, wo es jetzt gerendert wird.Das werde ich lieben, bis zum Maximum :)
Ja! box-shadow: inset… für Bilder bitte.
Ich möchte auch inset text-shadows.
Das scheint eine so einfache Lösung zu sein, aber sie würde viel bewirken. Ich würde mir wünschen, dass box-shadow inset einfach auf ein Bild angewendet werden kann. Auch, irgendeine Anerkennung für text shadow: inset? Ich weiß, dass es ressourcenintensiv sein mag, aber trotzdem nützlich.
Ja, das ist riesig. Ich hätte gerne inset-Schatten auf Bildern!
Meine Güte, das wäre nützlich! :)
Ich stimme definitiv dem letzten Wunsch zu, und wenn das nicht funktionieren würde, können wir dann ein Update für IE 6 und 7 erstellen, das den verwendeten Computer einfach explodieren lässt? Oder zumindest recycelt, um etwas Nützliches zu werden…
+1 für element::match-string
Ich habe darauf gewartet, dass CSS stärker auf Multitouch-Interaktion ausgerichtet wird.
So etwas wie
.menu-item:double-tap
.gallery:swipe
.map:pinch
etc. Ich meine, das iPhone gibt es seit 2007. Zeit für CSS, aufzuholen.
Wir sollten sowieso für Touch-First-Interaktionen designen.
Es gibt zwar schon so etwas Ähnliches für IE10. Es heißt touch-action (derzeit mit dem Präfix -ms-)
pinch-zoom
double-tap-zoom
Obwohl dies nicht ganz dem entspricht, was Sie angefordert haben, kann es Ihnen in einigen Fällen helfen.
Ich weiß nicht… Das klingt ziemlich ereignisorientiert. Eher eine JavaScript-Sache, würden Sie nicht denken?
Ich stimme Nile zu. Am nächsten kommt CSS dem mit dem Zustand einiger Elemente (checked, visited, hover) und das ist das nächste, was es jemals erreichen sollte. Überlassen Sie Ereignisse JavaScript.
Ich möchte
border-bevel: 5px;haben, um gerade Schnitte in Box-Ecken zu machen, eine ziemlich alberne Anfrage, aber manchmal ist es wirklich mühsam, eine Fase in einer Box-Ecke zu machen. Es würde genau wieborder-radius: 5px 3px 5px 3px;verwendet werden, aber für gerade Schnitte.Ich sehe ein Web voller Windows 95 Themes… Ich denke, es ist eine gute Idee, Entwickler härter arbeiten zu lassen, um Fasen zu verwenden. ;]
Das kommt, in CSS Backgrounds & Borders 4 http://dev.w3.org/csswg/css4-background/#border-corner-shape
Für die ersten beiden könnten Sie einfach die Syntax ändern zu
Einzelner Doppelpunkt, da es sich um einen Pseudoselektor handelt, nicht um ein Pseudoelement. Obwohl, ich sehe nicht, wie der erste anders ist als der Elternselektor?
Nettes Post!
Alle Ihre CSS-Wünsche sind perfekt verständlich; wir würden alle von diesen profitieren. Viel Glück aber bei dem letzten!
Vielleicht sollten sie einfach JavaScript und CSS kombinieren und CSS in JavaScript einbinden können, ähnlich wie man Inline-Assembly in C++ einbindet.
$(document).ready(function(){
_css {
seite.hintergrundfarbe: schwarz;
seite.farbe: grün;
}
return false;
});
});
funktion setBackgroundColor(elm,clr1)
{
_css {
elm.hintergrundfarbe: schwarz;
elm.farbe: grün;
}
return false;
}
und im HTML so etwas wie ltr(links nach rechts): onltrswipe=’setBackgroundColor(“home”,”white”);’
und im HTML so etwas wie rtl(rechts nach links): onrtlswipe=’setBackgroundColor(“home”,”black”);’
nur eine Idee. selbst wenn es keine sehr gute ist.
Tatsächlich kann ein Großteil dessen, was hier vorgeschlagen wird, ziemlich einfach mit dem besten Freund von CSS, jQ, und auch mit reinem JS gemacht werden, wenn man Ineffizienz mag ;P
Ich denke, die Idee ist, eine nicht-JS-abhängige Möglichkeit zu schaffen, diese Funktionen zu erstellen, da JS auf weniger fähigen Geräten CPU-intensiv sein kann und auch auf Post-DOM-Änderungen beruht, die nicht nur nicht immer von Bots erfasst werden, sondern sich auch nachteilig auf die Benutzererfahrung auswirken, da sie auf die Benutzeroberfläche warten müssen, bevor sie mit der Seite interagieren können, was von Browser zu Browser variieren kann, insbesondere in Bezug auf die Leistung.
Höhere „menschliche Benutzer“-PLT bedeuten niedrigere Konversionsraten, was weniger Boni bedeutet! ;]
Das scheint tatsächlich eine schreckliche Idee zu sein… Es muss eine Trennung zwischen Skript und Stil geben. Und bitte verwenden Sie dafür kein jQuery.
Animierte Pseudoelemente.
Das funktioniert tatsächlich gerade. Es ist schon seit einiger Zeit in Firefox und WebKit hat die Unterstützung kürzlich hinzugefügt.
Chris erklärt es hier detaillierter https://css-tricks.de/pseudo-element-animationstransitions-bug-fixed-in-webkit/
Für Ihren ersten Wunsch, schauen Sie sich den Subjekt-Selektor in CSS Selectors Level 4 an
http://dev.w3.org/csswg/selectors4/#subject
Im Grunde schreiben Sie Ihren Selektor bis zum identifizierenden Kindelement, das Sie haben, und gehen dann zurück und fügen das Ausrufezeichen ein, um dem Browser mitzuteilen, welches Element in dieser Selektorkette Sie tatsächlich interessiert.
Ihr Beispiel
wird (angenommen, das Ausrufezeichen steht direkt nach dem Subjekt)
Ich wollte auf dieselben Dinge verlinken. Lese nur die Kommentare, um Doppelpostings zu vermeiden. Gute Sachen
Laut einem Artikel, den ich vor zwei Tagen über Elternselektoren gelesen habe, wollte ich sagen, dass es meiner Meinung nach keinen Abstand zwischen
blockquoteund!gibt (damit esblockquote! pwäre), aber der Link, den Ron gibt, lässt es so aussehen, als sollte es!blockquote psein. Jetzt bin ich vielleicht verwirrter. Oh, warte; in der Spezifikation gibt es eine Anmerkung, die besagtAber ich denke, viele Leute haben erwartet, dass es eher so ist:
blockquote < p, aber vielleicht gibt es auch Probleme mit diesem Ansatz, denn dieser Ansatz macht es vielleicht nicht immer ganz klar, welches Element links vompaufgeführt ist, auf das Stile angewendet werden sollen.@Christian: Das ist anders als ein Elternselektor. Das Beispiel mit
<impliziert, dass p ein direktes Kind von blockquote sein muss. Der Subjekselektor sollte viel mehr Optionen zulassen, einschließlich Geschwisterselektoren wieh2! + pTatsächlich, wenn Sie
::contains()hätten, hätten Sie automatisch einen ElternselektorSie müssten eine Möglichkeit haben, anzugeben, wie tief
::containssucht, obwohl.Ich erinnere mich, das mit jemandem beiläufig besprochen zu haben (gefunden: es war Tab, tatsächlich) und mich gefragt zu haben, ob mehrere Elemente „verkettet“ (d.h. eine Liste) oder „gemappt“ (d.h. eine Baumstruktur) werden sollten.
…Tabs Antwort zeigt mehr von der Konversation
Divs brauchen ein vertikales Zentrierungsattribut. Dies wird heute mehr denn je für responsives Design benötigt, und die einzige Umgehung besteht darin, ein Div wie eine Tabellenzelle zu täuschen.
flex-box.
ZOMG> Hier ist meine Wunschliste, die ich vor ein paar Monaten geschrieben habe.
Elternselektoren (offensichtlich)
Medienabfragen für Eltern-Elemente:
#meinElement (min-breite: 40em) { /* mache spezielle Dinge */ }Ein
:headerSelektor (wie bei jQuery). Nützlich für die Gestaltung von Widgets, bei denen Sie nicht wissen, welche Überschriftenebene verwendet wird.Regex-ähnliche
input[type="email|text|password|tel|etc"]ODERinput[type="all"]ODERinput[type="~text"]SelektorenJA… danke Dave… Regex sollte definitiv dabei sein!
Das fasst es zusammen!
Ja, Dave! input[„sieht aus wie Text oder fiel auf Text zurück, weil der Typ nicht unterstützt wurde“]
Um ehrlich zu sein, ich würde mir einfache Variablen wünschen – wie
$main=#FEFEFE;
Körper {
background-color: $main;
}
Wenn Sie also ein Farbthema hätten, könnten Sie es leicht ändern, ohne jede Instanz zu finden und zu ändern.
Das wäre ziemlich fantastisch.
Ich mache seit langem ähnliche Dinge mit PHP, um CSS-Blätter so zu rendern, indem ich .php anstelle von .css im Link zum Blatt verwende.
Obwohl dies ausgezeichnet funktioniert, belastet es den Server (ich nehme an, wenn Sie eine beliebte Seite sind, weiß ich es nicht).
Solange der Computer des Benutzers keine erdrückenden Mengen an Variablen verarbeitet, wäre es in Ordnung – obwohl ich als Webmaster es vorziehen würde, wenn mein Ende die Last für harte Arbeit trägt, anstatt der Benutzer.
Nur zur Information, dies ist bereits in der Spezifikation enthalten
@Remy Bach Was für eine schreckliche Art, Variablen zu deklarieren, igitt.
Erzählen Sie mir davon! Ich bevorzuge die Art und Weise, wie SASS es macht, aber soweit ich weiß, kannten die Leute die Syntax
$varName, entschieden sich aber aus irgendeinem Grund dagegen (ich habe vergessen, warum genau).Um ehrlich zu sein, ich sehe keinen Sinn in CSS-Variablen. Ich würde immer einen Präprozessor verwenden, um mich damit zu befassen, um die Leistung zu verbessern und ihn in älteren Browsern funktionsfähig zu machen.
@Eric – tu es nicht *jedes Mal*, mach es *einmal* und speichere das Ergebnis als reguläre CSS-Datei. Mach es erneut nur, wenn du etwas änderst.
Ich möchte nur
background-opacity(für Bilder), aber nicht den Hack auf Pseudoelementen, den wir jetzt machen.+1
Ich wünschte, sie würden einen Selektor hinzufügen, der es erlaubt, das vorherige Element des ausgewählten auszuwählen. Etwas wie: p.first + p.second, aber umgekehrt. Vielleicht p.second – p.first und dann das p.first stylen
Was haltet ihr von einem Selektor, der es erlaubt, ein Element auszuwählen, solange ein anderes im gesamten DOM existiert? Wie
(.mycheckbox:checked) .lightbox{ display: block; }
Ich bin mir nicht sicher, ob das eine gute Idee ist, aber wir könnten damit viel JavaScript sparen.
Für Dinge wie Dropdowns, Untermenüs usw. reicht der + Selektor dafür aus. Aber ja, das hätte einige interessante Anwendungen ;)
Ich möchte auch den 2/ Inhaltsselektor (noch besser, wenn er reguläre Ausdrücke enthält); weil es mir dämlich erscheint, überall eine „ok“- oder „cancel“-Klasse hinzuzufügen, wo ich solche Inhalte auf meiner Seite habe (noch mehr, wenn es sich um User Generated Content handelt).
breite: rest;
+1 für text-shadow inset.
Wie wäre es mit zusätzlichen Filtern (-webkit-filter:)? Multiplizieren, Bildschirm, Überlagern, Farbüberlagerung usw.
Außerdem mehr Eigenschaften für Übergänge!
Ja, das wäre auch so cool, wenn sie Filter hätten, genau wie die Mischoptionen von Photoshop (innerer/äußerer Schein, Musterüberlagerung, Kontur usw.), aber ich bin sicher, dass die Browser in Zukunft stark genug sein werden, um diese Arten von Operationen zu rendern.
::wrapper Pseudoselektor
Meine Wahl ist nichts Verrücktes oder Besonderes, aber ein Problem, auf das ich manchmal stoße: die schizophrene Natur der
display-Eigenschaft zu beheben. Sie wird sowohl für Layoutzwecke (wieinline-block) als auch zum Anzeigen/Verbergen von Dingen verwendet, und diese beiden Zwecke widersprechen sich oft in CSS. Also, vielleicht eine neue Eigenschaft zum Ausblenden/Einblenden von Elementen?Und wenn ich esoterisch werden darf, hätte ich immer noch gerne die responsiven Container/Selektor-Abfragen.
Visibility hat „hidden“ und „visible“, die zum Ausblenden und Einblenden von Dingen verwendet werden können, obwohl ich denke, dass es sich von display darin unterscheidet, dass Screenreader „visibility: hidden“-Dinge immer noch vorlesen werden, aber „display: none“ nicht vorlesen werden, und außerdem „visibility: hidden“ seinen Platz auf der Seite beibehält, anstatt zu kollabieren.
Einige Möglichkeit, display:inline-block zu verwenden, ohne dass der Leerraum aus Ihrem Code automatisch angezeigt wird und ohne auf font-size:0 zurückzugreifen.
Es ist immer Spaß, in die Zukunft zu schauen, was wir mit CSS bekommen könnten. Ich denke, eine gute Handvoll dieser Dinge gehört einfach nicht in CSS, da sie prozessintensiv wären und CSS (wie es ist) extrem schnell sein sollte.
Schleifen, Logik, Regex oder alles, was den Inhalt innerhalb des Markup scannen muss. Natürlich könnten diese Dinge mit mehr Arten von Caching oder so etwas umgangen werden, aber. KISS
Ich persönlich mag es sehr, wenn SASS (oder jede Vorverarbeitung) viele der Logikaufgaben übernimmt, aber wer weiß, was die Zukunft bringt.
Ich hoffe wirklich auf den „Ist Eltern von“-Selektor. Selektoren der Stufe 4 scheinen dies einzuschließen (http://www.w3.org/TR/2011/WD-selectors4-20110929/#overview), aber wenn wir das etwas vorantreiben könnten, wäre ich ein glücklicher Entwickler.
Hallo Chris.
Während ich zustimme, dass ich nicht möchte, dass CSS zu einer Programmiersprache wird, denke ich, dass es ein Missverständnis bezüglich der CSS-Variablenspezifikation gibt. Wie sie derzeit definiert sind, sind die „Variablen“ eher benutzerdefinierte Eigenschaften (tatsächlich verwendet der aktuelle Entwurf der Spezifikation die Begriffe „kaskadierende Variablen“ und „benutzerdefinierte Eigenschaften“ bei Verwendung und Deklaration bzw.). Die Art und Weise, wie sie definiert und verwendet werden, ist sehr CSS-artig, und obwohl sie anstelle einiger Präprozessor-Variablen verwendet werden können, können sie nicht als Drop-in-Ersatz verwendet werden. Persönlich finde ich CSS-Variablen (wie auch immer sie heißen!) großartig, aber es wird uns Markup-Schreibern eine Weile dauern, einige Best Practices herauszufinden. (Ich sehe einen zukünftigen CSS Tricks-Artikel namens „Wann CSS-Variablen und wann SASS-Variablen verwenden“!).
@Brad, dasselbe gilt: CSS wird immer noch eine Auszeichnungssprache sein und nicht mehr Verarbeitung als zuvor benötigen; tatsächlich, wenn einige dieser Verbesserungen in die Spezifikation aufgenommen werden, wird es insgesamt weniger Verarbeitung geben, da ein Teil des benutzerdefinierten JavaScripts, das da draußen ist, überflüssig wird (siehe zum Beispiel Tabs Punkt zu Animationen oder Chris‘ Kommentare zu
height: auto;).Schöne Liste. Ich möchte auch mehr Pseudoelemente können.
Ich habe das Gefühl, dass #2 in die Kategorie „Mischen von Inhalt mit Präsentation“ fällt.
Mein Wunsch ist albern, aber ich hätte gerne
clear: self;oder etwas Float-bewusstes, damit wir keinen Clearfix oder irgendeinen anderen Hack mehr brauchen.Ich stimme Ihnen dem absolut zu. Das Einfügen von
<div class="clear"></div>zwischen Elementen wird sehr frustrierend!Das wäre großartig, die beste Lösung im Moment ist, eine Klasse wie folgt zu setzen
.clear {
content: “.”;
clear: both;
visibility: hidden;
height: 0;
width: 0;
line-height: 0;
}
Und fügen Sie diese Klasse einfach zu den zu löschenden Elementen hinzu, aber wie Sie sagten, es ist eine Umgehung. Und es funktioniert in Legacy-Browsern (lesen: IE) nicht richtig.
Das sollte .clear:after { … } sein, hoppla!
Während das „nett“ ist, bräuchten Sie trotzdem einen Polyfill-Hack, um das auf die altmodische Weise zu machen, da Floats bereits Hacks für IE 7/8 sind, und diese Browser werden mit Sicherheit keine neuen Float-Schönheiten unterstützen.
Ich möchte das machen können
anstelle von
Das wäre mit Verschachtelung gelöst
Der
:matches()Selektor der Stufe 4 würde dieses Problem ebenfalls lösen.Ich glaube, sie adressieren Ihren Wunsch #2 in CSS Level 4 mit ‚match‘.
Ich habe gestern gerade davon gelesen. Sie haben im Beispiel verwendet, dass man alle Zustände von Links gleichzeitig ansprechen kann (normal, hover, focus, active).
Ich wünsche mir, dass alle Browser Webseiten korrekt darstellen
und dass IE für alle aufgehört hat zu funktionieren)
Ich stimme definitiv zu „Inhalt, den es enthält“ und besonders Ihrem letzten Wunsch zu!
Tolle Ideen, die überall geteilt werden. Danke, dass Sie sie für die Möglichkeit, zu zukünftigen Spezifikationen beizutragen, zusammengestellt haben.
So viele brillante Ideen von allen anderen. Mein Wunsch wäre ein goldener Moment, eine spezielle Version für jeden Browser, in der sie sich zu diesem Zeitpunkt alle darauf einigten, alle CSS auf die gleiche Weise zu rendern. Webkit, Box-Modell, Input-Rendering, alles gleich gerendert von jedem Browser….
Ich hätte gerne eine disinherit-Funktion für ul und li.
Text-Kontur! :)
Das können Sie mit text-shadow machen.
Bezüglich mehrerer Pseudoelemente, die Spezifikation für „CSS3 Generated and Replaced Content Module“ definiert dies bereits, aber soweit ich weiß, unterstützt kein Browser dies
http://www.w3.org/TR/css3-content/#inserting0
1 ist in CSS Level 4!
!blockquote p {}3 Adobe hat einen fantastischen Vorschlag für *n* Pseudoelemente gemacht.
4 Es gibt etwas Gerede darüber, Sass-Funktionen wie extend in CSS zu integrieren.
Chris,
Ich bin zurückgegangen und habe deinen Beitrag zu Elternselektoren gelesen und bemerkt, dass er von 2010 stammt, also habe ich mich gefragt, ob du das gesehen hast
http://www.w3.org/TR/2011/WD-selectors4-20110929/#subject
Für mich macht die Bestimmung des Subjekts des Selektors mit „$“ ihn mächtiger als nur Elternselektoren.
Man könnte im Wesentlichen einen mächtigen Selektor haben wie „div, das einen Absatz enthält, der ein links ausgerichtetes Bild hat“ wie folgt
$div p img[align=left] { }Oder wenn Sie das p-Tag wollen
div $p img[align=left] { }Ich mag es irgendwie, bin mir aber nicht sicher, wie ich zu dem $ stehe, da es für mich nur wie eine Variable aussieht.
Schön.
Das hatte ich nicht gesehen. Sehr, sehr schön.
… außerdem schaust du dir einen älteren Entwurf an. Der aktuelle Entwurf verwendet
!als Subjektmarker.Und Formen bitte. Ich weiß, dass es bereits möglich ist, Dreiecke und Quadrate zu erstellen, aber es ist unnatürlich und unzuverlässig. So etwas wäre schön.
div
{
form:dreieck;
breite:100px;
höhe:100px;
farbe:rot;
}
Gleichseitig, rechtwinklig, gleichschenklig, Spitze oben, Spitze unten, Spitze links oder rechts???
Für #1 siehe den Subjektindikator in Selectors 4.
Für #2 wäre nützlich, aber schwer schnell zu machen. Wir werden eine „Selectors for Batch Processors“-Spezifikation für Selektoren-Engines aufteilen, die nicht kontinuierlich laufen, wie document.querySelector(), und einige dieser „zu langsamen für reguläre Selektoren“-Dinge wären dort in Ordnung.
Für #3, ich auch. Wir haben dafür eine neue Spezifikation, aber wenig Schwung von Browsern.
Für #4, verdammt ja.
Für #5, es steht auf meiner Liste für dieses Jahr.
Für #6 ist diese Familie von Pseudoelementen so schwer. ;_; Ich weiß, wie nützlich sie in einigen Umständen wären, aber die Tatsache, dass sie den Box-Baum nicht mehr zu einem Baum machen (oder besser gesagt, dass wir ihre Definition verdrehen müssen, um den Box-Baum als Baum zu erhalten), macht sie aus Sicht der Spezifikation/Implementierung super ärgerlich.
Ich denke, ein Elternselektor könnte sehr nützlich sein.
Ich weiß, ich würde es wirklich lieben, die Höhe:auto-Animation zu haben, und verdammt ja für :nth-alles!
Ich denke, eine Medienabfrage für die Scroll-Position wäre sehr hilfreich. Sie wäre nützlich für die Parallax-Sachen, die gerade angesagt sind, aber praktischer für Situationen wie auf store.apple.com, wo ein Element (wie Ihr Bestellgesamtbetrag und Checkout-Link)
position:fixedwird, sobald Sie unter seinen üblichen Platz gescrollt sind.div#priceBox {
position: absolute;
top: 200px;
}
@media and min-scroll-top: 200px {
div#priceBox {
position: fixed;
}
}
Es könnte auch für Blockelemente mit Überlauf-Scrolling nützlich sein.
div#contentContainer:scrollTop(>100px) { }Wie ist noch niemand vorher darauf gekommen!?
+1
Diese Anwendung von position: fixed könnte auch durch die derzeit vorgeschlagene
position: sticky;erfolgen. Sie funktioniert derzeit nur in WebKit, aber hoffentlich wird sie bald auch in andere Browser Einzug halten.+1 für die Fähigkeit, „height: auto;“ zu animieren.
Ich war total begeistert, als ich von der Fokussierung auf Flexbox hörte. Ich benutze Flexbox (neueste Version) gerade für eine Intranet-Web-App (erfordert Google Chrome), was verdammt gut ist. Ich fühle mich schmutzig, wenn ich jetzt Floats benutze :) :( Floats waren nie dazu bestimmt, so verwendet zu werden, wie sie es waren. Schreibt noch jemand Intranet-Web-Apps? Ich habe den Eindruck, dass die meisten Leute ihr linkes Ohrläppchen geben würden, um das tun zu können, da man den verwendeten Browser vorschreiben und fast alles tun kann, was man will (Dart, irgendjemand?).
Text-Gradient, damit ich Designern nicht mehr sagen muss, sie sollen ihre Mockups überarbeiten. :P
Ich stimme zu, das wäre unterhaltsam, aber Sie sollten Ihren Designern sagen, sie sollen ein paar CSS-Kurse belegen, damit sie wissen, was möglich ist, ohne dass Sie zurückkommen und ihnen sagen müssen, dass sie es überarbeiten sollen! =)
Ich brauche einen inset BORDER RADIUS.
Ich muss Ihnen Chris beim Elternselektor zustimmen – das ist mir auch schon oft aufgefallen. Es ist wie der Kindselektor, aber umgekehrt.
Wenn Sie am Anfang sagen, dass Sie mit CSS zufrieden sind, denken Sie daran, dass Sie viel Erfahrung haben. Die meisten Leute können nicht so mit CSS zaubern wie Leute wie Sie, und es ist bedauerlich, dass man ein CSS-Genie sein muss, um es ohne Frustration bedienen zu können.
::xpath()-Selektor wäre sehr nützlich und würde viele gewünschte Funktionen wie „::match-string“ bringen
Das ist schön…
Vielen Dank, sehr, sehr schönes Coding-Plugin
:parent wäre ganz oben auf meiner Liste, ebenso wie :parents, fast wie jQuery-Selektoren.
:parents(“p”)::contains(“span”)
Aber dann ist das auch ein Problem, wo zieht man die Grenze zwischen CSS und dem, was man mit jQuery machen kann?
Hier gibt es keine Verwirrung. Ein Element zum Stylen auswählen ist eine CSS-Sache. Ein Element zum Ausführen von Aktionen darauf auswählen ist eine JavaScript/jQuery-Sache.
Ja, Vererbung wäre großartig (oder Mehrfachvererbung), so dass Sie Stile von anderen Klassen erben und einen neuen Klassennamen zuweisen können. :)
Elternselektoren kommen in CSS4
UL! LI:hover{
background: #fff;
}
Die CSS zielt in diesem Fall auf die UL ab.
Referenz: http://www.w3.org/TR/selectors4/#subject
Ich dachte auch, ich sollte darauf hinweisen, dass man mit Hitch http://www.hitchjs.com/ alle möglichen zukünftigen CSS-Sachen machen kann
Mehrere Pseudoelemente und die Animation zu height:auto wären großartig.
Da wir schon dabei sind zu wünschen, hätte ich gerne eine Implementierung eines Wertes „current“ für mehrere CSS-Deklarationen. Etwas wie das
.btn { box-shadow:1px 1px 5px rgba(0, 0, 0, .5); }
.btn.active { box-shadow:current, inset 2px 2px 8px rgba(200, 0, 0, .6); }
Im Grunde könnte es für jeden Wert verwendet werden. Einige andere Beispiele
.awesome-input { margin:40px 10px 5px 10px; padding:10px 5px 4px 5px; }
.awesome-input:focus { margin:current 5px current 20px; padding:current 10px 8px 10px; }
.label { text-shadow:1px 1px 1px #000, -1px -1px 1px #eee; }
.label.error { text-shadow:current, current, 0 0 10px #f00; }
Natürlich kann man für Dinge wie margin/padding usw. die Eigenschaft für jede Seite verwenden, aber es wäre schön, wenn wir immer Kurzschrift verwenden könnten.
Es wäre besonders schön für
text-shadow, box-shadow, background, etc.– alles, was mehrere Werte akzeptiert.+1
Hinzufügen von Hintergrundbildern
.fading { background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0), #fff); }.fading.logo { background-image:current, url(logo.jpg); }Ändern von Farben, aber nicht von Transparenz
.light-text { color:rgba(128, 128, 128, .5); }.light-text.color2 { color:rgba(255, 0, 0, current); }Ich glaube nicht, dass dies jemals erwähnt wurde, aber so etwas wie
shape:hexagon. Natürlich könnte dies auf weitere Formen ausgedehnt werden, oder vielleicht sogar eigene definieren, wieshape:polygon();, in das man natürlich die Koordinaten einfüllen könnte.So etwas wäre mit normalem CSS im Moment sehr, sehr schwer
Ich würde gerne Werte basierend auf einem anderen Wert im selben Selektor festlegen können. Ein gutes Beispiel ist das Setzen von
blur()basierend auftranslateZ()auf direkten Kindern eines Transformationscontainers. Dies würde eine Schärfentiefe simulieren, ohne dass man viel Klassen-basiertes Hokus-Pokus machen muss.„[…] alle wichtigen Browser, einschließlich mobiler, mit schicker automatischer Aktualisierung, die den Browser ohne jegliche Benutzerintervention aktualisiert“
Amen!
Ich hätte gerne einige Pseudoelemente, die das Styling neuer HTML5-Formularfelder ermöglichen, damit die Leute die nativen UI- und Validierungsfunktionen nutzen können (ich habe darüber hier geschrieben http://www.brucelawson.co.uk/2013/on-the-styling-of-forms/
Und, aus meiner Wunschliste von 2006, eine Möglichkeit, Songtexte und Gedichte (die überall im Web zu finden sind) und Codebeispiele richtig zu stylen, damit man zwischen einem autorbezogenen Zeilenumbruch und einem Zeilenumbruch, den der Browser aufgrund schmaler Spalten/großer Schriftgröße eingefügt hat, unterscheiden kann: http://www.brucelawson.co.uk/2005/what-i-want-from-css-3/
„Ich möchte ein gutes Stück vom Zeug von Sass haben“…
Ich hoffe nicht… Lasst CSS und die Präprozessoren getrennt. Ich liebe mein LESS, aber ich mag es zu wissen, dass es eine andere Art ist, gutes altes CSS zu codieren.
Ich habe Ihre Wunschliste gerne gelesen, insbesondere die Kommentare zu Browserversionen.
Tatsächlich ist die Übergang zu height: auto durch einen sehr cleveren Hack möglich, schauen Sie sich diesen jsfiddle von Lea Verou an
http://jsfiddle.net/leaverou/zwvNY/
animieren Sie einfach max-height statt height!
Manchmal funktioniert das, aber man kann die Zeitsteuerung nicht gut steuern. Hier ist meine Erklärung dazu in einem anderen Blog, der über die max-height-Technik spricht: http://www.thenerdary.net/post/20924702599/transitioning-max-height#comment-498618550
Das funktioniert so halbwegs, aber es animiert immer noch den Dropdown-Effekt nach unten zu 999px. Deshalb ist der Effekt in diesem jsfiddle viel schneller als 1 Sekunde. Wenn Sie tatsächlich die Höhe des Dropdowns messen (200px) und diesen Wert als max-height verwenden, dauert die Animation 1s. Aber dann verlieren Sie natürlich die Möglichkeit, das Menü länger als 200px zu haben.
Für meine Menüs habe ich das längste Menü gemessen, das ich für möglich hielt, unter der Annahme, dass keine weiteren Links hinzugefügt/umbenannt würden, und diesen Wert als max-height verwendet.
Ich hätte das wirklich gerne implementiert, ich bin sicher, es ist nur ein Versehen und kein Plan.
Meiner Meinung nach ist ehrlich gesagt alles außer #5 ein Nice-to-have, angesichts weitaus größerer und nützlicherer Probleme, die gelöst werden müssen. Damit meine ich hauptsächlich fortgeschrittene Layouttechniken, wie Sie bereits in der Einleitung vorgeschlagen haben. Es macht mich fassungslos, dass es 2013 immer noch so schwierig oder so viel Arbeit ist, nicht-triviale CSS-Layouts zuverlässig zu erstellen.
Re: Der größte aller Wünsche…
Das ergibt nur Sinn, wenn Softwareentwickler keine coolen neuen Funktionen erfinden, die doppelt so viel Gerätespeicher benötigen wie die vorherige Version. Betriebssysteme, Software, wie Browser sind Sklaven der Hardware, auf der sie laufen. Aber sollten sie es sein?
Tolle Seite, unterstütze sie und den Ersteller immer noch.
Nur ein paar Fragen
Warum haben CSS-Tricks-Seiten keine Facebook- oder Twitter-Like-Buttons?
Warum muss ich auch ganz nach unten scrollen, nur um einen Kommentar zu schreiben?
Ich denke, etwas wie das hier wäre auch schön
.main-column {
height: auto;
min-height: 300px;
}
.seconday-column {
height: $(".main-column").height;
}
Ich möchte einige Elementattribute basierend auf den Werten anderer Elemente festlegen können.
Ist das nicht bereits in den Level 4 Selektoren enthalten, um auf einen Elternteil verweisen zu können, der ein Kind enthält, indem man
!in rhw verwendetJa, es ist bereits in Arbeit. Es gibt einige Debatten darüber, wo der Ausrufezeichenpunkt sein soll
http://dev.w3.org/csswg/selectors4/#subject
etwas sehr Grundlegendes
.class:nth-class(2)
und etwas *Einfaches*, um ein *Block*-Element vertikal und horizontal zu zentrieren, ohne Tricks.
Hallo Chris, was Sie in Punkt #6 sagen, klingt gut; aber ich frage mich nur, was aufwendiger wäre? Die Anwendung des Stylings, wie Sie es vorschlagen, oder die Zuweisung eines Stils zu einem Span, der immer wieder hinzugefügt werden kann?
Beste Grüße
Umgang mit Floats intuitiver
Ich hätte gerne collapse:normal; und collapse:none;, damit Floats intuitiver gehandhabt werden können. Es gibt einige Workarounds, aber CSS wäre besser, wenn diese Funktion nativ wäre.
Kollabieren bedeutet, dass ein Eltern-Element, das eine beliebige Anzahl von schwebenden Elementen enthält, nicht so erweitert wird, dass es diese Elemente vollständig umschließt, wie es der Fall wäre, wenn die Elemente nicht schwebend wären. Sehen Sie den Artikel von Noah Stokes auf A List Apart, CSS Floats 101. Das Problem ist, dass da schwebende Elemente ursprünglich im normalen Fluss berechnet und dann *entfernt* werden, das Eltern-Element das schwebende Kindelement nicht innerhalb seiner Grenzen berücksichtigt und sich daher verhält, als ob es gar nicht da wäre.
Einen schönen Tag noch!
Browser. Ich wünschte wirklich, die Browser würden mit der Unterstützung der aktuellen Spezifikationen von CSS3/HTML5 auf eine benutzerfreundlichere (entwicklerfreundlichere) Weise aufholen. Auch alte Browser (zumindest IE6-8) sollten nicht so viel Einfluss auf die Entwicklung einer Webseite haben, wie sie es immer noch haben.
Ich möchte ein Element auswählen, wenn eine bestimmte CSS-Regel darauf angewendet wird.
Zum Beispiel, wenn die verwendete Schriftart „Arial“ ist, möchte ich, dass die Farbe dieses Elements grün ist
Ein CSS-Stilselektor wäre völlig sinnlos, da es genauso einfach oder einfacher ist, beide Stile zu schreiben, und es wäre ein schrecklich langsamer Selektor, da er davon abhängt, dass alle anderen Stile zuerst ausgeführt werden.
Vielleicht haben Sie Recht, aber ich glaube, es gibt viele Situationen, in denen ich so etwas brauchte. Ich musste zum Beispiel alles, was fett gedruckt ist, stylen … das Ausführen und Einfügen der Regel in alle Selektoren, die ein Element fett machen, ist mühsam und zeitaufwendig, je größer und größer Ihr Projekt wird.
Das ist sowieso eine Wunschliste :) Alles, was Sie sich jemals gewünscht haben, können Sie schamlos sagen :P
Genau.
„Ich möchte etwas zu height: auto; animieren/übergängen können“
++ 10
Ich wünschte, ich hätte einen Pseudoselektor für Porträt- und Landschaftsbilder wie img:portrait {} img:landscape {}. Der Pseudoselektor sollte also automatisch erkennen, ob die Bildbreite oder -höhe länger oder kürzer ist und umgekehrt.
Das werde ich lieben..!
Ich würde gerne einen Wert für die Eigenschaften ‚width‘ und ‚height‘ sehen, der das Bild im Seitenverhältnis in Bezug auf die andere Eigenschaft beibehält.
Nehmen wir an, wir haben ein Bild mit 300px Breite und 200px Höhe
Hah! Nette Wunschliste. Im Moment denke ich nicht über irgendetwas nach. CSS3 ist erstaunlich, aber manchmal frustriert es, wenn man an einem Projekt arbeitet, aber nicht das erreichen kann, was ich mit einfachem CSS wollte.
Ich habe noch eine für dich, ich habe in den letzten Wochen viel darüber nachgedacht. Ich hätte gerne ein position-anchor Attribut
Beispiel
Würde den Anker für die absolute Platzierung auf die obere Mitte des Box-Modells setzen. Wenn Sie also jetzt setzen
würde das Element direkt in der Mitte unter dem übergeordneten Element liegen, unabhängig von seiner tatsächlichen Breite. Auf diese Weise sparen Sie den margin-left-Teil, bei dem Sie die tatsächliche Größe des Elements nicht kennen.
LOL, bei #2 bin ich mir nicht sicher.
<hypothetisches_Szenario>
„Herr Cox, Sie haben elektronisch zugestimmt, dass Sie alle rechtlichen Befugnisse und Autoritäten abtreten, wenn Sie sich das letzte Mal bei FaceBook angemeldet haben und seinen EULA-Bedingungen zugestimmt haben.“
„Was?! Wann?“
Facebook Rechtsdokument/CSS-Stylesheet
</hypothetisches_Szenario>
Das wäre in Richtung Täuschung gehend, da der Vertragsersteller die Sichtbarkeit eines relevanten Satzes klar verhindert hat. Es ist also nicht so, dass der Vertragsunterzeichner vergessen hat zu scrollen oder auf einen "Mehr anzeigen"-Link zu klicken oder so etwas (stellen Sie es sich so albern vor, als würde ein Vertragsersteller die Hälfte eines Vertrags mit Zitronensaft schreiben, auf der zweiten Hälfte eines einseitigen Vertrags).
Ach Mist, ich hätte die Vorschau der Antwort sehen sollen, mein "hypothetisches_Antwort"-Tag wurde entfernt :P
Ich bin wirklich sehr an der Hinzufügung mehrerer Pseudo-Elemente interessiert (habe sogar meinen eigenen Senf zu dieser Diskussion beigesteuert, die mit #3 verlinkt ist).
Ich denke, die Frage läuft darauf hinaus, ob jedes einzelne über eine Nummer oder auf eine Weise mit benutzerdefinierten Namen ausgewählt werden würde.
Auch diese Funktion macht sehr viel Sinn hinzuzufügen, da es viele Möglichkeiten zu geben scheint, wie sie für ältere Browser graceful degraden kann.
Ich hätte so etwas gerne
Das würde alles in #wrapper zentrieren
Tolle Wunschliste, 1 Jahr später, näher dran! Noch ein paar, da es jetzt 2014 ist, weiß nicht, ob sie in den Kommentaren erwähnt wurden :) Vielleicht habt ihr Antworten auf einige davon? Lasst die Wünsche wahr werden!
1) Elemente vertikal zentrieren, ohne display:table hackeries auf ihren Elterteilen, nicht-flex-Legacy-Seiten usw. zu verwenden.
2) CSS-Animationen mit "display: none;"-Umschaltung funktionieren lassen, damit einfache Menüs verblassen/etc. können.
3) Methode, um "content:'Test';" an Stellen ohne Pseudo-Selektoren zu setzen, was beispielsweise bei bestimmten Buttons nicht funktioniert.
4) Ähnlich wie bei anderen Targeting-Gedanken, die Sie hatten, die Dokumenten-URL zugänglich machen mit ::contains, um JS-Flackern oder Ladeverzögerungen beim Aufrufen von Theme-Layern zu reduzieren. Derzeit verlassen sich alle auf JS oder serverseitig dafür. Es ist eine SaaS-Welt, serverseitig wird es immer schwieriger zu bekommen.
5) Linkhöhen und -breiten von Objekten – ebenfalls abstrakt, aber in einer Liste können die Elemente alle unterschiedliche Höhen haben. Verlässt sich derzeit ebenfalls auf JS, doch Flex + @extend hat das Potenzial…vielleicht. Oder vielleicht macht Flex das bereits und wir verpassen etwas!
6) Das ist sehr weit hergeholt, aber in der kommenden animierten und 3D-Welt muss etwas Ähnliches wie z-index realisiert werden. Leute meistern bereits die 2D-Schicht, um einfache Spiele und Ähnliches zu animieren. Gravitation oder g-index wäre die Lösung für zukünftige atemberaubende Animationen. Natürlich sind x-index und y-index immer noch sehr nützlich :)