Das Folgen funktioniert nicht. Was ist der Fehler, den ich mache? <html> <head> <style> #over img {display: block; Rand links: Auto; Rand rechts: Auto; } </ style> </ head> <body> <div id = "over" style = "Position: absolut; Breite: 100%; Höhe: 100%"> <img src = " img8a.flixcart.com/image/ tablet / f / k / t /… "> </ div> </ body> </ html>
nizam.sp
1
Wenn wir nicht verwenden display: blockdie Standardeinstellung ist display: inlinegemäß w3schools.com/cssref/pr_class_display.asp . Warum müssen wir Block verwenden? Ich habe für mich gearbeitet, bin mir aber nicht sicher, warum Block das IMG zentriert und Inline nicht.
user3731622
Da sich Inline nicht in der Linie bewegt, ist es tatsächlich in der Linie. Margin Auto ist also unwirksam.
Sehr kurze und einfache Lösung, aber es scheint nur mit einer festen, nicht prozentualen Breite und Höhe zu funktionieren. Es funktioniert zwar mit Floats, also +1 dafür. - jsfiddle.net/2s2nY/2
magnetronnie
1
aber das macht nur die vertikale Ausrichtung, aber nicht die horizontale richtig?
V-SHY
1
Es funktioniert nicht, wenn die Bildbreite größer als die Breite von div ist.
Davuz
5
Wenn wir die Anzeige entfernen: Tabellenzelle; es funktioniert perfekt.
Ahesanali Suthar
103
Dies kann auch über das Flexbox-Layout erfolgen:
STATISCHE GRÖSSE
.parent {display: flex;height:300px;/* Or whatever */background-color:#000;}.child {width:100px;/* Or whatever */height:100px;/* Or whatever */margin: auto;/* Magic! */}
*{padding:0;margin:0;}#over
{position:absolute;width:100%;height:100%;text-align: center;/*handles the horizontal centering*/}/*handles the vertical centering*/.Centerer
{display: inline-block;height:100%;vertical-align: middle;}.Centered
{display: inline-block;vertical-align: middle;}
Hinweis: Mit dieser Lösung können Sie jedes Element innerhalb eines Elements ausrichten. Für IE7 müssen Sie beim Anwenden der .CenteredKlasse auf Blockelemente einen anderen Trick verwenden, um die inline-blockArbeit zu erledigen . (das, weil IE6 / IE7 nicht gut mit Inline-Block auf Blockelementen spielen)
@deathlock es ist bekannt. aber ich zielte auf alte IE-Browser (die keine Pseudoelemente unterstützten).
Avrahamcool
1
Es ist nicht so, aber HTML sollte nur für die Struktur verwendet werden, nicht für die Präsentation. Dieser Job bleibt für CSS übrig, daher das Pseudoelement.
Deathlock
1
Was meinst du mit "Den Dokumentenfluss nicht unterbrechen (keine Floats oder absolute Positionierung)"? Was ist das #over { position:absolute; width:100%; height:100%;?
Rodrigo
1
@Rodrigo in der Tat, wenn Sie nicht auf ältere Browser abzielen müssen, ist diese Flexbox der empfohlene Ansatz.
Ich musste auch übergeordnetes CSS hinzufügen, aber Ihr Code funktionierte perfekt! Position: relativ; Breite: 100%; float: left; Überlauf versteckt; Mindesthöhe: 189px;
user2593040
10
Wenn Sie den rechten und linken Rand auf Auto setzen, wird das Bild in der Mitte ausgerichtet.
Wenn Sie das Bild so einstellen , dass es angezeigt wird: Inline-Block, während Sie das übergeordnete Div auf Textausrichtung: Mitte eingestellt haben, wird dies ebenfalls erledigt
EDIT: für diejenigen, die mit Display spielen: Inline-Block >>> Vergessen Sie nicht, dass zB zwei Divs mögen
habe wirklich keine Leerzeichen zwischen ihnen (wie hier zu sehen).
Nur einfach, um diese (Inline-Block-inhärenten) Lücken zwischen ihnen zu vermeiden. Diese Lücken sind zwischen jeweils zwei Wörtern zu sehen, die ich gerade schreibe! :-) Also .. hoffe das hilft einigen von euch.
Ich habe viele Ansätze ausprobiert, aber nur dieser funktioniert für mehrere Inline-Elemente in einem Container-Div. Hier ist Code, um alles in div in der Mitte auszurichten.
CSS
.divContainer
{
vertical-align: middle;
text-align: center;<!--If you want horizontal center alignment -->}.divContainer >*{
vertical-align: middle;}
Liebe CSS3! Danke dir. Es ist jedoch gut zu beachten, dass dies nur in modernen Browsern (außer IE) funktioniert. Alle anderen Browser haben keine Auswirkung.
Neel
2
Viele Antworten empfehlen die Verwendung, margin:0 autoaber dies funktioniert nur, wenn das Element, das Sie zentrieren floatmöchten, nicht links oder rechts schwebt, dh das CSS-Attribut ist nicht festgelegt. Wenden Sie dazu das displayAttribut an table-cellund wenden Sie dann den Rand von links und rechts auf auto an, damit Ihr Stil so aussiehtstyle="display:table-cell;margin:0 auto;"
Dies hat bei mir funktioniert, wenn Sie das Bild zentrieren müssen und Ihr übergeordnetes Div zum Bild den gesamten Bildschirm abdeckt. dh Höhe: 100% und Breite: 100%
Die markierte Antwort darauf richtet das Bild nicht vertikal aus. Eine geeignete Lösung für moderne Browser ist die Flexbox. Ein Flex-Container kann so konfiguriert werden, dass seine Elemente sowohl horizontal als auch vertikal ausgerichtet werden.
Diese Lösung beantwortet die Frage und funktioniert im Gegensatz zur markierten Antwort. Vielleicht könnte der Down-Voter seine Entscheidung zur Downvote detailliert beschreiben?
WDuffy
6
Aus der Überprüfungswarteschlange : Darf ich Sie bitten, einen Kontext um Ihren Quellcode hinzuzufügen. Nur-Code-Antworten sind schwer zu verstehen. Es wird sowohl dem Fragesteller als auch zukünftigen Lesern helfen, wenn Sie Ihrem Beitrag weitere Informationen hinzufügen können.
RBT
1
Das rechtfertigt die Ablehnung nicht. Die Antwort ist technisch korrekt und würde zukünftigen Lesern helfen. Ich habe den Antworttext aktualisiert, um die Hausregeln einzuhalten, aber möglicherweise sollte das Kernteam eine direktere Lösung implementieren, da das Identifizieren von Antworten nur mit Code eine triviale Aufgabe ist.
Eine einfache Möglichkeit wäre, separate Stile sowohl für das div als auch für das Bild zu erstellen und diese dann unabhängig voneinander zu positionieren. Wenn ich meine Bildposition auf 50% setzen möchte, hätte ich Code, der wie folgt aussieht ...
Sagen Sie mir einfach, ob es mit allen Arten von Browsern funktioniert, obwohl dies eine grundlegende Sache ist, die jeder Browser unterstützen muss (andernfalls nennen Sie es keinen Browser)
WICHTIG FÜR DEN TEST: Um ein Code-Snippet auszuführen, klicken Sie auf die linke Schaltfläche RUN-Code-Snippet und dann auf den rechten Link. Ganze Seite
Antworten:
JSFiddle
quelle
display: block;
war meine Falle. TnXdisplay: block
die Standardeinstellung istdisplay: inline
gemäß w3schools.com/cssref/pr_class_display.asp . Warum müssen wir Block verwenden? Ich habe für mich gearbeitet, bin mir aber nicht sicher, warum Block das IMG zentriert und Inline nicht.quelle
Dies kann auch über das Flexbox-Layout erfolgen:
STATISCHE GRÖSSE
DYNAMISCHE GRÖSSE
Ich habe das Beispiel in diesem Artikel gefunden , das die Verwendung des Layouts hervorragend erklärt.
quelle
Mir scheint, Sie wollten auch, dass das Bild vertikal im Container zentriert wird. (Ich habe keine Antwort dafür gesehen)
Arbeitsgeige:
HTML
CSS
Hinweis: Mit dieser Lösung können Sie jedes Element innerhalb eines Elements ausrichten. Für IE7 müssen Sie beim Anwenden der
.Centered
Klasse auf Blockelemente einen anderen Trick verwenden, um dieinline-block
Arbeit zu erledigen . (das, weil IE6 / IE7 nicht gut mit Inline-Block auf Blockelementen spielen)quelle
span
, könnten Sie das Pseudo-Element verwenden:before
: jsfiddle.net/xaliber/cj6zhtp0#over { position:absolute; width:100%; height:100%;
?quelle
Sie können dies einfach tun, indem Sie die Eigenschaft display: flex css verwenden
quelle
quelle
Ich hatte noch einige Probleme mit anderen hier vorgestellten Lösungen. Schließlich funktionierte das am besten für mich:
CSS3:
Weitere Informationen zu diesem Ansatz finden Sie auf dieser Seite .
quelle
Wenn Sie den rechten und linken Rand auf Auto setzen, wird das Bild in der Mitte ausgerichtet.
quelle
Dies wäre ein einfacherer Ansatz
quelle
Daaawx 'Antwort funktioniert, aber ich denke, es wäre sauberer, wenn wir das Inline-CSS eliminieren würden.
quelle
Wenn Sie das Bild so einstellen , dass es angezeigt wird: Inline-Block, während Sie das übergeordnete Div auf Textausrichtung: Mitte eingestellt haben, wird dies ebenfalls erledigt
EDIT: für diejenigen, die mit Display spielen: Inline-Block >>> Vergessen Sie nicht, dass zB zwei Divs mögen
habe wirklich keine Leerzeichen zwischen ihnen (wie hier zu sehen).
Nur einfach, um diese (Inline-Block-inhärenten) Lücken zwischen ihnen zu vermeiden. Diese Lücken sind zwischen jeweils zwei Wörtern zu sehen, die ich gerade schreibe! :-) Also .. hoffe das hilft einigen von euch.
quelle
EINFACH. 2018. FlexBox. So überprüfen Sie die Browserunterstützung: Kann ich eine
Minimallösung verwenden:
So erhalten Sie die größtmögliche Browserunterstützung:
quelle
Ich habe viele Ansätze ausprobiert, aber nur dieser funktioniert für mehrere Inline-Elemente in einem Container-Div. Hier ist Code, um alles in div in der Mitte auszurichten.
CSS
HTML
Beispielcode finden Sie hier: https://jsfiddle.net/yogendrasinh/2vq0c68m/
quelle
CSS-Datei
quelle
Versuchen Sie diesen minimalen Code:
Und CSS:
quelle
Nun, wir sind im Jahr 2016 ... warum nicht Flexbox verwenden? Es reagiert auch. Genießen.
quelle
Viele Antworten empfehlen die Verwendung,
margin:0 auto
aber dies funktioniert nur, wenn das Element, das Sie zentrierenfloat
möchten, nicht links oder rechts schwebt, dh das CSS-Attribut ist nicht festgelegt. Wenden Sie dazu dasdisplay
Attribut antable-cell
und wenden Sie dann den Rand von links und rechts auf auto an, damit Ihr Stil so aussiehtstyle="display:table-cell;margin:0 auto;"
quelle
quelle
HTML:
CSS:
quelle
Für horizontale Mitte Einfach setzen
Eine andere Methode:
Für die vertikale Mitte Einfach setzen:
quelle
Das hat bei mir funktioniert:
quelle
Das hat den Trick für mich getan.
'Hinweis: In diesem Fall ist' BrandImage 'keine CSS-Klasse zugeordnet
CSS:
quelle
Dies hat bei mir funktioniert, wenn Sie das Bild zentrieren müssen und Ihr übergeordnetes Div zum Bild den gesamten Bildschirm abdeckt. dh Höhe: 100% und Breite: 100%
quelle
Positionierung verwenden. Folgendes hat bei mir funktioniert ...
Mit Zoom in die Bildmitte (Bild füllt das Div):
Ohne Zoom auf die Mitte des Bildes (Bild ist nicht füllen Sie das div):
quelle
Die markierte Antwort darauf richtet das Bild nicht vertikal aus. Eine geeignete Lösung für moderne Browser ist die Flexbox. Ein Flex-Container kann so konfiguriert werden, dass seine Elemente sowohl horizontal als auch vertikal ausgerichtet werden.
quelle
Sie können sich diese Lösung ansehen:
Horizontales und vertikales Zentrieren eines Bildes in einer Box
quelle
Eine einfache Möglichkeit wäre, separate Stile sowohl für das div als auch für das Bild zu erstellen und diese dann unabhängig voneinander zu positionieren. Wenn ich meine Bildposition auf 50% setzen möchte, hätte ich Code, der wie folgt aussieht ...
quelle
Ändern Sie den Höhenwert für Ihre Anforderungen.
quelle
Das sollte funktionieren.
WICHTIG FÜR DEN TEST: Um ein Code-Snippet auszuführen, klicken Sie auf die linke Schaltfläche RUN-Code-Snippet und dann auf den rechten Link. Ganze Seite
quelle