问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样用js触发css的过渡效果

发布网友 发布时间:2022-04-06 10:15

我来回答

2个回答

懂视网 时间:2022-04-06 14:37

JS+CSS3实现时钟效果(抖音)

本文讲述了抖音上很火的时钟效果是怎么实现的,主要用到原生态的 JS+CSS3,希望大家可以交流学习一下。

e5a454780b4435f723bea372368b4f3.png

具体不解释了,看注释:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
 html{
  background: #000;
  color: #666;
  font-size: 12px;
  overflow:hidden;
 }
 *{
  margin: 0;
  padding: 0;
 }
 span{
  display: block;
  float: left;
 }
 .on{
  color: #fff;
 }
 .wrapper{
  width: 200px;
  height: 200px;
  position: absolute;
  left:50%;
  top:50%;
  margin-top: -100px;
  margin-left: -100px;
 }
 .wrapper .timebox{
  position: absolute;
  width: 200px;
  height: 200px;
  top: 0;
  left:0;
  border-radius: 100%;
  transition: all 0.5s;
 }
 .timebox span{
  transition: all 0.5s;
  float: left;
 }
 .wrapper .timebox span{
  position: absolute;
  left:50%;
  top:50%;
  width: 40px;
  height: 18px;
  margin-top: -9px;
  margin-left: -20px;
  text-align: right;
 }

 </style>
</head>
<body>

<p id="wrapper">
 <p class="timebox yuebox" id="yueBox"></p>
 <p class="timebox riqiBox" id="riqiBox"></p>
 <p class="timebox hourbox" id="hourbox"></p>
 <p class="timebox minutebox" id="minutebox"></p>
 <p class="timebox secondbox" id="secondbox"></p>
</p>


<script>

 let wrapper = document.getElementById("wrapper");
 let yueBox = document.getElementById("yueBox");
 let riqiBox = document.getElementById("riqiBox");
 let hourbox = document.getElementById("hourbox");
 let minutebox = document.getElementById("minutebox");
 let secondbox = document.getElementById("secondbox");

 /*
 * 找所有的东西标签函数
 * */
 let findSiblings = function( tag ){
 let parent = tag.parentNode;
 let childs = parent.children;
 let sb = [];
 for(let i=0 ; i <= childs.length-1 ; i++){
  if( childs[i]!==tag){
  sb[sb.length] = childs[i];
  }
 }
 return sb ;
 };

 /*
 * 去掉所有兄弟的类
 * */
 let removeSiblingClass =function( tag ){
 let sb = findSiblings( tag );
 for(let i=0 ; i <= sb.length-1 ; i++){
  sb[i].className = "";
 }
 };

 /*
 * 初始化月份函数
 * */
 let initMonth = function(){
 for(let i=1; i<=12; i++){
  let span = document.createElement("span");
  span.innerHTML = i+"月";
  yueBox.appendChild( span );
 }
 };

 // 初始化日期
 let initDate = function(){
 for(let i=1; i<=31; i++){
  let span = document.createElement("span");
  span.innerHTML = i+"日";
  riqiBox.appendChild( span );
 }
 };

 // 初始化小时,分钟,秒
 let initHour = function(){
 for(let i=0; i<=23; i++){
  let h = i ;
  let span = document.createElement("span");
  if( h<10){
  h="0"+h;
  }
  span.innerHTML = h +"点";
  hourbox.appendChild( span );
 }
 };
 let initMinute = function(){
 for(let i=0; i<=59; i++){
  let f = i ;
  let span = document.createElement("span");
  if( f<10){
  f="0"+f;
  }
  span.innerHTML = f +"分";
  minutebox.appendChild( span );
 }
 };
 let initSecond = function(){
 for(let i=0; i<=59; i++){
  let miao = i ;
  let span = document.createElement("span");
  if( miao<10){
  miao="0"+miao;
  }
  span.innerHTML = miao +"秒";
  secondbox.appendChild( span );
 }
 };

 // 时间文字样式切换函数
 let changeTime = function(tag){
 tag.className = "on";
 removeSiblingClass( tag );
 };

 /*
 * 初始化日历函数
 * */
 let initRili = function(){
 initMonth(); // 初始化月份
 initDate(); // 初始化日期
 initHour(); // 小时
 initMinute();
 initSecond();
 };

 /*
 * 展示当前时间
 * 参数:mydate 时间对象
 * */
 let showNow = function( mydate ){

 let yue = mydate.getMonth() ;
 let riqi = mydate.getDate();
 let hour = mydate.getHours() ;
 let minute = mydate.getMinutes();
 let second = mydate.getSeconds();
 // 时间文字样式切换函数
 changeTime( yueBox.children[yue] );
 changeTime( riqiBox.children[riqi-1] );
 changeTime( hourbox.children[hour] );
 changeTime( minutebox.children[minute] );
 changeTime( secondbox.children[second] );

 };

 // 展示时间圆圈函数
 // tag:目标
 // num:数字数量
 // dis:圆圈半径
 let textRound = function(tag,num,dis){
 let span = tag.children ;
 for(let i=0 ; i<=span.length-1; i++){
  span[i].style.transform="rotate("+ (360/span.length)*i+"deg) translateX("+dis+"px)" ;
 }
 };
 /*
 * 旋转指定“圆圈”指定度数
 * */
 let rotateTag = function(tag , deg){
 tag.style.transform = "rotate("+deg+"deg)";
 };

 let main = function(){
 initRili(); // 初始化日历

 setInterval(function(){
  let mydate = new Date();
  showNow( mydate ); // 展示当前时间
 },1000);

 // n秒后,摆出圆形
 setTimeout(function(){
  wrapper.className = "wrapper";
  textRound(yueBox,12,40);
  textRound(riqiBox,31,80);
  textRound(hourbox,24,120);
  textRound(minutebox,60,160);
  textRound(secondbox,60,200);
  setInterval(function(){
  let mydate = new Date();
  rotateTag( yueBox , -30*mydate.getMonth());
  rotateTag( riqiBox , -360/31*(mydate.getDate()-1) );
  rotateTag( hourbox , -360/24*mydate.getHours());
  rotateTag( minutebox , -6*mydate.getMinutes());
  rotateTag( secondbox , -6*mydate.getSeconds());
  },1000)
 },6000)

 };
 main();
 
