CSS3如何查看获取scale缩放后的元素宽高?

代码如下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>text</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- <link href="css/style.css" rel="stylesheet"> -->
        <style type="text/css">
            *{
                margin:0;
                padding: 0;
            }
            html,body{
                height: 100%;
                width: 100%;
            }
            .fa{
                height: 100%;
                background-color:green;
            }
            .small{
                width: 100px;
                height: 100px;
                background-color: red;
            }
        </style>
    </head>
    <body>
        <div class="fa">
            <div class="small"></div>
        </div>
        <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                var faH=$(".fa").height();
                var faW=$(".fa").width();
                var smH=$(".small").height();
                var smW=$(".small").width();
                console.log("父盒子的高度:"+faH);
                console.log("父盒子的宽度:"+faW);
                var overviewheight=100;
                var overviewwidth=100;
                var scaleY=faH/overviewheight,
                    scaleX=faW/overviewwidth;
                console.log("Y的比例:"+scaleY+" X的比例:"+scaleX);
                $(".small").css("transform","scaleY("+scaleY+")"+"scaleX("+scaleX+")");
                console.log("子盒子的高度:"+smH);
                console.log("子盒子的宽度:"+smW);
            })
        </script>
    </body>
</html>

scale属性设置后,盒子还是占用原来的宽高,但实际上大小已经发生了变化,我试过用getBoundingClientRect()方法,发现获取到的数值不是这个元素的,不准确。
请问有更好的方法吗?

阅读 17.2k
3 个回答

我也遇到了这样的问题,解决方法是通过getBoundingClientRect()方法.
比如:
-js代码如下

    let Div = document.getElementsByTagName('div')
    Div.getBoundingClientRect().width;//获取div放大(缩小)后的宽度
    Div.getBoundingClientRect().height;//获取div放大(缩小)后的高度

-css代码如下

div {
  width: 100px;
  height: 100px;
  background: #ccc;
  text-align: center; 
  line-height: 100px;    
  -webkit-transform: scale(2);
}

取不到,你要你要想要,就缩放的时候算出来存起来.

transform是视觉上的变化,并没有改变页面元素的布局,它该占的位置还是被占着的,所以获取的还是元素本身的宽高,这个只有自己计算的,用js获取只能获取它本身的宽高(也就是获取的其实是它占着位置的上面的东西)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