用js写盒子移动(按钮点击移动)

方块和按钮

<button id="btn1">块1向右移动</button>
<button id="btn2">块1向左移动</button>
<button id="btn3">块2向右移动</button>
<button id="btn4">块2向左移动</button>
<hr>
<div class="c1"></div>
<div class="c2"></div>
<div class="line"></div>

css修饰


```css
<style type="text/css">
	div.c1 {
		width: 150px;
		height: 150px;
		background-color: deeppink;
		position:absolute;
	}
	div.c2 {
		width: 150px;
		height: 150px;
		background-color: gold;
		position: absolute;
		top:200px;
	}
	div.line {
		width: 0px;
		height: 1000px;
		position: absolute;
		left: 800px;
		border:1px solid red;
	}
</style> 

js添加功能

<script type="text/javascript">
	/*
		node   要移动的节点对象
		attr   要改变的属性
		target 移动到的目标值
		step 步进值  符号由 目标值 - 当前值 决定

        目标值   当前值
		0        500    =  负
		800      500    =  正
	*/
	// 获取块1
	let c1 = document.querySelector('div.c1')

	// 获取按钮1
	let btn1 = document.querySelector('#btn1')
	btn1.onclick = function(){
		move(c1, 'left', 800, 10, ()=>{
				move(c1, 'left', 0, 10, ()=>{
					move(c1, 'width', 800, 10, ()=>{
						move(c1, 'height', 400, 10)
					})
				})
		});
	}

	// 获取按钮2
	let btn2 = document.querySelector('#btn2')
	btn2.onclick = function(){
		move(c1, 'left', 0, 10);
	}

	// 获取按钮3
	let c2 = document.querySelector('div.c2')
	let btn3 = document.querySelector('#btn3')
	btn3.onclick = function(){
		move(c2, 'width', 800, 10);
	}
	document.querySelector('#btn4').onclick = function(){
		move(c2, 'width', 0, 10);
	}


	function move(node, attr, target, step, callback){

		clearInterval(node.hTime)
		// 当前位置 大于 目标值, 所以每次就是 减step
		if (getCur(node, attr) > target ) {
			step = -step;
		}
		node.hTime = setInterval(()=>{
			let newLeft = getCur(node,attr) + step
			// 减,比最小还小  加,比最大还大   就停止
			if (step<0 && newLeft<=target || step>0 && newLeft>=target) {
				newLeft = target;
				clearInterval(node.hTime)
				// undefined
				callback && callback();
			}
			node.style[attr] = newLeft + 'px'
		},50)
	}
	/*
		返回当前值
		getCur(c1, 'width')
		getComputedStyle(c1)['width']
		150px
	*/ 
	function getCur(node, attr){
		let val = getComputedStyle(node)[attr]
		return parseFloat(val);
	}
</script>

效果图

在这里插入图片描述
完成~

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用HTML、CSS和JavaScript来实现这个效果。以下是一个简单的实现方式: 首先,在HTML中添加一个按钮和一个盒子: ```html <button onclick="showBox()">点显示盒子</button> <div id="box"></div> ``` 然后,在CSS中设置盒子的样式: ```css #box { width: 100px; height: 100px; background-color: #ccc; position: absolute; bottom: 0; transition: transform 0.5s ease; } ``` 设置`position: absolute`可以让盒子相对于父容器进行定位,而`bottom: 0`可以让盒子始终处于父容器底部。`transition`属性用于设置盒子变换时的过渡效果。 最后,在JavaScript中编显示盒子盒子消失的代码: ```javascript function showBox() { var box = document.getElementById("box"); box.style.transform = "translateY(-100%)"; } ``` `getElementById`用于获取盒子元素,然后将`transform`属性设置为`translateY(-100%)`,即向上移动盒子高度的距离,实现盒子边向上边消失的效果。 完整的代码如下: ```html <!DOCTYPE html> <html> <head> <title>点按钮显示盒子</title> <style> #box { width: 100px; height: 100px; background-color: #ccc; position: absolute; bottom: 0; transition: transform 0.5s ease; } </style> <script> function showBox() { var box = document.getElementById("box"); box.style.transform = "translateY(-100%)"; } </script> </head> <body> <button onclick="showBox()">点显示盒子</button> <div id="box"></div> </body> </html> ``` 您可以将代码复制到HTML文件中,然后在浏览器中打开,点按钮即可看到盒子出现并向上边消失的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值