I'm displaying tile numbers using CSS counter
and content
. I want to display these number at left top corner of the tile. The following code shows it correctly in Chrome but not in FF or IE 11 (haven't checked on other browsers).
What changes do I need in CSS to consistently show the number at left top corner?
Chrome: this is how I want:
Firefox: numbers aligned to left ... but not top:
.tiles {
/* flex properties as container (tiles level 1, 2 & 3) */
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: strech;
align-content: strech;
/* flex properties as content (tiles level 2 & 3) */
flex-grow: 1;
flex-shrink: 1;
flex-basis: strech;
}
.tiles.level1 {
flex-direction: column;
flex-grow: 0;
width: 600px;
height: 300px;
counter-reset: tileNum;
}
.tiles.level2 {
flex-direction: row;
}
.tiles.level3 {
flex-direction: row;
}
.tiles .title {
align-self: center;
font-size: 42px;
}
.tile {
border: 1px solid black;
background-color: white;
width: 1px;
flex-grow: 1;
flex-shrink: 1;
flex-basis: auto;
/* auto = use width & height values if available */
font-size: 24px;
}
.centerContainer {
display: flex;
justify-content: space-between;
align-items: center;
align-content: center;
flex-direction: row;
flex-wrap: wrap;
}
.centerContent {
/* flex-grow: 1;
flex-shrink: 1;
align-self: center;*/
}
.tile:before {
counter-increment: tileNum;
content: counter(tileNum);
align-self: flex-start;
flex-grow: 0;
font-size: 16px;
}
.tile:after {
content: ' ';
align-self: flex-end;
flex-grow: 0;
font-size: 16px;
}
.brand {
text-decoration: underline;
font-variant: small-caps;
}
<section class="section static">
<div class="tiles level1">
<span class="title">
<span class="brand">So</span>mething
</span>
<div class="tiles level2">
<div class="tiles level3">
<span class="tile t1 centerContainer"><span class="centerContent"><span class="brand">So</span>mething</span>
</span>
<span class="tile t2 centerContainer"><span class="centerContent"><span class="brand">So</span>mething</span>
</span>
</div>
<div class="tiles level3">
<span class="tile t3 centerContainer"><span class="centerContent"><span class="brand">So</span>mething</span>
</span>
<span class="tile t4 centerContainer"><span class="centerContent"><span class="brand">So</span>mething</span>
</span>
</div>
</div>
<div class="tiles level2">
<div class="tiles level3">
<span class="tile t5 centerContainer"><span class="centerContent"><span class="brand">So</span>mething</span>
</span>
<span class="tile t6 centerContainer"><span class="centerContent"><span class="brand">So</span>mething</span>
</span>
</div>
<div class="tiles level3">
<span class="tile t7 centerContainer"><span class="centerContent"><span class="brand">So</span>mething</span>
</span>
<span class="tile t8 centerContainer"><span class="centerContent"><span class="brand">So</span>mething</span>
</span>
</div>
</div>
</div>
</section>
Note:
- I'm using flex box to display tiles and will prefer solution with flexbox only
- I'm looking for CSS only solution. (I'm pretty sure that it will be possible but I'm missing out on something related to flexbox properties.)
- Nesting of
.tiles
is needed because: I want to show 4 tiles in a row when page is viewed on PC or mobile in landscape mode but want to show only 2 tiles in a row if viewed on mobile in portrait mode. I'm OK to have some alternative for this.