2016-06-03 21 views
1

Bedenken Sie:Zentrieren Text um einen Punkt

<div id="point"> 
    <div class="caption">Caption here</div> 
</div> 

Position auf #point gesetzt:

#point{ 
    top: 50px; 
    left: 50px; 
} 

Jetzt möchte ich den Text horizontal um die es zentriert werden. Ich versuchte, die div Null Breite

#point > .caption{ 
    width: 0px; 
    text-align: center; 
} 

macht aber anscheinend funktioniert das nicht. Wie zentriere ich den Text? Es muss nicht zwei div s haben. Es ist nur, dass ich zwei div s versuchte, damit es funktioniert.

Antwort

1

Mit transform können wir Text horizontal (und/oder vertikal) zentrieren, was normalerweise seine obere linke Ecke ist (der Punkt, über den Sie sprechen).

Der rote Punkt (mit der Klasse block) wird hinzugefügt, um den Punkt zu zeigen, auf den wir uns konzentrieren.

.caption { 
 
    display: inline-block; 
 
    position: absolute; 
 
    top: 50px; 
 
    left: 50px; 
 
    transform: translate(-50%, -50%); 
 
} 
 

 
.block { 
 
    position: absolute; 
 
    top: 50px; 
 
    left: 50px; 
 
    width: 5px; 
 
    height: 5px; 
 
    background-color: red; 
 
    transform: translate(-50%, -50%); 
 
}
<span class="caption">Caption here</span> 
 
<div class="block"></div>

Version, die anstelle von transform zwei Elemente und relative Positionierung verwendet: für meine Sprache

.caption { 
 
    display: inline-block; 
 
    position: absolute; 
 
    top: 50px; 
 
    left: 50px; 
 
} 
 

 
.inner { 
 
    position: relative; 
 
    left: -50%; 
 
    top: -0.5em; 
 
} 
 

 
.block { 
 
    position: absolute; 
 
    top: 50px; 
 
    left: 50px; 
 
    width: 5px; 
 
    height: 5px; 
 
    background-color: red; 
 
    transform: translate(-50%, -50%); 
 
}
<span class="caption"><span class="inner">Caption here</span></span> 
 
<div class="block"></div>

+0

Schöne Lösung, obwohl ich eine ohne 'transform 'bevorzugen würde (das erfordert Hersteller-Präfixe). –

+0

@Derek 朕 會 功夫 Ich habe gerade eine alternative Methode hinzugefügt, die 'transform' nicht verwendet. –

+0

Interessant, wie du '-0.5em' benutzt hast, um es um 50% zu erhöhen. Ich wusste nie, dass du es so benutzen kannst. –

0

Entschuldigen Sie mich, da es nicht ausgezeichnet ist. Das Problem mit Ihnen in diesem Code

 #point > .caption{ 
    width: 0px; 
    text-align: center; 
} 

ist das Breitenelement. Weil du falschen Wert angegeben hast. Löschen Sie das Attribut width oder ändern Sie den Wert in auto. Ich hoffe, dass ich verstehe, was ich sage. Viel Glück!