JSFiddle - React, Tailwind, and code Playground
by fresheyeball
HTML
<header>
<div class="main">
<h1 id="fittext1">
<span class="rotate">
Message 1,
Message 2,
Message 3
</span>
</h1>
</div>
</header>
CSS
.rotating {
display: inline-block;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: rotateX(0) rotateY(0) rotateZ(0);
-moz-transform: rotateX(0) rotateY(0) rotateZ(0);
-ms-transform: rotateX(0) rotateY(0) rotateZ(0);
-o-transform: rotateX(0) rotateY(0) rotateZ(0);
transform: rotateX(0) rotateY(0) rotateZ(0);
-webkit-transition: 0.5s;
-moz-transition: 0.5s;
-ms-transition: 0.5s;
-o-transition: 0.5s;
transition: 0.5s;
-webkit-transform-origin-x: 50%;
}
.rotating.flip {
position: relative;
}
.rotating .front, .rotating .back {
left: 0;
top: 0;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
-o-backface-visibility: hidden;
backface-visibility: hidden;
}
.rotating .front {
position: absolute;
display: inline-block;
-webkit-transform: translate3d(0,0,1px);
-moz-transform: translate3d(0,0,1px);
-ms-transform: translate3d(0,0,1px);
-o-transform: translate3d(0,0,1px);
transform: translate3d(0,0,1px);
}
.rotating.flip .front {
z-index: 1;
}
.rotating .back {
display: block;
opacity: 0;
}
.rotating.spin {
-webkit-transform: rotate(360deg) scale(0);
-moz-transform: rotate(360deg) scale(0);
-ms-transform: rotate(360deg) scale(0);
-o-transform: rotate(360deg) scale(0);
transform: rotate(360deg) scale(0);
}
.rotating.flip .back {
z-index: 2;
display: block;
opacity: 1;
-webkit-transform: rotateY(180deg) translate3d(0,0,0);
-moz-transform: rotateY(180deg) translate3d(0,0,0);
-ms-transform: rotateY(180deg) translate3d(0,0,0);
-o-transform: rotateY(180deg) translate3d(0,0,0);
transform: rotateY(180deg) translate3d(0,0,0);
}
.rotating.flip.up .back {
-webkit-transform: rotateX(180deg) translate3d(0,0,0);
-moz-transform: rotateX(180deg) translate3d(0,0,0);
-ms-transform:...
JavaScript
!function($){
var defaults = {
animation: "dissolve",
separator: ",",
speed: 3500
};
$.fx.step.textShadowBlur = function(fx) {
$(fx.elem).prop('textShadowBlur', fx.now).css({textShadow: '0 0 ' + Math.floor(fx.now) + 'px black'});
};
$.fn.textrotator = function(options){
var settings = $.extend({}, defaults, options);
return this.each(function(){
var el = $(this)
var array = [];
$.each(el.text().split(settings.separator), function(key, value) {
array.push(value);
});
el.text(array[0]);
// animation option
var rotate = function() {
switch (settings.animation) {
case 'dissolve':
el.animate({
textShadowBlur:20,
opacity: 0
}, 500 , function() {
index = $.inArray(el.text(), array)
if((index + 1) == array.length) index = -1
el.text(array[index + 1]).animate({
textShadowBlur:0,
opacity: 1
}, 500 );
});
break;
case 'flip':
if(el.find(".back").length > 0) {
el.html(el.find(".back").html())
}
var initial = el.text()
var index = $.inArray(initial, array)
if((index + 1) == array.length) index = -1
el.html("");
$("<span class='front'>" + initial + "</span>").appendTo(el);
$("<span class='back'>" + array[index + 1] + "</span>").appendTo(el);
el.wrapInner("<span class='rotating' />").find(".rotating").hide().addClass("flip").show().css({
"-webkit-transform": " rotateY(-180deg)",
"-moz-transform": " rotateY(-180deg)",
"-o-transform": " rotateY(-180deg)",
"transform": " rotateY(-180deg)"
})
break;
case 'flipUp':
...