</script>

</body>
</html>

感谢大家的阅读,大家学会了吗?

本文转自:https://blog.csdn.net/weixin_42703239/article/details/105012665

推荐教程:《JS教程》

热心网友 时间:2022-04-06 11:45

用js触发css的过渡效果可以用impress.js实现。

以下例子实现了基于CSS3变化和过度效果:

$.jmpress('template', 'arraytemplate', {
   x: 100, y: 100, scale: 2,
   children: [
       { x: 0, y: 150, scale: 0.2 },
       { x: 0, y: 450, scale: 0.3 }
   ]
});

支持现代浏览器Chrome,Safari和Firefox支持.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
沙尘暴属于自然灾害吗 星配什么字好听男孩 女孩带星字叫什么名字好听又洋气 带星字优美人名 星字如何取名 带星字的名活泼的 非常潮流的星字名 成华区社保局地址 有什么平价又好用的防晒霜值得安利? 有哪些性价比比较高的物理防晒霜可以安利? 五棱柱怎么截成七边形 怎么做五棱柱 谁会做五棱柱 谁有做五棱柱的过程我急用啊!!!星期一数学课有用的啊啊啊啊啊 五棱柱怎么做?教给你几种平面截五棱柱的方法,快来学习一下 五棱柱的展开图怎么画,要具体方法 纸质正五棱锥怎么做 给你一张纸片,怎样折成五棱柱。试想一下,什么情况下不能折成(如下图) 怎么用纸制作“五棱锥”? 在纸上如何做五棱柱立体图形 如何做五棱柱 四面体,正方体,五棱柱的做法和步骤 怎样做五棱柱 五棱柱怎么做? 五棱柱怎么用纸做啊!! 梦见被蚂蟥咬然后我晒太阳把它晒死了 在爱奇艺下载的完整视频如何用手机来完成操作去掉商标? 怎么把在爱奇艺下载的视频保存到相册?手机端 请问手机屏幕上的爱奇艺下载的那个标志怎么消除 人教版五年级下册数学哪节内容做为公开课讲较好 五年级下册数学课的第一课 五年级下学期数学日记 一个五棱柱要剪开多少条棱才能完全展开? 一个玄幻小说,女主角叫龙浅浅 素描五棱柱怎么画, 还有透视 血婴修神的目录 五棱柱表示方式除了棱柱ABCDE-A&#39;B&#39;C&#39;D&#39;E&#39;还有什么方法? DNF鬼泣用这个名字好吗? 五棱柱怎么切成七棱柱? 求修真修神小说,拒绝复制,复制不给分 五棱柱的特征? 求一好听的DNF狱血魔神名字,要求与“血”字有关或“魔神”二字! 求一部玄幻小说名 社会主义核心价值观内容是什么? 社会主义核心价值观体现了什么? 社会主义核心价值观历史底蕴的集中体现是什么? 社会主义核心价值观的体现 中国特色社会主义核心价值观是什么? 社会主义的核心价值观有什么主要内容 社会主义核心价值观体现 社会主义核心价值观是什么? 社会主义核心价值观体系包括什么