扇形导航

今天刚学习了CSS 3的过度属性和2D变换,课后做了一个简单的小练习。

CSS:

<style>
			*{
				margin: 0;
			}
			.wrap{
				position: fixed;
				width: 50px;
				height: 50px;
				right: 20px;
				bottom: 20px;
			}
			.wrap img{
				position: absolute;
				transition: 1s all;
				left: 0;
				top: 0;
			}
			.home{
				width: 50px;
				height: 50px;
				background: url(img/home.png) no-repeat;
				position: absolute;
				left: 0;
				top: 0;
				transition: 1s all;
				/*-webkit-transform: rotate(360deg);*/
			}
		</style>

这段代码-webkit-transform: rotate(360deg);中的rotate就是旋转的意思,里面的参数就是旋转的角度。

transform属性让元素在一个坐标系统中变形,包含了一系列变形函数,可以移动,旋转和缩放元素。

transform:none|<transform-function>

可用于内联元素和块元素。其默认值为none,表示元素不进行变形。属性值transform-function,表示一个或多个变形函数,以空格分开。例如rotate,scale,translate等。需要注意的时,在transform中使用过多个transform-function时却需要用空格隔开。

HTML:

<div class="wrap" id="wrap">
			<img src="img/clos.png" />
			<img src="img/full.png" />
			<img src="img/open.png" />
			<img src="img/prev.png" />
			<img src="img/refresh.png" />
			
			<div class="home" id="home">
				
			</div>
			
		</div>

对于命名的格式我也需要多去学习,多去看。

JS:

<script>
			var oHome = document.getElementById("home")
			var oImg = document.getElementById("wrap").getElementsByTagName("img")
			var onOff = true
			var iR = -150
			oHome.onclick = function(){
				if(onOff){
					this.style.webkitTransform = "rotate(360deg)"
					for (var i=0;i<oImg.length;i++) {
						var iLt = toChage(iR,90/4*i)
//						console.log(iLt)
						oImg[i].style.left = iLt.left+"px"
						oImg[i].style.top = iLt.top+"px"
						oImg[i].style.webkitTransform = "rotate(-720deg)"
					}
					
					
					onOff = false
				}else {
					this.style.webkitTransform = "rotate(0deg)"
					for (var i=0;i<oImg.length;i++) {
						
						oImg[i].style.transition = "0.5s "+(oImg.length-1-i)*100+"ms"
//						console.log(oImg[i].style.transition)
						oImg[i].style.left = 0+"px"
						oImg[i].style.top = 0+"px"
						oImg[i].style.webkitTransform = "rotate(-720deg)"
					}
					
					
					
					onOff = true
				}
			}
			
			function toChage(iR,iRotate){
				var l = Math.round(Math.sin(iRotate/180*Math.PI)*iR)
				var t = Math.round(Math.cos(iRotate/180*Math.PI)*iR)
				return {
					left:l,
					top:t
				}
			}
			
			
		</script>

这里的toChage函数是为了求出每张图片的出现的位置,其中IR是半径,IRotate是角度的意思,通过sin,cos求出他们的left和top值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值