美文网首页
JS移动、旋转div

JS移动、旋转div

作者: 过桥 | 来源:发表于2017-02-04 18:14 被阅读428次

实现效果

JS叠加、移动、旋转div

实现方式对比

1、添加div
2、通过rotate插件实现旋转
3、通过键盘监听,添加移动事件
效果测试地址

初步代码示例

var e = event || window.event || arguments.callee.caller.arguments[0];
        if (e && (e.keyCode == 187 || e.keyCode == 107)) { // +
            //向右旋转5°
            var value = 5;
            if ($('.highlight').getRotateAngle() != "") {
                value = parseInt($('.highlight').getRotateAngle()) + 5;
            }
            $('.highlight').rotate({ animateTo: value });
        }
        else if (e && (e.keyCode == 189 || e.keyCode == 109)) { // -
            //向左旋转5°
            var value = -5;
            if ($('.highlight').getRotateAngle() != "") {
                value = parseInt($('.highlight').getRotateAngle()) - 5;
            }
            $('.highlight').rotate({ animateTo: value });
        }
        else if (e && e.keyCode == 37) {// <-
            //向左移动
            $(".highlight").css({ "left": $('.highlight').position().left - 5 });
        }
        else if (e && e.keyCode == 38) {// <-
            //向上移动
            $(".highlight").css({ "top": $('.highlight').position().top - 5 });
        }
        else if (e && e.keyCode == 39) {// <-
            //向右移动
            $(".highlight").css({ "left": $('.highlight').position().left + 5 });
        }
        else if (e && e.keyCode == 40) {// <-
            //向下移动
            $(".highlight").css({ "top": $('.highlight').position().top + 5 });
        }

发现问题

平移时显示正常,但是如果div旋转后,移动方向不正确,例如:无法下移。

问题原因

对比发现,旋转div后,通过 $('.highlight').position().left 获取与 实际标签中left不一致,如果div水平方向则正常,后换一种方式获取left、top解决。

修改后代码

var e = event || window.event || arguments.callee.caller.arguments[0];
        if (e && (e.keyCode == 187 || e.keyCode == 107)) { // +
            //向右旋转5°
            var value = 5;
            if ($('.highlight').getRotateAngle() != "") {
                value = parseInt($('.highlight').getRotateAngle()) + 5;
            }
            $('.highlight').rotate({ animateTo: value });
        }
        else if (e && (e.keyCode == 189 || e.keyCode == 109)) { // -
            //向左旋转5°
            var value = -5;
            if ($('.highlight').getRotateAngle() != "") {
                value = parseInt($('.highlight').getRotateAngle()) - 5;
            }
            $('.highlight').rotate({ animateTo: value });
        }
        else if (e && e.keyCode == 37) {// <-
            //向左移动
            $(".highlight").css({ "left": parseInt($('.highlight').css("left")) - 5 });
        }
        else if (e && e.keyCode == 38) {// <-
            //向上移动
            $(".highlight").css({ "top": parseInt($('.highlight').css("top")) - 5 });
        }
        else if (e && e.keyCode == 39) {// <-
            //向右移动
            $(".highlight").css({ "left": parseInt($('.highlight').css("left")) + 5 });
        }
        else if (e && e.keyCode == 40) {// <-
            //向下移动
            $(".highlight").css({ "top": parseInt($('.highlight').css("top")) + 5 });
        }

相关文章

  • JS移动、旋转div

    实现效果 JS叠加、移动、旋转div 实现方式对比 1、添加div2、通过rotate插件实现旋转3、通过键盘监听...

  • CSS3 @keyframes 规则

    使 div 元素匀速向下移动: 还可以有变形、缩放、旋转等动画

  • 2019-04-12定时器

    使用定时器是使图片上下移动 使用按钮控制的div 图片切换 js

  • JS键盘事件 长按停顿问题

    问题描述:用js的键盘事件控制一个div移动,当按下一个方向键不放,div会先停顿一下,然后才开始持续移动。(原因...

  • 键盘停顿问题

    问题描述:用js的键盘事件控制一个div移动,当按下一个方向键不放,div会先停顿一下,然后才开始持续移动。(原因...

  • JS键盘事件长按时的停顿问题

    问题描述:用js的键盘事件控制一个div移动,当按下一个方向键不放,div会先停顿一下,然后才开始持续移动。(原因...

  • 34three.js TransformControls

    TransformControls.js可以控制物体的移动旋转缩放等操作。使用也比较简单。 引入js文件 创建控制...

  • JS用键盘控制DIV移动

    键盘控制DIV移动需要用到onkeydown事件,当然也需要知道按键的键值keyCode,这样才能起效果。另外需要...

  • 遮罩旋转进场

    1.方块div平面旋转 代码 效果展示 2.封面div平面旋转 代码 效果展示 3.遮罩360°旋转进场 代码 效果展示

  • 验证码案例

    div js

网友评论

      本文标题:JS移动、旋转div

      本文链接:https://www.haomeiwen.com/subject/ofcsittx.html