当前位置: 首页 > 网站开发 > 正文

JS解析CSS的transform的scale和rotate

妙网小编 发表于2016年11月28日 22:45
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style>
#divTransform {
    margin: 30px;
    width: 200px;
    height: 100px;
    background-color: yellow;
    /* Rotate div */
    transform: rotate(9deg);
    -ms-transform: rotate(9deg);
    /* Internet Explorer */
    -moz-transform: rotate(9deg);
    /* Firefox */
    -webkit-transform: rotate(9deg);
    /* Safari 和 Chrome */
    -o-transform: rotate(9deg);
    /* Opera */
}
</style>

<body>
    <div id="divTransform">
    </div>
</body>
<script>
var el = document.getElementById("divTransform");
var st = window.getComputedStyle(el, null);
var tr = st.getPropertyValue("-webkit-transform") ||
    st.getPropertyValue("-moz-transform") ||
    st.getPropertyValue("-ms-transform") ||
    st.getPropertyValue("-o-transform") ||
    st.getPropertyValue("transform") ||
    "FAIL";

// With rotate(30deg)...
// matrix(0.866025, 0.5, -0.5, 0.866025, 0px, 0px)
console.log('Matrix: ' + tr);

// rotation matrix - http://en.wikipedia.org/wiki/Rotation_matrix

var values = tr.split('(')[1].split(')')[0].split(',');
var a = values[0];
var b = values[1];
var c = values[2];
var d = values[3];

var scale = Math.sqrt(a * a + b * b);

console.log('Scale: ' + scale);

// arc sin, convert from radians to degrees, round
var sin = b / scale;
// next line works for 30deg but not 130deg (returns 50);
// var angle = Math.round(Math.asin(sin) * (180/Math.PI));
var angle = Math.round(Math.atan2(b, a) * (180 / Math.PI));

console.log('Rotate: ' + angle + 'deg');
</script>

</html>

本文标签: 网站制作网站建设HTMLJS
本文标题: JS解析CSS的transform的scale和rotate
本文链接: https://www.mwkj.net/m/?post=632

随机文章推荐 收藏本文

共有5136阅 / 0我要评论
  1. 还没有评论呢,快抢沙发~

发表你的评论吧返回顶部

!评论内容需包含中文

请勾选本项再提交评论