动态时间交互

样式
在这里插入图片描述

css 部分

body{background: #000;}
*{margin: 0;padding: 0;}
i{
width: 5px;
height: 50px;
background: #fff;
opacity: 0;
display: block;
border-radius: 2px;
position: absolute;
transition: 1s;
box-shadow: 1px 0px 9px #0dc0e8, 1px 0px 12px #c5f7c2;
}
i.w{width: 57px;height: 5px;}
i:nth-child(2n){transition-delay:0.6s;transition: 0.4s;}
.div{perspective: 4000px;
position: absolute;
width: 100%;
height: 100%;}
.time{display: -webkit-box;
  display: -webkit-flex;
  display: -moz-flex;
  display: -ms-flexbox;
  display: flex;
  justify-content:space-between;
  align-items: center;transition: 0.5s;
  width: 1000px;margin: 0 auto;position: fixed;top: 50%;left: 0;margin-top: -119px;right: 0;}
.time .demo{transition: 1.5s;}
.time .demo:hover{transform: scale(1.2);}

.spot span{width: 10px;height: 10px;background: #fff;display: block;margin: 30px 0;animation: myfirst 1s ease-out 0s infinite alternate;box-shadow: 1px 0px 9px #0dc0e8,1px 0px 12px #09D2E8;}
@keyframes myfirst
{
0 {opacity: 1;}
100% {opacity: 0.6;}
}

.demo{position: relative;width: 115px;height: 238px;}
.demo i:nth-child(1){top: 11px;left: 0;}
.demo i:nth-child(3){top: 11px;right: 0;}
.demo i:nth-child(2){top: 62px;left: 0;}
.demo i:nth-child(4){top: 62px;right: 0;}
.demo i:nth-child(5){top: 124px;left: 0;}
.demo i:nth-child(7){top: 124px;right: 0;}
.demo i:nth-child(6){top: 176px;left: 0;}
.demo i:nth-child(8){top: 176px;right: 0;}
.demo i:nth-child(9){top: 0px;left: 0px;}
.demo i:nth-child(10){top: 0px;right: 0px;}
.demo i:nth-child(11){top: 115px;left: 0px;}
.demo i:nth-child(12){top: 115px;right: 0px;}
.demo i:nth-child(13){bottom: 0;left: 0px;}
.demo i:nth-child(14){bottom: 0;right: 0px;}

js部分

arr = {
				"arr0" : [1,3,2,4,5,6,7,8,9,10,13,14],
				"arr1" : [3,4,7,8],
				'arr2' : [3,4,9,10,11,12,13,14,5,6] ,
				"arr3" : [9,10,3,4,11,12,7,8,13,14],
				"arr4" : [1,2,11,12,3,4,7,8],
				"arr5" : [9,10,1,2,11,12,7,8,13,14],
				"arr6" : [9,10,1,2,11,12,5,6,7,8,13,14],
				"arr7" : [1,2,3,4,7,8,9,10],
				"arr8" : [1,2,3,4,5,6,7,8,9,10,11,12,13,14],
				"arr9" : [1,2,3,4,9,10,11,12,13,14,7,8],
			}
			
			


			 
			 function ss(){
				 var now = new Date();
				 var hour = now.getHours();//得到小时
				 var minu = now.getMinutes();//得到分钟
				 var sec = now.getSeconds();//得到秒
				 var s = sec%10
				 var s10 =parseInt(sec/10) 
				 var s_ar = "arr"+s
				 var s_ar10 = "arr"+s10
				 
				 var m = minu%10
				 var m10 =parseInt(minu/10) 
				 var m_ar = "arr"+m
				 var m_ar10 = "arr"+m10
				 
				 var h = hour%10
				 var h10 =parseInt(hour/10) 
				 var h_ar = "arr"+h
				 var h_ar10 = "arr"+h10
				 // console.log(sec,ar)
				 
				$(".demo").eq(5).attr("class","demo"+" "+("demo"+s))
				$(".demo").eq(4).attr("class","demo"+" "+("demo"+s10))
				
				$(".demo").eq(3).attr("class","demo"+" "+("demo"+s))
				$(".demo").eq(2).attr("class","demo"+" "+("demo"+s10))
				
				$(".demo").eq(1).attr("class","demo"+" "+("demo"+h))
				$(".demo").eq(0).attr("class","demo"+" "+("demo"+h10))
				
				$(".demo i").css({"opacity":"0","transform":"scale(0.7) translateX(30px)"})
				 
				
		
				// 秒
				for( let s = 0 ; s < arr[s_ar].length ; s++){
					$(".demo").eq(5).find("i").eq((arr[s_ar][s]-1)).css({"opacity":"1","transform":"scale(1)"})
					console.log()
				}
				
				for( let s = 0 ; s < arr[s_ar10].length ; s++){
					$(".demo").eq(4).find("i").eq((arr[s_ar10][s]-1)).css({"opacity":"1","transform":"scale(1)"})
					console.log()
				}
				
				// 分
				for( let s = 0 ; s < arr[m_ar].length ; s++){
					$(".demo").eq(3).find("i").eq((arr[m_ar][s]-1)).css({"opacity":"1","transform":"scale(1)"})
					console.log()
				}
				
				for( let s = 0 ; s < arr[m_ar10].length ; s++){
					$(".demo").eq(2).find("i").eq((arr[m_ar10][s]-1)).css({"opacity":"1","transform":"scale(1)"})
					console.log()
				}
				
				// 时
				for( let s = 0 ; s < arr[h_ar].length ; s++){
					$(".demo").eq(1).find("i").eq((arr[h_ar][s]-1)).css({"opacity":"1","transform":"scale(1)"})
					console.log()
				}
				
				for( let s = 0 ; s < arr[h_ar10].length ; s++){
					$(".demo").eq(0).find("i").eq((arr[h_ar10][s]-1)).css({"opacity":"1","transform":"scale(1)"})
					console.log()
				}

		
				 
				 
				  setTimeout(ss,1000);
			 }
			
			ss()
		
			
			$(document).mousemove(function(){
				var y = event.screenY
				var x = event.screenX
				var h = screen.availHeight
				var w = $("body").width()
		
				var num1 = -(y - h/2)/(h/2)*100
				if(num1 > 30){
					num1 = 30
				}
				 if(num1 < -30){
					num1 = -30
				}
				// 控制最大倾斜角度

				var num2 = (x - w/2)/(w/2)*100
				if(num2 > 8){
					num2 = 8
				}
				 if(num2 < -8){
					num2 = -8
				}
				
				$(".time").css("transform","rotateX("+ num1 +"deg)" +""+"rotateY("+ num2 + "deg)")
			
				
				
			}).mouseout(function(){
				$(".time").css("transform","rotateX("+0+"deg)"+" "+"rotateY("+0+"deg)")
			})

引入jq文件

以下是html部分

<div class="div">
			<div class="time">
				<!---->
				<div class="demo">
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
				</div>
				<div class="demo">
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
				</div>
				
				<div class="spot">
					<span></span>
					<span></span>
				</div>
				<!---->
				<div class="demo">
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
				</div>
				<div class="demo">
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
				</div>
				
				<div class="spot">
					<span></span>
					<span></span>
				</div>
				<!---->
				<div class="demo">
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
				</div>
				<div class="demo">
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
					<i class="w"></i>
				</div>
			</div>
		</div>

原理:通过每一秒调用刷新获取当前时间 匹配 json 展示时间样式

倾斜结合鼠标滑动改变 rotate 值

想要看到倾斜效果 用到 css3 perspective 属性调整视角

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值