Paul Irish schrieb kürzlich einen Beitrag über die Verwendung des Universal-Selektors, um border-box box-sizing für alles festzulegen
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
Ich wollte das schon eine Weile ausprobieren und ich bin froh, sagen zu können, dass ich es bereits in einigen Projekten verwendet habe und es fantastisch ist. Es hat mich auch dazu gebracht, darüber nachzudenken, welche anderen Eigenschaften ähnlich nützlich sein könnten, wenn man sie auf alle Elemente der Seite anwendet.
Übergänge
* {
-webkit-transition: all 0.2s ease;
-moz-transition: all 0.2s ease;
-ms-transition: all 0.2s ease;
-o-transition: all 0.2s ease;
}
Wenn du einen Desktop-Browser verwendest, probiere es jetzt gleich aus. Öffne die Entwicklertools deines Browsers und füge eine neue CSS-Regel hinzu. Ich bin zufällig in Chrome, also

Ich habe es gerade im WordPress-Dashboard ausprobiert, wo ich das schreibe, und es macht ziemlich verrückten Spaß, besonders in der Seiten-Navigation. Die Leistung könnte hier sicherlich ein Problem sein, daher befürworte ich die Verwendung im Moment nicht unbedingt, aber es macht Spaß, damit herumzuspielen. Wenn alles auf der Seite einen schnellen und gleichmäßigen Übergang hat, finde ich, dass es sich angenehm, sanft und beruhigend anfühlt.
Nicht wiederholende Hintergründe
Ich wette, im Großen und Ganzen sagst du Hintergründen öfter, sie sollen sich no-repeat verhalten, als dass du sie tatsächlich wiederholen lässt.
* {
background-repeat: no-repeat;
}
Auf diese Weise kannst du
.logo {
background-image: url(logo.png);
}
ohne dir Sorgen machen zu müssen, dass das von dir festgelegte Bild sich wiederholt und komisch aussieht, wenn der Container etwas größer als das Logo ist. Und du musst auch nicht die Kurzform für background verwenden, die background-color, background-attachment und background-position festlegt/zurücksetzt, ob du es willst oder nicht.
Ich weiß, Estelle Weyl ist ein Fan. =)
Relative Positionierung
* {
position: relative;
}
Wenn alles mit relativer Positionierung beginnt, bedeutet das, dass z-index „einfach funktioniert“, anstatt des verwirrenden Problems, bei dem standardmäßig statisch positionierte Elemente es ignorieren. Es bedeutet auch, dass es einfacher ist, Dinge mit top, left, right und bottom zu verschieben, die alle auf relativ positionierten Elementen „einfach funktionieren“. Es mag schwierig sein, dies auf ein bestehendes Layout anzuwenden, aber von Grund auf neu damit zu beginnen, sollte nicht allzu schwer sein.
Mittlere Ausrichtung
* {
vertical-align: middle;
}
Ich stelle fest, dass ich diesen Wert oft festlege, besonders bei Projekten, die Symbole verwenden. Auf den meisten Layouts, auf denen ich es angewendet habe, hat es nicht viel bewirkt, da es nur wirklich auftritt, wenn Inline- oder Inline-Block-Elemente auf derselben Zeile miteinander ausgerichtet werden. Im Wesentlichen stelle ich fest, dass ich dies öfter festlege, als eine Standardeinstellung zurücksetze, was es meiner Meinung nach zu einem guten Kandidaten für die universelle Festlegung macht.
* {position: relative;}lässt IE6 abstürzen, was möglicherweise keine schlechte Sache ist. . .Andererseits verwende ich heutzutage bei so ziemlich allem, was ich mache, den Übergang, er ist wirklich schön bei :hovers für Links, und ich bin noch auf keine Leistungsprobleme gestoßen.
„* {position: relative;} lässt IE6 abstürzen, was möglicherweise keine schlechte Sache ist. . .“
hehe
Ich weiß nicht, ich mag IE 6 ehrlich gesagt überhaupt nicht und habe mich nicht davon zurückgehalten, eine Website zu erstellen, die, obwohl sie kompatibel ist, in IE 6 überhaupt nicht sichtbar ist, indem ich eine if-Anweisung mit einem Style-Code mache, der *{display:none} besagt; nur um IE 6-Benutzer zu trollen.
Ich habe auch gekichert, als ich den IE6-Kommentar gelesen habe
Ich unterstütze dich in dieser Sache.
Ich benutze
* { transition: all 0.2s ease; }schon eine Weile und habe nie Geschwindigkeitsprobleme bemerkt. Selbst bei geringer Bandbreite.Danke für den Tipp, ich werde das jetzt einfach zu all meinen Websites hinzufügen =)
LOL!! :D IE6??? Wirklich??? :D :D
Lässt IE6 abstürzen? Ich bin dabei!!
Lässt IE6 abstürzen? Zähl mich dazu =)
Hahaha, das zu wissen, lindert den Schmerz ein wenig.
Ha, nett!
Vielleicht werde ich diesen hier jetzt tatsächlich verwenden.
Nett! Direkt verwendet!
IE6 uuuuh Mann! :)
Dann ist dieser Code perfekt :D
@Julien, meinst du das ernst?
> Selbst bei geringer Bandbreite.
Was hat CSS und clientseitiges Rendering mit Bandbreite zu tun?
Was `* { position:relative }` betrifft. Ist dir klar, dass du damit die Möglichkeit verlierst, Dinge ein für alle Mal absolut zu positionieren?
@Julien, er meinte die clientseitige Render-Leistung, nicht die Netzwerkleistung :)
Das hat meinen Tag gerettet! :D
So sehr ich auch denke, dass *{position: relative;} fantastisch wäre, ich sollte damit experimentieren, aber ich kümmere mich nicht mehr um IE 6, ich denke, wir alle sollten das tun. IE 6 ist jetzt tot und während einige von uns
....während einige von uns IE 7-Bedingungen für IE 6 verwenden, denke ich, es ist wirklich Zeit, sich nicht mehr darum zu kümmern und sich darauf zu konzentrieren, IE 7 jetzt auszumerzen. IE 7 ist der einzige, bei dem ich die größeren Fehler sehe (d.h. schlechte Ränder), also denke ich, es ist Zeit, damit anzufangen, ihn auszumerzen.
Dumme Antworter... Macht ihr Websites nur für euch selbst, oder um den Nutzern Inhalte zur Verfügung zu stellen, egal welches Tool sie verwenden? Ihr dummer Haufen degenerierter, egoistischer, egozentrischer Pseudo-Entwickler. Benutzerfreundlichkeit und Barrierefreiheit sollten eure Hauptanliegen sein, nicht die Größe eures kleinen Geräts. Fehlgeleitete Eitelkeit.
Ich verwende das oben Genannte, seit ich es natürlich von deinem Blog gelernt habe :) Universelle Easing-Übergänge sind sehr effektiv. Aber ich habe aufgehört, mich um den IE6 zu kümmern. Die Leute, die ihn benutzen, sollten erkennen, dass wir im 21. Jahrhundert leben.
Es ist lustig, dass du das sagst. Du musst bedenken, dass das Internet immer noch sehr neu ist und sich sehr schnell bewegt.
IE6 ist im 21. Jahrhundert herausgekommen. Es kam am 27. August 2001 heraus (nachdem Windows XP fertiggestellt war).
In den letzten 10 Jahren ist das Internet zu einem völlig neuen Biest geworden. Und in 10 Jahren wird es ein völlig anderes Biest sein. Und 10 Jahre danach noch eins. So funktioniert Technologie nun mal.
Ich würde position: relative nicht auf dem Universal-Selektor verwenden.
Oft verwende ich es bei Elementen, die ein Kind haben, das position: absolute verwendet. Dadurch kann ich die Position des übergeordneten Elements als Referenzpunkt verwenden und nicht den Anfang der Seite.
Wenn jedes Element relativ ist, wäre die Verwendung dieser Technik viel komplizierter oder in einigen Fällen vielleicht sogar unmöglich.
Ich denke, was du meinst, ist, dass du nicht *immer* möchtest, dass der Positionierungskontext das übergeordnete Element ist, wie es der Fall wäre, wenn alle Elemente relativ wären. In diesem Fall könntest du das übergeordnete Element auf statisch zurücksetzen. Aber ja, es könnte seltsam sein.
Ja, genau.
Wenn die Elemente mit position: absolute *viele* Vorfahren hätten, könnte das Zurücksetzen der Vorfahren auf statisch mehr Code erfordern, als "position: relative" nur für die Elemente zu deklarieren, die es tatsächlich benötigen.
Übergänge auf alles könnten ein Performance-Albtraum sein. Diese Funktionen haben ihren Preis und wir sollten uns zurückhalten.
Ich würde auch davon abraten, border-box überall zu verwenden. Es bringt seine eigenen Probleme mit sich. Zum Beispiel verlierst du die 1:1-Beziehung zwischen angegebener Breite und gerenderter Breite. Mit border-box könntest du am Ende
width: 20px;undwidth:0;haben, um das gleiche Ergebnis zu erzielen. Außerdem gibt es Browser-Fehler im Zusammenhang damit, wie Gecko, der es bei (min|max)-(width|height)-Eigenschaften nicht respektiert.Den Rest mag ich, schöner Artikel Chris!
Ich wäre vorsichtig mit der Verwendung von "transition: all". Ich bin auf große Leistungsprobleme gestoßen, als ich das verwendet habe. Und in Verbindung mit dem "*"-Selektor könnte dies wirklich ein "Performance-Albtraum" sein, wie du sagtest. Und ich schlafe gerne gut :-)
Lea, könntest du erklären, wie du "die 1:1-Beziehungen zwischen angegebener Breite und gerenderter Breite verlierst"? Ich dachte, das sei es, was "border-box" beheben sollte. Setze die Breite auf 100px, und die gerenderte Breite (einschließlich Polsterung und Ränder) beträgt 100px.
Hat jemand auch Referenzen zu Browser-Fehlern im Zusammenhang mit "border-box", auf die er verweisen kann?
Nicht nur Leistungsprobleme bei Übergängen... auch CSS-Sprites für Schaltflächen mit Hover-Effekten würden gruselig aussehen...
Ich habe immer gehört, dass man den *-Selektor meiden soll, da er ein „teurer“ Selektor ist, was die Leistung angeht. Deshalb haben CSS-Resets diese großen, riesigen Zeichenketten von Selektoren vor dem padding:0px; margin:0px etc...
Hat sich dieses Denken geändert?
Ich wäre auch wirklich an dieser Antwort interessiert.. wenn es eine gibt haha.
Ich glaube nicht, dass der *-Selektor an sich einen spürbaren Leistungseinbruch verursacht. Es ist, wenn man ihn mit anderen Selektoren kombiniert (und was man damit anwendet), dass auf sehr großen, komplexen Seiten Probleme auftreten können.
So etwas würde zu einem großen Leistungsabfall führen
Aber die Verwendung an sich ist keine große Sache.
Theoretisch sollte die alleinige Verwendung von * zumindest die billigsten möglichen logischen Vergleiche ergeben, idealerweise gar keine – nur „Wende diese Regel an, egal was passiert“.
Natürlich hat das tatsächliche Anwenden der Stilregel auf jedes Element auch Rechenkosten, so dass, wenn man zu viele Elemente unnötigerweise anspricht, auch zusätzliche Arbeit geleistet wird und die Stile aufgebläht werden. Ich habe noch nie jemanden darüber sprechen hören, wie teuer es tatsächlich ist, einen Stil/Eigenschaft auf ein Element anzuwenden, im Vergleich zum Ausschließen über Selektoren, daher kann ich nicht sagen, ab welchem Punkt ein Ansatz gegenüber dem anderen gewinnt.
Mozilla scheint das 's' bei den Zeiteigenschaften zu erfordern. Es sollte also 0.2s sein, nicht 0.2.
Es scheint, dass -webkit das auch tut.
Ich habe * { display: inline-block; } in Projekten ausprobiert, in denen ich IE6/7 nicht unterstütze.
Es ist sehr cool! Aus diesen Gründen
* Alle Elemente respektieren Box-Modell-Eigenschaften und vertical-align.
* Keine Floats, außer wenn Leerraum im Code einen unerwünschten Abstand zwischen Elementen verursacht. Manchmal ist dieser Abstand in Ordnung und du bekommst ihn ohne zusätzliche Anstrengung.
Ich könnte mich irren, aber ich hatte den Eindruck, dass der Universal-Selektor aus Leistungssicht schlecht ist, da er buchstäblich hingeht und dieses CSS jedem möglichen Element zuweist, selbst denen, die du nicht verwendest?
Kurze Antwort: Nein.
Chris' verlinkter Artikel erklärt dies etwas genauer (Abschnitt „Performance“): http://paulirish.com/2012/box-sizing-border-box-ftw/
Hol dir deine eigenen Post-Ideen, du Dicker.
Ich spiele damit auf ein paar Websites, die http://adapt.960.gs/ verwenden
DAS ist interessantes Zeug!
Jemand MUSS mir ernsthafte Vor- und Nachteile nennen, bevor ich das auf all meinen Websites verwende lol
Ehrlich gesagt mag ich das normale Box-Modell wirklich. Es dauert eine Weile, sich daran zu gewöhnen, aber es ist wirklich schön, eine Breite festzulegen und der Inhalt hat tatsächlich diese Breite. Besonders wenn Bilder beteiligt sind.
Es gibt einige Dinge, die du mit dem content-box-Modell nicht tun kannst, es sei denn, du hast calc() – und selbst dann ist es weniger elegant.
Ich denke, deine Anwendungsfälle für content-box sind absolut gültig, aber möglicherweise in der Minderheit der regelmäßig auftretenden Szenarien.
Außerdem könntest du jederzeit
img { box-sizing: content-box; }verwenden.Einige davon sind ziemlich cool. Ich bin mir nicht sicher, was Übergänge angeht, da sie für den UA ressourcenintensiv sein können, selbst wenn sie nicht aktiviert sind.
Die relative Positionierung, abgesehen von IE 6, hat den Nachteil, dass sie die Kontrolle reduziert. Was ich meine, ist, dass es VIELE MALE nützlich ist, ein Objekt absolut relativ zu einem Vorfahren zu positionieren. Wenn wir also {position:relative} für jedes Element festlegen würden, müssten wir zurückgehen und position:static einzeln allen Elementen zuweisen, die wir "überspringen" möchten, so dass wir wieder dort wären, wo wir angefangen haben, was die Menge an Code betrifft, die nötig ist. :/
OH, und vergessen wir nicht, was *{} Regeln mit Formularelementen anrichten können, die nicht zurückgesetzt werden können.
Du denkst an
position: absolute;position: relative;positioniert ein Element relativ zu seiner natürlichen Koordinate ("natürlich" bedeutet, als ob überhaupt keine Positionierung verwendet würde).@BrianMB – der Punkt ist, dass absolute Positionen auf dem nächsten übergeordneten Element mit einer anderen Position als statisch basieren. Wenn alles relativ positioniert ist, wird die absolute Positionierung standardmäßig immer relativ zum direkten übergeordneten Element sein, und es wird schwieriger, wenn man sich auf ein weiter entferntes übergeordnetes Element beziehen muss.
Der Übergang hat mich an einen relativ alten Beitrag von WebDesignerDepot.com erinnert, in dem eine ähnliche Technik erwähnt wurde
http://www.webdesignerdepot.com/2010/01/css-transitions-101/
Interessant, dass Lea davon abrät, es für das Box-Modell zu verwenden, und Paul Irish es empfiehlt. Beides sind Experten, wem soll ich glauben?
Ich denke, es geht mehr darum, sich der Konsequenzen bewusst zu sein, wenn man entscheidet, ob man es verwendet oder nicht. Lea erwähnt ein paar Probleme bei der flächendeckenden Anwendung. Wenn du dich also nicht wohl dabei fühlst, mit diesen Problemen umzugehen, solltest du es wahrscheinlich nicht verwenden.
Gefällt mir der Vorschlag mit background-repeat. Würde die Übergänge bei allem aus Leistungsgründen vermeiden.
Ich habe schon ein bisschen Spaß daran, damit herumzuspielen, indem ich einfach Stylish verwende und einen globalen Übergang auf jede Webseite anwende – es macht irgendwie Spaß, ist aber manchmal auch ein bisschen verrückt...
Aber einfach auszuprobieren
Ich habe schon einmal
* { transition:0.1s; margin:0; padding:0; }in ein paar Projekten verwendet (zusammen mit Prefix Free zur Handhabung der Herstellerpräfixe) und es hat mir wirklich Zeit gespart.
Normalerweise bin ich gegen das Einrichten von Klassen für bestimmte Dinge wie Farbe usw., aber die Beispiele, die du für die Verwendung von Klassen wie dieser für die Ausrichtung et. al. gibst, sind faszinierend.
Obwohl es schön ist, das Markup nicht ändern zu müssen, ist diese Technik wirklich praktisch, wenn du Elemente hast, bei denen du sicher bist, dass sie sich lange Zeit nicht ändern werden.
Ich habe gerade die
*-Regel für das WP-Dashboard ausprobiert, wie du sagtest, und festgestellt, dass sich der Hintergrund perfekt ändert! Sehr schöner Effekt. Ich liebe auch andere Ideen, nicht wiederholte Hintergründe und mittlere Ausrichtung festzulegen. Diese Probleme sehe ich oft.Danke!
ist box-sizing: border-box; nicht das Standard-Box-Modell in IE6? sollte die erste Regel also sicher für die Verwendung über Browser hinweg sein?
nur im Quirks-Modus (selten)
Ich habe " * {position: relative}" schon einmal in einem Projekt verwendet, obwohl mir sehr gut gefallen hat, wie es in modernen Browsern passt, war IE8 wirklich schlecht.
Ich musste am Ende eine separate Datei erstellen, nur um IE8/7 zu beheben, und hatte viele (seltsame) Probleme. Sogar Firefox 5 hatte einige Probleme.
Einige davon wurden behoben, indem html {position: static} gesetzt wurde. Dies war nach ein paar Stunden, in denen ich zufälligen dummen Kram ausprobiert hatte, der vielleicht funktionieren könnte. Ich hatte ein paar Tabellen, und die Positionierung innerhalb der Zellen war furchtbar falsch, auch ein paar Zeilenhöhen-Seltsamkeiten...
Insgesamt hat es sich nicht gelohnt, und auch die Leistung war schlecht. Ich habe das Stylesheet neu geschrieben, indem ich die CSS-Leistungstipps verwendet habe, die ich in verschiedenen Beiträgen gefunden habe, und habe die Seiten in IE8 wirklich flüssiger/schneller gemacht.
Dieser Artikel ist sehr gut, ich habe sogar mit dem CSS-Leistungstool von Opera gespielt; für mich waren die Richtlinien sehr nützlich
https://developer.mozilla.org/en/Writing_Efficient_CSS
Ich habe festgestellt, dass die Verwendung von Übergängen auf dem Universal-Selektor zu seltsamen Problemen bei der Textgröße in Wekbit-basierten Browsern führen kann, wohingegen dies nicht passiert, wenn man die HTML-Elemente wie unten ausschreibt
Ich habe jedoch nicht bemerkt, dass die Verwendung von Übergängen auf dem Universal-Selektor ressourcenhungrig ist. Wie würdest du das bemerken? Alle Animationen scheinen so zu funktionieren, wie sie sollen
Eine relative Position für jedes Element festzulegen, ist einfach "falsch" :p, ich denke, das wird in älteren Browsern viele Probleme verursachen. Aber abgesehen davon gefällt mir die Idee der nicht wiederholenden Hintergründe wirklich.
Ich mache mir auch ein bisschen Sorgen um die Leistung, wenn du Übergänge für jedes Element festlegst, aber du könntest es immer so verwenden, dass es nicht mit jedem Element übereinstimmt.
* { background-repeat: no-repeat }funktioniert nicht für alle Hintergrundbilder, denn wenn du die Kurzschreibweise verwendest
.logo { background-image: url(logo.png) }werden die nicht angegebenen einzelnen Eigenschaften auf ihre Standardwerte gesetzt, d.h. 'background-repeat' wird auf "repeat" gesetzt. Aufgrund der höheren Spezifität des Selektors wird dieser Wert angewendet.
Um "no-repeat" für alle Hintergrundbilder festzulegen, müsstest du es auf '!important' setzen - mit all den Problemen, auf die du stoßen würdest.
In deinem Beispiel verwendest du nicht die Kurzschreibweise – die Dinge funktionieren wie beabsichtigt.
Aber wenn du die Kurzschreibweise verwenden würdest, ja, dann würden die Dinge schiefgehen.
Mir gefiel die no-repeat-Idee, bis ich merkte, dass sie keinen wirklichen Nutzen hatte. Wenn du Longhand-CSS schreibst, würdest du viel mehr gewinnen, wenn du zur Kurzform wechselst, als du jemals mit dieser Idee erreichen könntest. Es ist schade, dass die Browserhersteller no-repeat nicht ursprünglich als Standard festgelegt haben.
Meine Güte, bis jetzt hatte ich den Eindruck, dass die Verwendung von * in Bezug auf die Leistung ziemlich teuer ist. Anscheinend ist es das nicht. Gut zu wissen :-)
Ich habe festgestellt, dass es nützlich ist, wenn man das Hover-Attribut für mobile Geräte wie das iPad und iPhone ausschaltet, da man sonst doppelt auf die Schaltfläche tippen muss. Man könnte andere Methoden verwenden, aber diese ist schnell und einfach, und man muss sie nur in @media query platzieren.
*hover { display:none; }
Chrome 17 stürzt ab, wenn man versucht, * über den Inspektor hinzuzufügen? Das ist vorher nicht passiert
Das habe ich auch bemerkt.
Ich bin ziemlich überrascht von dem jüngsten Trend, den Universal-Selektor zu verwenden. Vor ein paar Jahren, als wir alle * { padding: 0; margin: 0 } verwendeten, um Stile zurückzusetzen, wurde schnell klar, dass dies keine bewährte Methode war, und wir wechselten zu selektiveren Reset-Stil-Lösungen, damit der Browser nicht überlastet wurde, indem er Regeln auf alles anwandte.
Warum ist diese Praxis jetzt in Ordnung? Warum nicht einen spezifischeren Reset-Stil-Snippet erstellen, um nur die Elemente anzusprechen, für die du box-sizing, transitions, relative usw. möchtest?
OK, ich hätte zuerst die Kommentare lesen sollen. Es scheint, dass einige andere meine Bedenken teilen, aber Paul Irish diskutiert das Problem der *-Leistung am Ende dieses Artikels: http://paulirish.com/2012/box-sizing-border-box-ftw/
Es ist genau wie bei allem, was mit IT/Programmierung zu tun hat. Die Geschwindigkeit von Computern, Servern und Internetverbindungen nimmt zu. Daher ist es unwahrscheinlich, dass die Verwendung von etwas wie * { } bei den meisten Websites Probleme verursacht, es sei denn, sie sind äußerst kompliziert.
Aber wenn die Geschwindigkeit und Leistung zunehmen, werden wir weniger sparsam und verwenden Code, der einst als schlampig galt.
Wie viele Leute versuchen wirklich, jedes Kilobyte von ihren Bildern abzurasieren oder ihr HTML und CSS zu schreiben und dann neu zu schreiben, um es so klein und effizient wie möglich zu machen? Natürlich solltest du danach streben, das Beste zu tun, aber es ist nicht das Ende der Welt (es sei denn, du lädst 4 MB Hintergrundbilder auf deine Seiten hoch)
Ich mag die Theorie hinter
* { box-sizing: border-box }, aber ich mag auch das Twitter Bootstrap Framework. Weiß jemand, ob sie zusammen funktionieren, oder bricht Twitters sorgfältige Abstandshaltung einfach zusammen, wenn man versucht, es auf Border-Sizing zu zwingen?Verwende definitiv nicht den Universal-Selektor und position relative. Ich habe dies seit ein paar Jahren ausprobiert und festgestellt, dass interne Tabellenelemente es nicht mögen und es zu Layoutproblemen führt. (Ich kann mich nicht erinnern, welcher Browser). Das übergeordnete Tabellenelement ist jedoch in Ordnung.
Um schließlich die Frage nach dem übergeordneten Problem zu beantworten – meiner Meinung nach sollten alle dynamischen Inhalte am Ende des DOM eingefügt werden, was bedeutet, dass es keine übergeordneten Probleme gibt. Die Position zum Anzeigen des position: absolute-Elements kann dann aus der Position des Ursprungselements innerhalb des DOM berechnet werden.
Schöner Beitrag. Prost.
Anstelle von
* { transition: all 0.2s ease; }würde ich es vorziehen, diese Regel nur für einige bestimmte Elemente festzulegen (und nicht für alle Elemente), aber trotzdem mit einer gewissen Flexibilität. z.B.Das ist eine großartige Möglichkeit, es zu kontrollieren. Einige Hintergrundbilder könnten einen nicht so schönen Effekt erzeugen, und es ist nicht in Ordnung, die Kontrolle zu verlieren.
Wenn wir alle überall Übergänge verwenden würden, würden alle verrückt werden.
Stell dir vor, du benutzt Gmail und wenn du über etwas fährst oder klickst, erscheint immer eine nicht funktionale (denn das ist es) Animation.. Das wäre schrecklich. Ich denke, es ist nur ein vorübergehender Hype. Das Gleiche gilt für border-radius. Vor 1 Jahr habe ich viele Websites gesehen, die etwa 20px verwendet haben, und heutzutage sehe ich, dass die Leute wieder zu 10px, sogar 4px zurückkehren, nur um ihm ein bisschen Stil zu verleihen, aber nicht mehr.
Schau dir Autos an, alle 10 Jahre wechseln sie auch von den Gesamtstilen. Es ist eine Art Modeerscheinung.
Oder werde ich zu alt? :)
Eine leichte, kurze Animation von 0,2 oder 0,3 Sekunden verleiht einer Website einen schönen Glanz. Du bemerkst es eigentlich nur, wenn du über die Links fährst.
Ich benutze das seit Jahrtausenden
Es macht Spaß, es zu benutzen
animiert alles :)
Dies gibt allem einen Umriss, ohne das Layout wie beim Hinzufügen eines Rahmens zu stören. Es ist gut, um das Gesamtlayout zu überprüfen.
Ich persönlich verwende die CSS-Eigenschaft 'outline', da sie viel schneller einzugeben ist
Fantastischer Artikel. Ich war immer sehr zögerlich, neue Dinge in meine Universal-Selektoren aufzunehmen, aber ich denke, ich werde anfangen, mit einigen davon herumzuspielen!
Ich habe versucht,
*{position: relative}auf meiner Website einzufügen, und es hat die WordPress-Suchleiste beschädigt. Ich konnte sie nicht markieren und meine Absende-Schaltfläche wechselte nicht in ihren Hover-Zustand. Ist das normal?Welche Positionierung wird für die Suchleiste und ihre Kindelemente verwendet? Befindet sich dein Universal-Selektor vor oder nach den Suchstilen? Wenn die Positionierung der Suchleiste auf „absolute“ eingestellt ist und sie VOR dem Universal-Selektor steht, überschreibt der Universal-Selektor möglicherweise die Positionierung der Suchleiste.
Ich hatte das gleiche Problem mit position:relative. Habe eine Stunde meines Lebens damit verbracht, herauszufinden, warum alle meine img-Links nicht mehr ausgewählt werden konnten.
Ich verwende gerne die relative Positionierung für den Universal-Selektor. Außerdem deklariere ich jetzt global float- und overflow-Werte für bestimmte Elemente, direkt unter meinem Reset. Ich überschreibe sie dann bei Bedarf später im Stylesheet für spezifische Anforderungen (z.B. "div {overflow:hidden;}").
Ich habe drei davon (box-sizing: border-box;, background-repeat: no-repeat; und position: relative;) in meinem WordPress Framework verwendet... Ich hatte ein paar kleinere Anfangsprobleme, und ich denke, ich muss neu lernen, wie ich einige Dinge mache, aber größtenteils scheinen sie gut zu funktionieren.
Als ich versucht habe, den *-Selektor auf deiner Seite zu verwenden, hat er Chrome zum Absturz gebracht! Lustig, oder?
Das passiert mir auch... jedes Mal.
Sehr interessanter Artikel. Ich würde Paul Irishs Tipp und deinen auch gerne verwenden, Chris, aber ich bin immer im Zweifel, ob ich den *-Selektor verwenden soll.
Ich stimme voll und ganz zu!
Was für ein absolut willkürlicher Rat. Diese Vorschläge ermutigen Entwickler, Pauschalregeln anzuwenden, die als Anpassungen gedacht sind. Selbst box-sizing sollte niemals universell angewendet werden. Du musst eine elegante Degradation für Clients anbieten, die box-sizing nicht verstehen.
Darüber hinaus wird die Wartung behindert, da wir diese Pauschalregeln unterhalb der Faltung vergessen.
Ich bin sehr unbeeindruckt von Entwicklern, die ihre Anhänger ermutigen, faul zu sein, was genau das ist, was es ist.
*{
-webkit-font-smoothing: antialiased;
}
Gute Idee!
Ich habe heute gerade herausgefunden, dass der Universal-Selektor nicht auf :before- und :after-Pseudo-Elemente angewendet wird. Ich hatte eine CSS-Form gerendert und dachte, ich könnte einfach alle scharfen Ecken abrunden, nachdem alles an Ort und Stelle war. Stimmt nicht. Das funktioniert, aber...
*, *:before, *:after { border-radius: 2px; }
Da diese Elemente offensichtlich nicht im Bereich des Universellen liegen, existieren sie in ihrem eigenen Pseudo-Universum?
BING – Glühbirne! Wenn das, was ich gerade gesagt habe, wahr ist
zumindest beim Erstellen komplexer Formen. Das sollte mir viel Zeit sparen und die Dinge aufräumen. Danke... jemand! Paul vielleicht?
Du kannst einfach
Außerdem funktioniert *::selection{} hervorragend, um deiner gesamten Website eine einzigartige Hervorhebung zu verleihen.
* auf vertical-align? Funktioniert das nicht nur für TD und display table-cell?
Zum Thema box-sizing wollte ich schon lange fragen: Chris, was hältst du davon, die IE7-Unterstützung fallen zu lassen, um in den moderneren Browsern ein solideres Erlebnis zu bieten?
Ich habe eine einfache Chrome-Erweiterung geschrieben, die die Übergangsregel auf alle Elemente anwendet. Schau sie dir im Chrome Web Store an
Wirklich hilfreicher Beitrag, ich brauchte den Code für -webkit und dieser war sehr nützlich, danke, dass du dir die Zeit genommen hast, dies zu teilen, BTW!!! ICH HASSE DICH, Deine Kommentarformulare sehen FANTASTISCH aus!!!
Steve Loneton
Web Design Bournemouth und SEO
Mach weiter so ;)
Es macht so viel Spaß, Übergänge mit dem globalen Selektor zu verwenden... jetzt werde ich einige meiner älteren Projekte aktualisieren :D
Ich habe den *-Selektor auch für die box-sizing-Eigenschaft verwendet, scheint gut zu funktionieren, wo es unterstützt wird.
Aber als ich anfing, andere dynamische Eigenschaften wie background-sizing und transitions hinzuzufügen, brach die Hölle los ;-)
Denke immer daran, dass du zwar den Vorteil hast, auf High-Spec-Geräten zu arbeiten, es aber Millionen von Menschen auf der ganzen Welt gibt, die keine Dual-/Quad-Core-Prozessoren, superschnelle Grafikprozessoren oder gar aktuelle Browser haben.
Mein Rat: Sei realistisch, wie viele Eigenschaften du dem *-Selektor zuweist. Bei größeren Projekten, bei denen sich das CSS möglicherweise von Seite zu Seite unterscheidet, sei selektiver und verwende Selektorgruppierungen anstelle des Wildcards.
Ich würde auch vorschlagen, noch zurückhaltender zu sein, wenn du es mit Media Queries für kleinere Geräte verwendest. Im Großen und Ganzen gehen viele Effekte, die auf einem Desktop großartig aussehen, auf kleineren Geräten aufgrund von Bildschirmgrößenbeschränkungen einfach verloren.
Kurze Frage, aber sieht noch jemand die Antworten auf diesen Thread in einer zufälligen Reihenfolge angezeigt?
Das dachte ich zuerst nicht, aber ich sehe, dass der unter dir von snillor 5 Tage vor deinem liegt. . . Komisch.
Ich habe auch vor kurzem angefangen, Übergänge zu verwenden. Sehr schöne und einfache Möglichkeit, einen Hauch von Flair hinzuzufügen.
Wenn ich alte Versionen von IE nicht unterstütze, verwende ich * um die gesamte Seite auszublenden, dann zeige ich eine Nachricht an, die sie auffordert, ein Upgrade durchzuführen.
Ich habe position: relative; auf meinem Universal-Selektor verwendet, als Folge dieses Beitrags – aber heute früher habe ich es entfernt – es verursachte mehr Probleme, als es wert war.
box-sizing: border-box; funktioniert gut (abgesehen von einem kleinen Konflikt mit Colorbox, aber ein paar kleine Bearbeitungen des Colorbox-CSS haben das behoben, und background-repeat: no-repeat; scheint auch gut zu funktionieren.
Wie kann ich eine neue CSS-Regel über Chrome hinzufügen? Jedes Mal, wenn ich auf das "+"-Zeichen klicke und eine Regel eingebe (d.h. "*"), nur um zu beginnen, stürzt das Browserfenster ab: es wird blau und meldet, dass ein Fehler aufgetreten ist... ;( Ich kann von hier aus nichts experimentieren...!
Danke
Leute, wie kann ich eine neue CSS-Regel mit dem Chrome-Inspektor einfügen? Jedes Mal, wenn ich versuche, es hinzuzufügen und zu benennen (Schaltfläche "+"), stürzt Chrome ab: der Bildschirm wird blau, und es sagt, dass ein Fehler aufgetreten ist, als ob es versuchen würde, die Seite mit meiner neuen Regel zu aktualisieren... ;(
danke
Ich werde diesen Trick von nun an in all meinem CSS verwenden, ich habe keine Verzögerung bemerkt; ich liebe es, dass die Dinge nicht sofort kaputt gehen, wenn ich ein paar Pixel ändere.
Ich musste überlegen, welche anderen Elemente fast so breit sind wie * und ich dachte an a und dive. Ich habe die Übergangsidee aufgegriffen und auf das a-Element angewendet, um das Gefühl von Berührung im Browser zu vermitteln, und ich bin sehr zufrieden damit.
*{ cursor: default; }
input, textarea{ cursor: auto; }
a{ cursor: pointer; } /* etc */
Interessanter Artikel, ich werde auf jeden Fall einige davon selbst ausprobieren. Bitte hilf mir und besuche meine Website, ich habe selbst interessante Artikel.
*
{
-webkit-transform: rotate(-11deg);
-moz-transform: rotate(-11deg);
}
Kann eine Website in abstrakte Kunst verwandeln.
Außerdem macht das Hinzufügen von hover es interaktiv...
*:hover
{
-webkit-transform: rotate(-11deg);
-moz-transform: rotate(-11deg);
}
Leicht modifizierter Smapties-Code. Dieser gefällt mir
Profi-Tipp: Erstelle ein Userscript, das auf alle Websites zutrifft, lass es dieses CSS hinzufügen und installiere es auf dem Computer von jemandem ^^,
Ich liebe den Übergangscode, eine schöne einfache Möglichkeit, der Seite etwas Animation hinzuzufügen. Wir kämpfen immer mit Clients, die alte Browser verwenden, und es ist wirklich cool, all diese zusätzlichen Bonusfunktionen für Benutzer auf den neuesten Browsern hinzuzufügen!
IE6... Wirklich?
Tolle Infos. Besonders der Teil über universelle Übergänge. So ein subtiler Effekt und doch so stilvoll (fühlst du ein „aber“ kommen?).
Aber.
Anscheinend scheinen css3 transitions alle jQuery-Animationsfunktionen zu stören – z.B. bei einem slideDown-Menü usw. -
Hat jemand anderes dieses Problem? Irgendwelche Lösungen?
Ich habe daran gedacht, *:hover (z.B. für einige Anker) stattdessen zu verwenden, aber es ist immer noch eine Frage der Neugier, herauszufinden, warum es so kaputt geht.
Browserstack bekommt heute einiges zu tun. Ich liebe die Kommentare. Ich verwende inline-block bereits für zu viele Dinge, also habe ich jetzt ein paar Experimente vor mir.
Nach einigem Herumspielen scheint das völlig vernünftig zu sein und wird mir in zukünftigen Projekten tatsächlich Zeit sparen.
nav * { -webkit-transition: all 0.2s ease; -moz-transition: all 0.2s ease; -ms-transition: all 0.2s ease; -o-transition: all 0.2s ease; }Nav ist, wenn ich dieses Zeug sowieso bemerke.
Für die Dauer eines Ladevorgangs
* { cursor:wait; }
*{display:none;}
Tolle Tipps! Ich wäre jedoch vorsichtig, "vertical-align: middle" global festzulegen. Du kannst versehentlich die Höhe von Elementen ändern und Ausrichtungsprobleme mit verschachtelten Inline-Elementen verursachen.
Hier ist eine Demo http://jsbin.com/uReMoHi/latest
Was ist mit der Verwendung von break-word auf jedem Element?
{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
Ich arbeite an einem Liferay-Projekt und verwende die obige Syntax in CSS. Wie kann ich dies für einige Klassen ausschließen?