Adding multiple clones of the original element , each translated 1px behind, and then working on their color to give a 3d look isn't quite that bad,
check the Pen ( tested only on Chrome)
HTML
<section>
<p >Stop, I'm getting dizzy!</p>
</section>
SCSS
section{
animation-name: spinner;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-duration: 4s;
transform-style: preserve-3d;
}
p {
text-align: center;
font-size: 2em;
position:absolute;
width:100%;
letter-spacing: 0.2em;
}
@keyframes spinner {
from {
transform: rotateY(0deg);
}
to {
transform: rotateY(-360deg);
}
}
$colors: #000,#111,#222,#333,#444,#555,#666,#777,#888,#999,#aaa,#bbb;
@for $i from 1 through length($colors) {
p:nth-child( #{$i} ){
transform: translateZ(- $i+px);
color: (nth($colors, $i));
}
}
JS
var p = document.querySelector('p');
for(var i = 0 ; i<13 ; i++){
var node = document.createElement('p');
var child = "Stop, I'm getting dizzy!";
child = document.createTextNode(child);
node.appendChild(child);
p.parentNode.appendChild(node);
}
section {
animation-name: spinner;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-duration: 4s;
transform-style: preserve-3d;
}
p {
text-align: center;
font-size: 2em;
position: absolute;
width: 100%;
letter-spacing: 0.2em;
}
p:last-child {
-webkit-text-fill-color: silver;
}
@keyframes spinner {
from {
transform: rotateY(0deg);
}
to {
transform: rotateY(-360deg);
}
}
p:nth-child(1) {
transform: translateZ(-1px);
color: #000;
}
p:nth-child(2) {
transform: translateZ(-2px);
color: #111;
}
p:nth-child(3) {
transform: translateZ(-3px);
color: #222;
}
p:nth-child(4) {
transform: translateZ(-4px);
color: #333;
}
p:nth-child(5) {
transform: translateZ(-5px);
color: #444;
}
p:nth-child(6) {
transform: translateZ(-6px);
color: #555;
}
p:nth-child(7) {
transform: translateZ(-7px);
color: #666;
}
p:nth-child(8) {
transform: translateZ(-8px);
color: #777;
}
p:nth-child(9) {
transform: translateZ(-9px);
color: #888;
}
p:nth-child(10) {
transform: translateZ(-10px);
color: #999;
}
p:nth-child(11) {
transform: translateZ(-11px);
color: #aaa;
}
p:nth-child(12) {
transform: translateZ(-12px);
color: #bbb;
}
<section>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
<p>Stop, I'm getting dizzy!</p>
</section>