CSS img relative Positionierung vs. Hintergrundbild + Hintergrundposition

9

Ich arbeite an einer Miniaturansicht für eine Bildergalerie. Vorschaubilder werden als <ul> mit Floating <li> mit einer festen, quadratischen Größe erstellt.

Die Thumbnails-Bilder selbst sind jedoch nicht unbedingt quadratisch oder gleich groß, sie haben die Eigenschaften der großen Bilder, die sie repräsentieren.

Um es schön aussehen zu lassen, möchte ich die Mitte des Miniaturbildes im Quadrat <li> anzeigen, wobei ein Überlauf gleichmäßig links und rechts abgeschnitten wird (siehe Abb. 1 ) :

%Vor%

Ich kann dies tun, indem ich das <img> -Tag lösche und (CSS-Sprite) definiere:

%Vor%

Das funktioniert und sieht gut aus, aber nur wenn Sie CSS aktiviert haben. Außerdem ist es nicht sehr semantisch, da das Bild nicht von einem <img> -Tag angezeigt wird.

Wenn ich ein <img> -Tag anstelle des inneren <div> oben verwende, sehen die Dinge eher wie in fig. 2 .

Wie würde ich die <img> via CSS verschieben, um immer zentriert zu sein, egal wie groß das Thumbnail-Bild wirklich ist? Ich nehme an, dass eine Art relativer Positionierung es tun könnte, aber ein naives position: relative; left: -50%; funktioniert nicht.

PS .: Ja, ich weiß, dass ich alle Thumbnails quadratisch machen kann, gehe davon aus, dass dies nicht die Antwort ist, nach der ich suche.

    
Tomalak 29.09.2010, 10:10
quelle

1 Antwort

3

Die CSS clip -Eigenschaft kommt mir in den Sinn, aber ich glaube nicht, dass es möglich ist, eine Zentriertheit zu erreichen Quadrat damit, ohne die Abmessungen des Bildes zu kennen. Der sauberste Weg wäre wahrscheinlich, die Dimensionen des Thumbnails serverseitig herauszufinden und dann einen clip mit absoluten Pixelwerten darauf anzuwenden, so dass er quadratisch wird.

Wenn man davon ausgeht, dass die Bildgrößen keine Option sind (ich nehme an, Sie würden nicht fragen, ob es das wäre), kommt mir eine Umgehungslösung in den Sinn. Ich kann momentan keinen Testfall erstellen, aber etwas in dieser Richtung könnte funktionieren:

  • Platzieren Sie innerhalb des Quadrates li ein div mit einer festen Breite, die Ihr Bild niemals erreichen wird (zB 1000 Pixel) und geben Sie eine position: relative; left: -{x}px , x ist ("the feste Breite des div-Elements "/ 2) -" Breite des quadratischen li-Elements "

  • Geben Sie div text-align: center an (Sie benötigen möglicherweise auch align="center" , um IE6 zu berücksichtigen)

  • Platziere die img in div

  • Es sollte zentriert sein.

nicht hübsch, aber auch nicht allzu schrecklich.

    
Pekka 웃 29.09.2010, 10:17
quelle

Tags und Links