Reputation: 1289
I am trying to center this text character ☢ within a circle. (☢)
While IE 10 displays the text vertically and horizontally centered, both Chrome and Firefox render too much padding at the top.
Any ideas how to fix this? (Flexbox is not a must have)
HTML
<div class="tl-icon">
<div>☢</div>
</div>
CSS
.tl-icon {
align-items: center;
background: black;
border-radius: 50%;
color: yellow;
display: flex;
font-size: 3em;
height: 3rem;
justify-content: center;
width: 3rem;
}
See live demo here: http://codepen.io/dash/pen/ZYePWP
Upvotes: 5
Views: 4070
Reputation: 1890
You've done everything correctly with your flexbox CSS.
The issue appears to be with line-height
. You're using an html entity as text and it looks like .tl-icon
is inheriting a value for line-height that doesn't work well.
Try adjusting your line-height
, and using a unitless value for it. This way the line-height will compute to whatever the font size is for the interior element.
.tl-icon {
line-height:.9;
}
Upvotes: 0
Reputation: 11215
The problem is that the inner child is a text which screws with your height.
I added a line-height
which seems to fix it a bit:
.tl-icon div{
line-height:1px;
}
http://codepen.io/anon/pen/ZYePBZ
Upvotes: 3
Reputation: 3265
I had to fart about with the dimensions a bit, but this should center vertically and horizontally, so far tested in Chrome, FF and Safari.
http://codepen.io/anon/pen/gbmEWX
Set the parent to
display:table;
Child to
display:table-cell;
vertical-align:middle;
text-align:center;
Upvotes: 0