JSFiddle - React, Tailwind, and code Playground
by William Green
HTML
<ul class="circle">
<li>
<div class="text"><span style="-o-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);">1</span></div>
</li>
<li>
<div class="text"><span style="-o-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-webkit-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg);">2</span></div>
</li>
<li>
<div class="text"><span style="-o-transform:rotate(135deg);-moz-transform:rotate(135deg);-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);">3</span></div>
</li>
<li>
<div class="text"><span style="-o-transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);">4</span></div>
</li>
<ul>
CSS
.circle {
position: relative;
border: 1px solid black;
padding: 0;
width: 400px;
height: 400px;
border-radius: 50%;
list-style: none;
overflow: hidden;
}
li {
overflow: hidden;
position: absolute;
top: 0;
right: 0;
width: 50%;
height: 50%;
transform-origin: 0% 100%;
}
.text {
position: absolute;
left: -100%;
width: 200%;
height: 200%;
color: white;
text-align: center;
-webkit-transform: skewY(180deg) rotate(45deg);
-ms-transform: skewY(180deg) rotate(45deg);
transform: skewY(180deg) rotate(45deg);
padding-top: 40px;
}
li:first-child {
-webkit-transform: rotate(0deg) skewY(-180deg);
-ms-transform: rotate(0deg) skewY(-180deg);
transform: rotate(0deg) skewY(-180deg);
}
li:nth-child(2) {
-webkit-transform: rotate(90deg) skewY(-180deg);
-ms-transform: rotate(90deg) skewY(-180deg);
transform: rotate(90deg) skewY(-180deg);
}
li:nth-child(3) {
-webkit-transform: rotate(180deg) skewY(-180deg);
-ms-transform: rotate(180deg) skewY(-180deg);
transform: rotate(180deg) skewY(-180deg);
}
li:nth-child(4) {
-webkit-transform: rotate(270deg) skewY(-180deg);
-ms-transform: rotate(270deg) skewY(-180deg);
transform: rotate(270deg) skewY(-180deg);
}
li:first-child .text {
background: green;
}
li:nth-child(2) .text {
background: tomato;
}
li:nth-child(3) .text {
background: aqua;
}
li:nth-child(4) .text {
background: yellow;
}
.circle span {
display: block;
}