2017-08-08 6 views
1

Ich versuche, etwas zu schaffen, etwa wie die folgende in CSS:Text und Etikett in CSS Kreis zentriert

enter image description here

wo die +2 horizontal zentriert und vertikal in den Kreis und die DEX horizontal zentriert unter dem +2.

Wie kann ich das erreichen?

+0

Welche RPG-Tool bauen Sie? –

+0

Ich schreibe eine Open-Source-Web-App, um Dungeon World Charakterblätter zu verwalten. – Ralph

+0

Danke. Dungeon World sieht wie eine Rückkehr zu den lustigen Versionen von D & D aus. –

Antwort

1

Sie können flexbox dafür verwenden.

.circle { 
 
    /* circle styles */ 
 
    width: 100px; 
 
    height: 100px; 
 
    border: 1px solid #222; 
 
    border-radius: 50%; 
 
    
 
    /* become a flex container */ 
 
    /* its children will be flex items */ 
 
    display: flex; 
 
    /* place items in column */ 
 
    flex-direction: column; 
 
    /* center flex items horizontally */ 
 
    align-items: center; 
 
    /* center all content vertically */ 
 
    justify-content: center; 
 
} 
 

 
/* simulate one more item to "balance" dex text */ 
 
.circle:before { 
 
    content: "\A0"; 
 
    visibility: hidden; 
 
}
<div class="circle"> 
 
    <div class="number">+2</div> 
 
    <div class="text">dex</div> 
 
</div>

+0

Das funktioniert gut. Ich benutze flexbox ausgiebig im Rest meiner Webapp. – Ralph

1

Eine einfache Lösung verwendet line-height, um die vertikale Ausrichtung von Text zu steuern, die jedoch unzuverlässig wird, wenn sie entlang eines globalen Stylings verwendet wird, das die Standardlinienhöhen anpasst.

Also, ich schlage vor, mit der folgenden Lösung, die viel sauberer und einfacher zu verwalten:

.circle{ 
 
    width: 60px; 
 
    height: 48px; 
 
    border: 1px solid #000; 
 
    background: #fff; 
 
    text-align: center; 
 
    border-radius: 100%; 
 
    font-size: 24px; 
 
    line-height: 16px; 
 
    padding-top: 14px; 
 
} 
 
.circle span{ 
 
    font-size: 14px; 
 
    text-transform: uppercase; 
 
    margin-top: 
 
    display: block; 
 
}
<div class="circle"> 
 
    +12 
 
    <span>dex</span> 
 
</div>

HTML: Verwenden Sie ein .circle Element als eigentlicher Kreis und umfasst die Nummer und ein <span> Element, das das Etikett enthält.

CSS: Verwenden der line-height den Abstand zwischen der Markierung zu steuern, und der Anzahl und ich bin mit den padding-top die Anzahl und zentriert ihn vertikal zu schieben.