DiebackgroundEigenschaft ist ein wichtiger Faktor dafür, was heute die großartigen CSS-Designs ermöglicht. Es gibt nur wenige Eigenschaften, die sie ausmachenbackground-color, background-image, background-position, background-repeat, undbackground-attachment. Sehr einfach, sehr mächtig. Ich habe ein paar andere Ideen, die mir sinnvoll erscheinenbackground-opacityundbackground-anchor.
Was wir jetzt haben
- background-color: Eine Volltonfarbe als Hintergrund mit Schlüsselwörtern, Hex-Codes, RGB oder RGBA festlegen.
- background-image: Ein einzelnes Bild für den Hintergrund angeben.
- background-position: Verschiebt die Position des Hintergrunds, sodass er bündig oben oder unten, links oder rechts oder in der Mitte von beiden liegt. Oder ein spezifischer Offset von der oberen linken Ecke.
- background-repeat: Wenn ein Bild als Hintergrund festgelegt ist und das Bild kleiner ist als der sichtbare Bereich des Elements, legt diese Eigenschaft fest, ob sich dieses Bild horizontal (repeat-x), vertikal (repeat-y), beides (repeat) oder gar nicht (no-repeat) wiederholen soll.
- background-attachment: Dies legt fest, ob der Hintergrund des Elements normal (scroll) an das Element angehängt wird oder an die Seite selbst (fixed).
Was wir in CSS3 bekommen
CSS3 bringt mehrere Hintergründe. Mit anderen Worten, die Angabe verschiedener Bilder, die auf einem einzigen Element verwendet und an verschiedenen Stellen positioniert werden. Einfache und leistungsstarke Dinge. Stellen Sie sich einZitatboxvor, bei der Sie ein Bild eines öffnenden Zitats oben links und ein Bild eines schließenden Zitats unten rechts verwenden möchten. Normalerweise müssten Sie ein zusätzlichesdivinnendrin verwenden und jedem einen Hintergrund zuweisen. In CSS3 nicht mehr nötig
background:
url(images/openquote.png) top left no-repeat,
url(images/closequote.png) bottom right no-repeat;
Mehrere Hintergründe funktionieren in den neuesten WebKit-Browsern (Chrome & Safari), Firefox 3.6+ und Opera 10.5+.
CSS3 bringt auchbackground-originundbackground-clip. Beide dieser Eigenschaften befassen sich damit, wie das Box-Modell im Verhältnis zum Hintergrund verwendet wird. Typischerweise bedeckt ein Hintergrundbild den Padding, aber nicht den Border. Wenn Sie also einen 10px unteren Rand und 100px unteren Padding haben, befindet sich der Hintergrund in den 100px Padding, aber nicht in den 10px Border.background-originLegt fest, wo genau sich die „obere linke“ Ecke befinden soll (Oberseite des Inhalts, Oberseite des Rahmens oder Oberseite des Paddings).background-clipLegt fest, wo der Hintergrund stoppen soll (ebenfalls Rahmen, Padding oder Inhalt). Die Werte für beide sindpadding-box, border-box, odercontent-box.
Was ich cool fände
background-opacity: 0,0 – 1,0
Diese Einstellung würde die Transparenz des Hintergrunds ändern (0 bedeutet vollständig transparent, 1 bedeutet vollständig opak). Dies würde einen Volltonhintergrund, ein Bild oder eine Kombination aus beidem beeinflussen. Wir können bereits Hintergrundfarben in RGBA festlegen und wir können bereits alpha-transparente Hintergrundbilder verwenden, daher scheint dies auf den ersten Blick keine große Ergänzung zu sein. Aber die Möglichkeit, die Transparenz eines Hintergrundbildes auf CSS-Ebene festzulegen, würde es uns ermöglichen, diese Ebene über JavaScript oder mit neuen CSS-Übergängen zu animieren. Zum Beispiel könnten Sie ein rotes Ausrufezeichen-Grafik auf Formular-Labels ein- und ausblenden, indem Sie einfach einen background-opacity-Level anpassen, anstatt ein zusätzliches Element dafür zu benötigen. Denken Sie auch an das Vorladen. Ein Hintergrundgrafik aufbackground-opacity: 0;setzen würde das Bild beim Laden der Seite immer noch laden und wäre bereit, sofort angezeigt zu werden, wenn es benötigt wird.
background-anchor: anc-topleft | anc-topright | anc-bottomleft | anc-bottomright
Dies wäre eine Eigenschaft, die mit derbackground-positionEigenschaft gepaart wird. Wennbackground-anchorauf oben rechts gesetzt wäre undbackground-positionauf 10px 10px, würde diebackground-image10px von oben und 10px von rechts von der oberen rechten Ecke des Elements positioniert. Das ist derzeit nicht möglich. Sie können ein Hintergrundbild bündig oben/unten links/rechts oder in der Mitte von beiden platzieren, aber nicht in einem bestimmten Abstand von irgendwo außer der oberen linken Ecke.
Wennbackground-positionSchlüsselwörter verwenden würde,background-anchorwäre ignoriert.
Beachten Sie die seltsamen Namen für die Werte, wie z.B. „anc-bottomleft“. Mir ist bewusst, dass das seltsam ist und wahrscheinlich nicht die Art und Weise ist, wie es gemacht werden würde. Ich habe keine Standardoption wie „oben links“ angegeben, da dies mit denselben Schlüsselwörtern kollidieren würde, die mitbackground-positionin bei der Verwendung der Kurzschreibweise für Hintergrund verwendet werden.
Angeheftete Hintergrundbilder würden es erleichtern, zum Beispiel ein Hintergrundbild von unten nach oben eines Elements gleiten zu lassen, ohne zuerst Höhenberechnungen durchführen zu müssen.
Alles zusammen
background:
white url(images/openquote.png) anc-topleft 10px 10px no-repeat 0.5,
white url(images/closequote.png) anc-bottomright 10px 10px no-repeat 0.5;
Der obige Code ist rein hypothetisch und wird NICHT funktionieren.
In CSS3 fehlen background-size, background-attachment, background-clip, background-origin,
die alle zusammen mit mehreren Hintergrundbildern in Opera 10.50 (pre) alpha funktionieren.
Tatsächlich ist
background-attachmentCSS1 und Chris hat es im Abschnitt „Was wir jetzt haben“ korrekt erwähnt.Hallo Chris,
Ich mag die Idee von background-opacity wirklich! Das wäre eine sehr praktische Funktion. Vielleicht solltest du es dem W3C vorschlagen :)
Übrigens unterstützt Firefox 3.6 RC1 jetzt auch mehrere Hintergründe.
Grüße
Christoph
Derzeit gibt es fünf wichtige Browser-Rendering-Engines
Trident für Internet Explorer 8, Gecko von der Mozilla Foundation, KHTML entwickelt vom KDE-Projekt, WebKit ein Open-Source-Fork von KHTML von Apple Inc und Presto entwickelt von Opera Software.
Sicherlich, da diese Engines reifen, sollte meiner bescheidenen Meinung nach mehr Wert auf Konfiguration und Modularität gelegt werden.
Zum Beispiel ein XUL-Modul, das in Echtzeit interpretiert wird und vom Benutzer definierte Layout-Eigenschaften wie background-opacity und background-anchor deklariert.
Ich bin mir wegen der Sicherheitsauswirkungen angesichts der aktuellen Ereignisse nicht sicher, aber etwas, das Designern und Entwicklern gleichermaßen weniger Einschränkungen auferlegt.
Ja, ich liebe die Idee von background-opacity. Tatsächlich ist es eine so tolle Idee, dass ich überrascht bin, dass sie noch nicht umgesetzt ist.
Die Idee, mit jQuery ein- und auszublenden, würde Websites mit minimalem Aufwand viel cooler aussehen lassen.
Ich brauchte auch diese Auffrischung bei Hintergründen, was mich dazu brachte, über background-attachment und das Tutorial nachzudenken, das du nicht über vollflächige Hintergründe gemacht hast, die sich ändern, wenn sich der Browser ändert.
Fade-in-Animation klingt cool, wie eine elegantere Art, eine Seite zu laden. Der einzige Weg, dies jetzt zu tun, ist die Verwendung eines interlaced PNG-Bildes, aber PNG ist schwerer als JPG, also nicht wirklich die beste Lösung
Ich stimme definitiv für die Anker für background-position, warum sollten diese für den Hintergrund nicht existieren, während sie für normale Elemente existieren?
Opera 10.50 unterstützt auch mehrere Hintergründe.
Tatsächlich. Wenn Sie sich die neuen Hintergrund-Eigenschaften für CSS3 ansehen, werden Sie feststellen, dass background-position für 4 Variablen gedacht ist. In Ihrem Fall mit dem Anker würden Sie dies stattdessen tun: background-position: top 10px right 10px. Dies würde es nach oben verschieben, dann um 10 Pixel versetzt, dann nach rechts verschieben und um 10 Pixel versetzt.
Ich habe das vor einiger Zeit recherchiert und darüber auf meinem Blog geschrieben.
Die Idee der Hintergrund-Opazität gefällt mir auch sehr gut. Das wäre süß.
Das ist erstaunlich! Ich kann es kaum erwarten, bis CSS3 endlich vollständig eintrifft.
Ich habe den Artikel sehr genossen und background-opacity wäre definitiv eine großartige Ergänzung zu CSS3.
Hintergrund-Anker wären ziemlich großartig, ich habe es satt, die linke Position eines Hintergrundbildes auf 99% zu setzen.
Eine etwas feinere Positionierung dafür wäre schön.
background-opacity klingt nach einer großartigen Idee! Ich arbeite an einem Projekt und genau das bräuchte ich.
Demo?
Nur ein Vorschlag… Sie könnten vielleicht einen kleinen Haftungsausschluss neben dem Beispielcode anbringen, der besagt, dass dieser Code rein hypothetisch ist und in keinem Browser funktioniert… Es gibt viele Leute, die den Artikel wahrscheinlich nicht lesen und versuchen werden, den Code zu implementieren… und dann werden sie Ihnen wahrscheinlich schreiben, warum er nicht funktioniert.
haha, so wahr..
Hallo Chris… Ich mag deinen Vorschlag mit background-anchor. Einen Moment lang las ich: „Moment mal, background-position macht das doch schon.“ Dann erkannte ich, dass der Anker die Basis zum Starten wäre. Was sehr nützlich wäre.
Wie oft muss man beim Arbeiten mit Sprites nach Photoshop gehen, ein Lineal weit links vom Anfang oder Bild zeichnen, das auf links zeigt, um die Einheitenposition des Lineals zu erhalten. Wie schön wäre es zu sagen.
Positioniere die gesamte Navigation im linken 200px deines 400px breiten Sprites und positioniere dann alle Strukturelemente auf der rechten Seite.
Dann kannst du für alle Navigationen einen Anker oder eine obere linke Ecke und für alle Strukturelemente eine obere rechte Ecke festlegen.
Gute Arbeit wie immer, du hast ein gutes Auge für den Markt.
Hintergrund-Opazität sollte wirklich hinzugefügt werden… Ich hasse es, die Opazität eines Elements festzulegen, nur um mich daran zu erinnern, dass dies dann alle Kinderelemente betrifft. RGBA hilft und das Hinzufügen von CSS3-Animationen für Webkit/Firefox bedeutet, dass Sie es animieren können.
Sehr gut, ich stimme der Idee mit bg-opacity zu. Danke Chris.
Zustimmung… Hintergrund-Opazität wäre sehr nützlich und würde uns Designern viele neue kreative Möglichkeiten eröffnen, ohne so viel Code schreiben zu müssen.
Sie sollten es dem W3C empfehlen, Sie haben auf jeden Fall meine Stimme.
Beim Anker-Konzept bin ich mir nicht so sicher. Ich sehe definitiv Ihren Punkt, aber wie in dem von Pål Strøm eingereichten Kommentar, würden Sie sicherlich nur oben, unten, links, rechts als Ihre Anker betrachten und Ihre background-position wie folgt eingeben: top 10px right 10px. Das ist viel einfacher und besser, als eine völlig neue Eigenschaft zu haben.
Das widerspricht dem Zweck der Anker-Ergänzung. Der Anker würde hinzugefügt, damit Sie einfach in leichteren Schritten arbeiten können.
Nehmen wir an, Sie haben Strukturelemente rechts von einem Sprite mit 400px Höhe und 400px Breite. Ich weiß nicht, Icons oder größere Schatten könnten hier platziert werden.
Wenn Sie oben links als Anker definieren, arbeiten Sie immer von 0 aus und positionieren es dann. Das ist in Ordnung, es wird problematisch, wenn Sie unbekannte Breiten und Höhen haben. Sie müssen immer zum Lineal-Werkzeug zurückkehren.
Nehmen wir jedoch an, Sie haben Navigation im rechten Bereich. In diesem Fall wissen Sie, dass Ihre Navigationsleisten jeweils 200 Breite und 50 Höhe haben.
Hier können Sie oben rechts als Anker definieren und einfach die Hintergrundpositionen wie folgt angeben.
Link: 0 0
Hover: 0 50
Aktiv: 0 100
und so weiter. Nehmen wir dann eine Unternavigation, die 30 hoch und wieder 200 breit ist.
Sie haben hier bereits 150 der Höhe genutzt. Sagen wir, das Sprite ist ich weiß nicht 400 maximal. Dann ist es vielleicht besser, die Untermenüs am unteren Rand auszurichten. Was bei der Erstellung des Sprites in P Shop oder Ähnlichem buchstäblich eine Sekunde dauert.
Hintergrund-Anker: Unten rechts
Untermenü-Links
Link: 0 0;
Besucht: 0 30;
Aktiv: 0 60;
Das Beispiel ist nicht ideal, besonders wenn Sie wissen, dass die Strukturseite maximal 200 breit ist, Sie könnten einfach die bg-position verwenden und 200px als Ausgangspunkt verwenden. Also wären alle Nav-Elemente etwas wie
-200px 0;
Keine Negativen mit Anker rechts?
Ich halte background-opacity für eine großartige Idee.
Weitere Dinge, die ich mir wünschen würde, wären, den Anfang und das „Ende“ in der Hintergrundposition anzugeben, um CSS-Sprites zu 100% für Hintergründe zu verwenden.
Die Idee mit „anc-…“ gefällt mir reeeeeeeeeeeeeeeeeeeeeehr gut. Das habe ich schon lange vermisst. Eine weitere Sache, die wirklich großartig wäre, ist, wenn es möglich wäre, einen sich wiederholenden Hintergrund zu positionieren und außerdem vier Werte (oben rechts unten links) zu geben, zum Beispiel:
background: url(someImage.jpg) 10px 0 10px 5px repeat-y;Auf diese Weise wäre es möglich, einem Hintergrundbild einen „Rand“ an allen vier Seiten zu geben, anstatt nur an zweien (und es auch für sich wiederholende Hintergründe zu ermöglichen).Meine Hintergrundwünsche gehen nicht viel weiter als der Traum von einem Tag, an dem CSS3 (fast) universell unterstützt wird :). Mehrere Hintergründe auf einem Element würden mein XHTML deutlich sauberer machen.
Das Entwickler-Relations-Team von Opera hat auch ein paar coole CSS3-Demos am Laufen :)
http://dev.opera.com/articles/view/css3-border-background-boxshadow/
Das scheint eine ziemlich rationale Idee zu sein, Chris.
Darf ich darauf hinweisen, dass Sie bei CSS3 entweder die schließenden Anführungszeichen zuerst und die ersten zuletzt setzen sollten, damit Sie immer öffnende Anführungszeichen haben?
Ich gebe meine Stimme für background-opacity ab. Wäre so viel sauberer als die GIF-Option oder der verzweifelte Versuch, bestimmte Elemente in festen Positionen auszurichten, um den gewünschten transparenten Effekt zu erzielen.
Ich könnte mir so viele coole Dinge dafür vorstellen!
Wie wäre es mit dynamischen Hintergründen?
Es wäre schön, eine skalierbare Hintergrundbild-Eigenschaft in CSS3 zu haben. Ob das eine gute Idee wäre, hängt davon ab, wie man die Rolle von JavaScript sieht.
Background-opacity steht nicht ganz oben auf meiner Wunschliste, aber die Anker-Idee ist großartig – ich würde gerne so etwas eingeführt sehen!
Die aktuellen CSS3-Funktionen sind für mich schon ziemlich überwältigend :) aber ich denke, die background-anchor-Eigenschaft kann sehr nützlich sein
Es wäre großartig, wenn wir Hintergrundbilder auch skalieren und drehen könnten
Was ist mit irgendeiner Art von Bewegung oder Parallaxe, die eingebaut ist???
background-opacity ist wirklich cool..