JSFiddle - React, Tailwind, and code Playground

by secretgspot

HTML

<section>
    
	<div id="p_content">
        <p>
            好き1好き1好き1好き1好き1好き1
        </p>
        <p>
            嫌い2嫌い2嫌い2嫌い2嫌い2嫌い2
        </p>
        <p>
            好き3好き3好き3好き3好き3好き3
        </p>
        <p>
            嫌い4嫌い4嫌い4嫌い4嫌い4嫌い4
        </p>
        <p>
            好き5好き5好き5好き5好き5好き5
        </p>
        <p>
            嫌い6嫌い6嫌い6嫌い6嫌い6嫌い6
        </p>
        <p>
            好き7好き7好き7好き7好き7好き7
        </p>
        <p>
            嫌い8嫌い8嫌い8嫌い8嫌い8嫌い8
        </p>
        <p>
            好き9好き9好き9好き9好き9好き9
        </p>
        <p>
            嫌い10嫌い10嫌い10嫌い10嫌い10嫌い10
        </p>
        <p>
            好き11好き11好き11好き11好き11好き11
        </p>
        <p>
            嫌い12嫌い12嫌い12嫌い12嫌い12嫌い12
        </p>
        <p>
            好き13好き13好き13好き13好き13好き13
        </p>
        <p>
            嫌い14嫌い14嫌い14嫌い14嫌い14嫌い14
        </p>
        <p>
            好き15好き15好き15好き15好き15好き15
        </p>
        <p>
            嫌い16嫌い16嫌い16嫌い16嫌い16嫌い16
        </p>
    </div>    
</section>
<div id="message">
    
</div>

CSS

*{margin:0; padding:0;}
body { background-color: #DDDDDD; font: 10px sans-serif; }
#p_content{
    /*とりあえずベースとなるDivを真ん中あたりに*/    
   	position:absolute;
    top:22em;
    left:1em;
    
}
#p_content p {
    
    /*これで回転の基準をきめる。この場合要素の一番上中央を基準にして回転させるから。*/
    -moz-transform-origin: 100% 50%;  
    -webkit-transform-origin: 100% 50%;  
    /*回転動作の動きの時間をきめる 0.5秒で移動するということ*/
	-webkit-transition:-webkit-transform 0.5s ease-out;

	width:12em;
    height:3em;
    padding-right:10em;
    position:absolute;
    cursor: pointer;
}
    
/* ここで rotateを設定してもjavascriptで取得できない。
#p_content p:nth-child(1){
-webkit-transform: rotate(0deg);  
-moz-transform: rotate(0deg);
}  
#p_content p:nth-child(2){
    -webkit-transform: rotate(-22.5deg);  
    -moz-transform: rotate(-22.5deg);   
}
#p_content p:nth-child(3) {
	-webkit-transform: rotate(-45deg);  
    -moz-transform: rotate(-45deg);  
              
}
#p_content p:nth-child(4) {
        -webkit-transform: rotate(-67.5deg);  
        -moz-transform: rotate(-67.5deg);  
}
#p_content p:nth-child(5) {
        -webkit-transform: rotate(-90deg);  
        -moz-transform: rotate(-90deg);  
}  
#p_content p:nth-child(6) {
        -webkit-transform: rotate(-112.5deg);  
        -moz-transform: rotate(-112.5deg);  
}  
#p_content p:nth-child(7) {
        -webkit-transform: rotate(-135deg);  
        -moz-transform: rotate(-135deg);  
}  
#p_content p:nth-child(8) {
        -webkit-transform: rotate(-157.5deg);  
        -moz-transform: rotate(-157.5deg);  
}  
#p_content p:nth-child(9) {
        -webkit-transform: rotate(-180deg);  
        -moz-transform: rotate(-180deg);  
}  
#p_content p:nth-child(10) {
        -webkit-transform: rotate(-202.5deg);  
        -moz-transform: rotate(-202.5deg);  
}  
#p_content p:nth-child(11) {
        -webkit-transform: rotate(-225deg);  
        -moz-transform: rotate(-225deg);  
}  
#p_content p:nth-child(12) {
        -webkit-transform: rotate(-247.5deg);  
        -moz-transform:...

JavaScript

// forked from chezsugi's "forked: マウスホイールで拡大縮小するように forked: 「お前、これであの娘にラブレター書けよ!」 ~要素を渦状に並べて無限ループ~" http://jsdo.it/chezsugi/p9nwT
// forked from ishimig's "マウスホイールで拡大縮小するように forked: 「お前、これであの娘にラブレター書けよ!」 ~要素を渦状に並べて無限ループ~" http://jsdo.it/ishimig/EndlessLoveText2
// forked from ishimig's "「お前、これであの娘にラブレター書けよ!」 ~要素を渦状に並べて無限ループ~" http://jsdo.it/ishimig/EndlessLoveText
// forked from ishimig's "文章を円形に並べて回転するホームページ" http://jsdo.it/ishimig/RollingThunder

//渦にする要素とその大きさの取得
var P=document.getElementById("p_content");
var PS=P.getElementsByTagName("p");  
var P_SIZE=PS.length;


//クリックで回転させる
function PRotateUzu(delta){

    //クリックした要素の角度を取得
  //  var r = event.target.style.webkitTransform;
  //  var this_deg = parseFloat(r.match( /rotate\((.*)deg/ )[1]);
    
    //クリックした位置から、どれだけ移動させるか
  //  var deg_v = this_deg/(360/P_SIZE);
    
    var deg_v=delta
    
    var ps=P.getElementsByTagName("p");  
	var pslen=PS.length;
    
    
    var tmp_Transform = new Array(pslen);
    var tmp_opacity = new Array(pslen);

    
    //入れ替えの為、 transformとopacityをとっておく。もっと効率よいアルゴリズムがある
    for (var i= 0; i < pslen; i++) {
        
        tmp_Transform[i]= ps[i].style.webkitTransform;
        tmp_opacity[i]= ps[i].style.opacity;
		//debug
     	//document.getElementById("message").innerHTML += i + ":" +ps[i].innerHTML + ":"+ tmp_opacity[i] +"<br>";
    }
    
	//それぞれの要素の角度を調節して、クリックした要素が左中央にくるように
	for (i= 0; i < pslen; i++) {
   		        
        //移動先の番号を取得する
        tmp_v = i + deg_v;
        
        //0以下になったり、pslenを超えたりしたら循環させる
        if ((tmp_v < 0)){
            tmp_v= pslen +tmp_v;
            
    	}else if(tmp_v >= pslen){
        	tmp_v= tmp_v - pslen ;
        }
        //移動
        ps[i].style.webkitTransform = tmp_Transform[tmp_v];
        ps[i].style.opacity = tmp_opacity[tmp_v];
     
    }

}


function wheel(event){
        var delta = 0;
        delta = event.wheelDelta/120;

        if (delta)
                PRotateUzu(delta);
        if (event.preventDefault) {
  ...