Haben Sie schon einmal die Miniaturansichten gesehen, die, wenn Sie sie darüber schweben, ein Symbol in der Mitte zeigen, das darauf hinweist, was passieren wird? Überhaupt gewundert, wie der Effekt erzielt wird? Haben Sie es schon einmal versucht, aber es nicht geschafft, die Symbole in den Mittelpunkt zu bringen, insbesondere wenn Ihre Miniaturansichten keine festen Abmessungen hatten? Dann ist dieser Quick Tip für Sie…
Ich spreche von Miniaturansichten, auf die Sie klicken können, um eine Lightbox auszulösen, oder eine Miniaturansicht, die mit einem Portfolio-Teil verknüpft ist. In jedem Fall ist es eine großartige Ergänzung zur Benutzerfreundlichkeit Ihrer Website, wenn Sie vorschlagen können, was passieren soll, wenn jemand über ein Miniaturbild schwebt.
Dieser Schnelltipp wendet sich an alle, die sich mit CSS auskennen, mehr oder weniger wissen, um welche Positionierung es sich handelt, und nach der perfekten Ausrede suchen, um es einzusetzen…
Lassen Sie uns schnell ein paar Dokumente zusammen werfen, um zu zeigen, worüber ich spreche. Erstens unser HTML:
Hover Demo Thingy
Dann beginnen wir unsere styles.css-Datei mit einigen Reset-Regeln. Vielleicht haben Sie Ihre eigenen bevorzugten Rücksetzmethoden, aber vorerst habe ich Eric Meyer verwendet, um unsere CSS zu starten:
/ * http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 Lizenz: none (public domain) * / html, body, div, span, applet, objekt, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, akronym, adresse, groß, zitieren, code, del, dfn, em, img, ins, kbd, q, s, samp, klein, streik, stark, sub, sup, tt, var, b, u, ich, zentrum, dl, dt, dd, ol, ul, li, fieldset, formular, beschriftung, legende, tabelle, titel, tfoot, tread, th, td, artikel, beiseite, leinwand, details, einbetten, figur, figcaption, footer, header, hGruppe, Menü, Navi, Ausgabe, Rubin, Abschnitt, Zusammenfassung, Zeit, Marke, Audio, Video Marge: 0; Polsterung: 0; Grenze: 0; Schriftgröße: 100%; font: erben; vertikal ausrichten: Grundlinie; / * HTML5-Anzeige-Rollen-Reset für ältere Browser * / Artikel, beiseite, Details, Abbildung, Fußzeile, Kopfzeile, hgroup, Menü, nav, Abschnitt display: block; body Zeilenhöhe: 1; ol, ul list-style: none; blockquote, q Anführungszeichen: keine; blockquote: before, blockquote: after, q: before, q: after content: "; content: none; table border-collapse: collapse; border-spacing: 0;
Um unserer Seite ein wenig Layoutstruktur zu geben, sind hier drei Spalten in einem Container:
Und jetzt müssen wir natürlich einige Stile hinzufügen, damit sie sich tatsächlich als Spalten in einem flexiblen Wrapper verhalten:
/ * unsere Demo-Styles * / html, body Hintergrund: # 29282e; .wrapper width: 90%; Max-Breite: 960px; Marge: 30px auto; .col Breite: 27%; Polsterung: 0 3%; Schwimmer: links;
So haben wir sie; drei Spalten mit jeweils 27% Breite, links und rechts 3% aufgefüllt, und alle schweben ordentlich in einer Reihe. Unser Wrapper ist bei 90% der Browserfensterbreite (bis maximal 960 Pixel) sehr flexibel. Wir haben auch unseren Körper und HTML eine schöne, dunkle Hintergrundfarbe gegeben.
Es ist Zeit, dem Mix einige Bilder hinzuzufügen. Ich habe einige Wallpaper aus Atelier Olschinskys eher inspirierender Städtekollektion verwendet (kuvva.com für Ihren Desktop ...)
Jedes Bild wird in einem HTML5-Element enthalten sein, aber direkt von einem Anker umschlossen, um es mit etwas zu verknüpfen (entweder eine vergrößerte Lightbox oder eine externe Website usw.):
Wir platzieren drei unserer Figuren, eine für jedes Miniaturbild, in einer eigenen Spalte.
Diese Bilder sind zu groß. Um zu verhindern, dass sie aus ihren Spalten platzen, geben Sie ihnen eine maximale Breite, indem Sie eine klassische Regel für flüssige Bilder anwenden:
Abbildung img max-width: 100%;
Ein guter Anfang. Wir haben unser flüssiges Layout mit drei Spalten, von denen jede ein Bild enthält, das irgendwo verlinkt wird.
Machen wir den Benutzern klar, dass das Klicken auf die Bilder etwas bewirkt. Wir fügen einen Hover-Status hinzu, der die Deckkraft der Miniaturansicht verringert:
Abbildung a: hover img Opazität: 0,4; Filter: Alpha (Deckkraft = 40); / * IE6-IE8 * /
Nun zu dem alles wichtigen Symbol. Wir möchten, dass ein Symbol, das sich in der Mitte der Miniaturansicht befindet, sichtbar wird, wenn das Bild über das Bild gezogen wird. Es kann ein beliebiges Symbol sein, aber es sollte dem Benutzer anzeigen, was passieren wird. In dieser Demonstration werde ich der Einfachheit halber nur eine verwenden + signieren, um eine größere Version vorzuschlagen.
Wir fügen es mit dem Pseudo-Element in die Mischung ein :Vor
:
a.enlarge: before content: "+"; Bildschirmsperre; Schriftgröße: 40px; Zeilenhöhe: 1em; Höhe: 1em; Breite: 1em; Text ausrichten: Mitte; Farbe: #fff; Schriftdicke: fett; Position: absolut; z-Index: 100;
Wir haben unsere platziert + als generiertes Element: vor dem Element ein Teil des Ankers, der das Bild umgibt. Wir verwenden die Klasse "Vergrößern", um die Anker zu identifizieren, die die benötigen +. Wenn wir ein anderes Symbol benötigen, können wir einen anderen Klassennamen verwenden.
Zunächst müssen wir den Inhalt diktieren + Zeichen) und geben an, dass es sich um ein Block-Level-Element handelt.
Wichtig! Die folgenden Regeln bestimmen dann die Abmessungen. Wir haben gesagt, dass die Schriftgröße 40px ist. Dann haben wir gesagt, dass die Zeilenhöhe, die Höhe und die Breite alle 1em (40px) entsprechen. Dies hat ein Quadrat von 40x40px erzeugt. Indem wir die Textausrichtung auf Mitte und die Zeilenhöhe auf 1em einstellen, werden wir Garantie dass der Charakter in der vertikalen und horizontalen Mitte unseres Platzes sitzt.
Die nächsten wichtigen Regeln sind die absolute Positionierung (0px, standardmäßig 0px) und der Z-Index, der die Stapelreihenfolge unserer positionierten Elemente bestimmt. Wenn Sie diesen Wert auf 100 setzen, können wir sicherstellen, dass unsere anderen Elemente darauf sitzen. Lass uns das jetzt tun ...
Abbildung img max-width: 100%; Position: relativ; z-Index: 900; Abbildung a Position: relativ; Bildschirmsperre; Zeilenhöhe: 0px; Textdekoration: keine;
Hier haben wir dafür gesorgt, dass die img-Tags auf der + Setzen Sie den z-Index auf über 100. Damit dies wirksam wird, müssen Sie einen Positionierungstyp angeben (in diesem Fall "relativ"). Unser Anker hat auch Position: relativ
was bedeutet das + icon ist jetzt absolut dagegen positioniert.
Sie werden auch einige andere Stile bemerken, die dem Anker hinzugefügt wurden. Wir haben es als Block dargestellt, alle Unterstriche entfernt und eine Linienhöhe von 0px erhalten. Die Zeilenhöhe ist wichtig und wenn nicht zurückgesetzt, kann sich dies als zusätzliche Auffüllung am unteren Rand des Elements manifestieren. Wir haben jetzt dafür gesorgt, dass der Anker eng am Bild anliegt.
Unsere Icons sind eigentlich immer präsent, aber sie werden nur sichtbar, wenn das Bild, das sie überdeckt, angezeigt wird.
Im Moment sind unsere Icons als Standard in der oberen linken Ecke unserer Anker positioniert. Wir brauchen sie in der Mitte der Miniaturansichten, unabhängig davon, wie groß die Miniaturansichten sind. Dann positionieren wir sie 50% von links und 50% von oben. Arbeit erledigt, richtig?
a.enlarge: before content: "+"; Bildschirmsperre; Schriftgröße: 40px; Zeilenhöhe: 1em; Höhe: 1em; Breite: 1em; Text ausrichten: Mitte; Farbe: #fff; Schriftdicke: fett; Position: absolut; Spitze: 50%; links: 50%; z-Index: 100;
Hmm. Nicht wirklich. Das Symbol befindet sich nicht in der Nähe der Mitte der Miniaturansicht. Dies liegt daran, dass Elemente in Bezug auf ihre obere linke Ecke ausgerichtet sind. Schau nochmal:
Um die Positionierung auszugleichen, müssen wir sie um die Hälfte nach oben und die Hälfte nach links verschieben. Wir haben früher die Ems verwendet, um die Dimensionen zu bestimmen (1em = 40px), also verwenden wir 0.5em (die Hälfte der Breite des Quadrats), um die Verschiebung durchzuführen. Auf diese Weise bleiben alle Messungen proportional, auch wenn wir die Schriftgröße ändern. Vielen Dank an Gabri für den Hinweis auf die Verwendung von ems!
a.enlarge: before content: "+"; Bildschirmsperre; Schriftgröße: 40px; Zeilenhöhe: 1em; Höhe: 1em; Breite: 1em; Text ausrichten: Mitte; Farbe: #fff; Schriftdicke: fett; Position: absolut; Spitze: 50%; links: 50%; z-Index: 100; Marge: -0,5em 0 0 -0,5em;
Dafür verwenden wir eine negative Marge. -0.5em oben und links erledigt die Arbeit. Stellen Sie sich ein Vakuum vor, in das unser Element gesaugt wird.
Bingo! Unsere + icon ist perfekt in der Mitte unserer Miniaturansicht positioniert. Versuchen Sie, die Größe des Browsers zu ändern, er bleibt genau im Mittelpunkt.
Es gibt viele Möglichkeiten für eine Technik wie diese:
Für erfahrene CSS-Spieler ist dies ein sehr einfacher Trick, aber wenn Sie noch nie über eine solche Positionierung nachgedacht haben, hoffe ich, dass dieser Schnelltipp hilfreich war.