为了账号安全,请及时绑定邮箱和手机立即绑定

为什么marginLeft不能写在head下的style里面?

http://img1.sycdn.imooc.com//5837ee6d0001495b10320709.jpg

<!DOCTYPE html>
<html>
<head>
	<title>Promise animation</title>
	<meta charset="utf-8">
	<style type="text/css">
		.ball{
			width: 40px;
			height: 40px;
			border-radius: 50%;
			margin-left: 0px;
		}
		.ball_01{
			background: red;
		}
		.ball_02{
			background: yellow;
		}
		.ball_03{
			background: green;
		}
	</style>
</head>
<body>
	<div class="ball ball_01" style="margin-left: 0"></div>
	<div class="ball ball_02" style="margin-left: 0"></div>
	<div class="ball ball_03" style="margin-left: 0"></div>
</body>
<script type="text/javascript" src="node_modules/bluebird/js/browser/bluebird.js"></script>
<script type="text/javascript">
	window.onload=function () {
		var ball_01=document.querySelector(".ball_01");
	    var ball_02=document.querySelector(".ball_02");
	    var ball_03=document.querySelector(".ball_03");

		function animate(ball,distance,callback) {
			setTimeout(function(){
				var marginLeft = parseInt(ball.style.marginLeft,10);
				if(marginLeft === distance){
					callback&&callback();
				}else{
					if(marginLeft < distance){
						marginLeft++;
					}else{
						marginLeft--;
					}
					ball.style.marginLeft = marginLeft + "px";
					animate(ball,distance,callback);
				}
			}, 13);
		}

		// animate(ball_01,100,function(){
		// 	animate(ball_02,200,function(){
		// 		animate(ball_03,300,function(){
		// 			animate(ball_03,150,function(){
		// 				animate(ball_02,150,function(){
		// 					animate(ball_01,150,function(){
		// 						// 
		// 					})
		// 				})
		// 			})
		// 		})
		// 	})
		// })


		var Promise = window.Promise;
		function promiseAnmiate(ball,distance){
			return new Promise(function(resolve,reject){
				function _animate() {
					setTimeout(function(){
						var marginLeft = parseInt(ball.style.marginLeft,10);
						if(marginLeft === distance){
							resolve();
						}else{
							if(marginLeft<distance){
								marginLeft++;
							}else{
								marginLeft--;
							}
							ball.style.marginLeft = marginLeft + "px";
							_animate();
						}
					}, 13);
				}
				_animate();
			});
		}

		promiseAnmiate(ball_01,100)
		.then(function(){
			return promiseAnmiate(ball_02,200)
		})
		.then(function(){
			return promiseAnmiate(ball_03,300)
		})
		.then(function(){
			return promiseAnmiate(ball_03,150)
		})
		.then(function(){
			return promiseAnmiate(ball_02,150)
		})
		.then(function(){
			return promiseAnmiate(ball_01,150)
		})
	}
</script>
</html>


正在回答

2 回答

ball.style.marginLeft 拿到的是行内样式! style 只是你获取的这个 DOM节点 的一个属性而已(如果这个DOM节点 有 style 这个属性的话) 静下心来多巩固下基础吧。

0 回复 有任何疑惑可以回复我~
#1

精慕门8897441

并不是你说的,.style.marginLeft是可以修改外部写的样式的,你可以单独写一个函数试试,只修改margionLeft的值,但是在这个例子里不行,不知道怎么回事。
2016-12-20 回复 有任何疑惑可以回复我~
#2

hey自然

哥~看下dom相关的知识再过来说不是我说的这个样子
2016-12-20 回复 有任何疑惑可以回复我~

如果去掉div下的style,就不能运行,为什么会出现这种问题

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
进击Node.js基础(二)
  • 参与学习       76755    人
  • 解答问题       226    个

本教程带你攻破 Nodejs,让 JavaScript流畅运行在服务器端

进入课程

为什么marginLeft不能写在head下的style里面?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信