Fretbox
Quick fretboard built with flexbox
by David Iglesias
HTML
<div class="board">
<div class="fret tuning">
<div>e</div>
<div>A</div>
<div>D</div>
<div>G</div>
<div>B</div>
<div>E</div>
</div>
<div class="fret">
<div class="string">1</div>
<div class="string">1</div>
<div class="string"></div>
<div class="string"></div>
<div class="string"></div>
<div class="string">1</div>
</div>
<div class="fret">
<div class="string"></div>
<div class="string"></div>
<div class="string">2</div>
<div class="string"></div>
<div class="string"></div>
<div class="string"></div>
</div>
<div class="fret">
<div class="string"></div>
<div class="string"></div>
<div class="string"></div>
<div class="string">4</div>
<div class="string">3</div>
<div class="string"></div>
</div>
</div>
CSS
* {
font-family: sans-serif;
box-sizing: border-box;
}
.board {
display: flex;
}
.fret {
flex: 1;
display: flex;
flex-direction: column;
border-right: 2px solid gold;
}
.fret.tuning {
flex: 0;
min-width: 32px;
}
.fret > div {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
min-height: 28px;
}
.string {
background: #420 linear-gradient(180deg,
rgba(0,0,0,0) calc(50% - 1px),
rgba(192,192,192,1) calc(50%),
rgba(0,0,0,0) calc(50% + 1px)
);
}
.string:not(:empty) {
font-size: 9px;
font-weight: bold;
position: relative;
z-index: 0;
}
.string:not(:empty)::before {
content: '';
display: block;
border: 2px solid black;
background: #fff;
width: 16px;
height: 16px;
border-radius: 16px;
position: relative;
right: -13px;
z-index: -1;
}