CSS3 transform matrix矩阵与镜像对称实例页面
回到相关文章 »代码:
HTML代码:
<p id="matrixDetail">目前属性值为:matrix(1,0,0,1,0,0)</p> <div class="matrix_image"> <div id="matrixLine" class="matrix_line"></div> <input type="text" id="matrixInput" class="matrix_input" autocomplete="off" placeholder="输入角度确定镜像对称轴" /> <img id="matrixImage" src="/image/study/s/s256/mm1.jpg" width="256" height="191" /> </div>
JS代码:
(function() { var $ = function(selector) { return document.querySelector(selector); }; var $css3Transform = function(element, value) { var arrPriex = ["O", "Ms", "Moz", "Webkit", ""], length = arrPriex.length; for (var i=0; i < length; i+=1) { element.style[arrPriex[i] + "Transform"] = value; } }; var eleDetail = $("#matrixDetail"), eleInput = $("#matrixInput"), eleLine = $("#matrixLine"), eleImage = $("#matrixImage"); if (eleDetail && eleInput && eleImage) { eleInput.addEventListener("change", function() { var value = parseInt(this.value, 10); if (value) { $css3Transform(eleLine, "rotate("+ value +"deg)"); // 确认对称线 var k = Math.tan( -1 * value * Math.PI / 180), ux = 1 / Math.sqrt(1 + k * k), uy = k / Math.sqrt(1 + k * k); if (k > 1000000) { ux = 0, uy = 1; } else if (k < -1000000) { ux = 0, uy = -1; } var valTransform = "matrix("+ (2*ux*ux-1).toFixed(6) +","+ (2*ux*uy).toFixed(6) +","+ (2*ux*uy).toFixed(6) +","+ (2*uy*uy-1).toFixed(6) +",0,0)"; eleDetail.innerHTML = '目前属性值为:' + valTransform; $css3Transform(eleImage, valTransform); } else { this.value = ""; } }); } } })();
效果:
目前属性值为:matrix(1,0,0,1,0,0)