用户坐标系和最初坐标系

用户坐标系和最初坐标系

http://img1.sycdn.imooc.com//climg/5d4f7b01000122d708760508.jpg

  1. 如果没设置cx和cy,旋转点究竟是元素的左上角还是画布的左上角,用户坐标系的原点是元素的左上角,难道元素是围绕自己的左上角旋转吗,我以为它是围绕最初坐标系的原点旋转啊。

  2. 如果设置了cx和cy,是从画布左上角偏移还是从元素自己的左上角偏移?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
卡布琦诺 2019-08-13 20:32:43

这里老师通过两个效果案例来帮你演示过程,帮助同学理解:

(1)不设置旋转中心

代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
    * {
        padding: 0;
        margin: 0;
    }

    .box {
        width: 100px;
        height: 100px;
        background: #ccc;
        margin: 0 auto;
    }
    </style>
</head>
<body>
    <div class="box">
        <svg>
            <!-- 绘制一个画布原点标志 -->
            <circle r="2" cx="0" cy="0" fill="red" stroke-width="0"></circle>
            <g id="rect2">
                <!-- 绘制元素 -->
                <rect x="10" y="10" width="50" height="50" fill="none"></rect>
                <!-- 绘制一个元素旋转中心点标志 -->
                <circle r="2" cx="30" cy="30" fill="#000" stroke-width="0"></circle>
            </g>
            <use xlink:href="#rect2" transform="rotate(0)" fill="none" stroke="#14F15D" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(15)" fill="none" stroke="red" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(30)" fill="none" stroke="blue" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(45)" fill="none" stroke="yellow" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(60)" fill="none" stroke="pink" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(75)" fill="none" stroke="green" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(90)" fill="none" stroke="purple" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(105)" fill="none" stroke="orange" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(120)" fill="none" stroke="brown" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(135)" fill="none" stroke="magenta" stroke-width="4" opacity="0.5"></use>
            <!-- 设置旋转中心 -->
        </svg>
    </div>
</body>
</html>

元素旋转效果如下图:

http://img1.sycdn.imooc.com//climg/5d52ad210001422a04400310.jpg

2、设置旋转中心

代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
    * {
        padding: 0;
        margin: 0;
    }
    .box {
        width: 100px;
        height: 100px;
        background: #ccc;
        margin: 0 auto;
    }
    </style>
</head>
<body>
    <div class="box">
        <svg>
            <!-- 绘制一个画布原点标志 -->
            <circle r="2" cx="0" cy="0" fill="red" stroke-width="0"></circle>
            <g id="rect2">
                <!-- 绘制元素 -->
                <rect x="10" y="10" width="50" height="50" fill="none"></rect>
                <!-- 绘制一个元素旋转中心点标志 -->
                <circle r="2" cx="30" cy="30" fill="#000" stroke-width="0"></circle>
            </g>
            <use xlink:href="#rect2" transform="rotate(0,30,30)" fill="none" stroke="#14F15D" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(15,30,30)" fill="none" stroke="red" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(30,30,30)" fill="none" stroke="blue" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(45,30,30)" fill="none" stroke="yellow" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(60,30,30)" fill="none" stroke="pink" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(75,30,30)" fill="none" stroke="green" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(90,30,30)" fill="none" stroke="purple" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(105,30,30)" fill="none" stroke="orange" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(120,30,30)" fill="none" stroke="brown" stroke-width="4" opacity="0.5"></use>
            <use xlink:href="#rect2" transform="rotate(135,30,30)" fill="none" stroke="magenta" stroke-width="4" opacity="0.5"></use>
            <!-- 设置旋转中心 -->
        </svg>
    </div>
</body>
</html>

元素旋转效果如下图:

http://img1.sycdn.imooc.com//climg/5d52ad6600019a2d04400310.jpg

由此得出,当不设置旋转中心的时候,是根据画布的左上角(画布的圆点)进行旋转的

希望可以帮到你,同学也可以自己测试一点代码哦,如果还有疑问,可再次提问,祝学习愉快!

  • 提问者 光aaaaand影 #1
    请问老师,画布的左上角是最初坐标系的原点吗?因为ppt中说是围绕用户坐标系原点,所以扰得我有点晕
    2019-08-16 09:22:22
一路电光带火花 2019-08-12 19:25:58

应该就是用户坐标系,你看下这个。https://www.bbsmax.com/A/o75NOL4PdW/

好帮手慕夭夭 2019-08-11 13:49:17

你好同学,在本节课最后老师讲到了哦。SVG中,默认旋转是根据画布的左上角。

即没有设置cx和cy (旋转中心点),默认是围绕画布的左上角旋转。

http://img1.sycdn.imooc.com//climg/5d4fabf80001a96d03740200.jpg

如果想要让元素围绕元素的中心点旋转,那么需要设置cx和cy (旋转中心点)。

即设置cx和cy (旋转中心点),是围绕元素自己的中心旋转。达到与css中一样的旋转效果。

http://img1.sycdn.imooc.com//climg/5d4fac290001c9ce03530201.jpg

祝学习愉快,望采纳。

  • 提问者 光aaaaand影 #1
    那么,如果没有设置cx和cy,元素就是围绕最初坐标系的原点旋转,而不是用户坐标系,对吗老师
    2019-08-12 17:56:04
  • 提问者 光aaaaand影 #2
    没看懂这位同学的回答,还是请老师解答一下吧
    2019-08-13 08:52:19
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师