JSFiddle - React, Tailwind, and code Playground

by tu genhua

HTML

<div class="demo">
    <h4 class="title">舞台视角大小201像素,子元素translateZ值为: <span id="translateZ" class="translateZ">0</span>px;</h4>
    <p class="range_area">-100 
        <input type="range" id="range" min="-100" max="300" step="5" value="0" autocomplete="off" /> 300
    </p>
    <div id="stage" class="container">
        <div class="piece"></div>
    </div>
</div>

CSS

.demo {width:500px;margin:10px;border:1px solid red;}
.demo .title {text-align: center;font-size: 1em;}
.translateZ {color:red;}
.range_area {text-align: center;}
.range_area input {position:relative;width:300px;z-index:100;}
.demo .container {
    width:400px;
    height:100px;
    padding:50px;
    background:#f0f0f0;
    box-shadow: inset 0 0 3px rgba(0,0,0,.35);
    -webkit-transition: top .5s;
    -moz-perspective: 201px;
    -webkit-perspective: 201px;
    perspective: 201px;
    position: relative;
    z-index: 2;
    top: 0;
}
.piece {
    width: 100px;
    height: 100px;
    margin: 0 auto;
    background-color:red;
    padding: 10px;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    position: relative;
}

JavaScript

(function(){
    var randomColor = function(){
        return "hsla("+Math.round(360 * Math.random())+","+"60%,50%,.75)";
    };
    // css transform 变换
    var transform = function(element, value, key) {
        key = key || "Transform";
        ["Moz", "O", "Ms", "Webkit", ""].forEach(function(prefix) {
            element.style[prefix + key] = value;    
        }); 
        
        return element;
    };
    var $ = function(selector) {
        return document.querySelector(selector);
    };
    // 获取元素
    var eleStage = $("#stage"),
        range = $("#range"),
        piece = $(".piece"),
        translateZ = $("#translateZ");

    // 添加时间监听器
    range.addEventListener("change",function(){

        transform(piece,"translateZ("+this.value+"px)");
        translateZ.innerHTML = this.value;
    });
    console.log(range.value);
    transform(piece,"translateZ("+range.value+"px)");

    piece.style.backgroundColor = randomColor();
})();