单击上\下\左\右按钮时如何在div中移动圆

莫兰

我需要通过单击按钮来移动圆圈。并且圆圈不应远离边界。

这仅适用于向左和向下按钮,但这不是使用边距的好方法。有一种方法可以更改位置相对于左\右\上\下而不是边距?

(function(){

    var button = document.getElementsByClassName("button");
    var circle = document.getElementById("circle");


    var down=0, up=0, left=0, right=0;

    for (var i = 0; i < button.length; i++) {
        button[i].addEventListener('click',function(e){
                var position = e.currentTarget.value;
            if(position==="down"){
                down+=5;
                circle.style.marginTop = down +"px";
            }
            if(position==="up"){
                up+=5;
                circle.style.marginBottom = up+'px';
            }
            if(position==="left"){
                left+=5;
                circle.style.marginRight = left+'px';
            }
            if(position==="right"){
                right+=5;
                circle.style.marginLeft = right+'px';
            }

            }
        )
    }


    }());
html, body {
  font-size: 62.5%;
}

.border{
  position: relative;
  overflow: hidden;
  float: left;
  width: 70% ;
  height: 50rem;
  border: 1rem black solid;
  margin-right: 1rem;
}

.sidebar{
  position: relative;
  float: left;
  border: 1rem black solid;
  width: 25% ;
  height: 50rem;
}

.buttons{
  position: relative;
  width: 25rem;
  height: 21rem;
  top: 9rem;
  left: 4rem;
}

.button{
  position: absolute;
  width: 7rem;
  height: 7rem;
}

.arrow{
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

.arrow-up{
  border-left: 12px solid transparent;
  border-right: 12px solid transparent;
  border-bottom: 16px solid black;
}

.arrow-right{
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
  border-left: 16px solid black;
}

.arrow-left{
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
  border-right:16px solid black;
}

.arrow-down{
  border-left: 12px solid transparent;
  border-right: 12px solid transparent;
  border-top: 16px solid black;
}

.down{
  bottom: 0;
  left: 9rem;
}

.left{
  top: 7rem;
  left: 0;
}


.right{
  top: 7rem;
  right: 0;
}

.up{
  top: 0;
  left: 9rem;
}

.reset{
  position: relative;
  top: 12rem;
  width: 10rem;
  height: 4rem;
  left: 12rem;
}

#circle{
  position: relative;
  border-radius: 50%;
  width: 150px;
  height: 150px;
  background:blue;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
<div class="border">

    <div id="circle"></div>

</div>

<div class="sidebar">

    <div class="buttons">
        <button class="button up"  value="up"><span class="arrow-up arrow"></span></button>
        <button class="button down"  value="down"><span class="arrow-down arrow"></span></button>
        <button class="button right"  value="right"><span class="arrow-right arrow"></span></button>
        <button class="button left"  value="left"><span class="arrow-left arrow"></span></button>
    </div>

    <button class="reset">Reset</button>

</div>

胡安·埃尔弗斯(Juan Elfers)

您只需对JavaScript代码进行一些更改:

    (function(){

    var button = document.getElementsByClassName("button");
    var circle = document.getElementById("circle");

    var top=50, left=50, perStep = 2;

    for (var i = 0; i < button.length; i++) {
        button[i].addEventListener('click',function(e){

            var position = e.currentTarget.value;

            switch(position){
                case "up": top-=perStep; break;
                case "down": top+=perStep; break;
                case "left": left-=perStep; break;
                case "right": left+=perStep; break;
            }

            if(top < 0)
                top = 0;
            if(top > 100)
                top = 100;

            if(left < 0)
                left = 0;
            if(left > 100)
                left = 100;

            circle.style.top = top+'%';
            circle.style.left = left+'%';
        });
    }

}());

除了更改边距,您最好更改顶部和左侧css属性。

编辑:更改if语句用于switch

edit2:现在不会超出国界

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

移动对象时,如何最好地组合方向性运动(上下左右,上下左右...)?

来自分类Dev

当拖放 div 行在 jQuery 中移动时如何禁用按钮

来自分类Dev

使用javascript上下左右移动框

来自分类Dev

如何在文本框中显示 JSON 条目并在单击按钮时在字符串中移动?

来自分类Dev

如何在单击时垂直移动div

来自分类Dev

如何在pygame中移动时射击

来自分类Dev

设置上下左右的像素大小(分屏)

来自分类Dev

上下左右比例着色器

来自分类Dev

单击“向上”和“向下”按钮时,如何使边框上下移动?

来自分类Dev

如何在搜索栏中移动搜索按钮?

来自分类Dev

如何在18.04中移动窗口控制按钮

来自分类Dev

是否可以使用CSS3动画上下左右无限滚动地上下移动图像?

来自分类Dev

如何左右移动按钮?

来自分类Dev

如何在单击按钮时使用模板更改div的内容?

来自分类Dev

如何在单击按钮时将其定位到静态div?

来自分类Dev

如何在单击按钮时滚动div标签

来自分类Dev

如何在按钮单击时显示引导折叠 div?

来自分类Dev

如何防止单击时按钮移动?

来自分类Dev

如何防止单击时按钮移动?

来自分类Dev

如何在拖放事件中移动时绘制控件

来自分类Dev

如何在按键时连续在pygame中移动表面?

来自分类Dev

如何在滚动上左右移动div?

来自分类Dev

画布在圆中移动对象

来自分类Dev

如何在jQuery中单击按钮时显示相对于按钮位置的div

来自分类Dev

单击按钮时如何淡出div?

来自分类Dev

如何仅在单击按钮时显示div

来自分类Dev

单击特定按钮时如何显示div,

来自分类Dev

单击javascript按钮移动div

来自分类Dev

旋转div时左右移动CSS

Related 相关文章

热门标签

归档