我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用css3实现走马灯效果

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用css3实现走马灯效果

本篇内容主要讲解“怎么用css3实现走马灯效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用css3实现走马灯效果”吧!

纯css3实现了一个正六边形的走马灯效果,记录一下css3动画的学习情况,效果如下:

怎么用css3实现走马灯效果

主要用到的css3技术有:keyframes、perspective、perspective-origin、transform(translate、rotate)、animation、transform-origin,另外加一点平面几何知识(计算间距、角度啥的),详细过程如下:

首先设计一下要显示的布局(俯视图),途中垂直的线为辅助线,计算偏移量时需要用的:

怎么用css3实现走马灯效果

红色框框为旋转面(即走马灯效果的结构最终以该面的中点为旋转轴旋转的),六个面也都是基于这个面做的布局,先看红框下面的三个面,左侧的面原本在蓝色线处,通过旋转到达绿色线处,右边同理,中间的面只需要在Z轴方向移动二分之根号三个边长的距离即可,所有的面均通过偏移和旋转的方式达到上图的结构,需要注意的是要保证有图案的面(本例中使用的是文字,思路一致)要向外,比如上面中间的面,在Z轴向外偏移二分之根号三个边长的距离之后还要以中点为圆心旋转180°,所有的面同理易得。在此过程中需要牢记的一点技术是:三维坐标系中,从坐标原点出发,向着坐标轴的正方向看去,逆时针旋转时rotate(X/Y/Z)的值为正数,顺时针旋转时,rotate(X/Y/Z)值为负数。

设置结构:一个3D场景、一个走马灯的旋转面和走马灯的六个面:

代码如下:


<div class="wapper">        <!--场景-->
   <div class="rotate">   <!--容器-->
       <div class="item itemOne">1</div>  <!--六个面-->
       <div class="item itemTwo">2</div>
       <div class="item itemThree">3</div>
       <div class="item itemFour">4</div>
       <div class="item itemFive">5</div>
       <div class="item itemSix">6</div>
   </div>        
</div>

设置3D场景:

代码如下:


.wapper{
   -webkit-perspective:800;    
   -webkit-perspective-origin:50% -100%;    
   width:400px;
   height:300px;
   margin:100px auto;
}

设置旋转面:

代码如下:


@-webkit-keyframes rotation{      
   0%{-webkit-transform:rotateY(0deg);}    
   100%{-webkit-transform:rotateY(-360deg);}
}
.rotate{
   -webkit-transform-style:preserve-3d;    
   -webkit-animation: rotation 6s infinite;  
   -webkit-animation-timing-function: linear;  
   -webkit-transform-origin:center;      
   width:100%;
   height:100%;
   position:relative;  
}

对六个面除了位置之外的通用样式做设置:

代码如下:


.item{
   -webkit-transform-origin:center;  
   width:198px;
   height:300px;
   position:absolute;  
   background:none;
   text-align:center;
   line-height:300px;
}

分别设置六个面的位置,以一号为例(上面结构图中红框下面左边绿色线标注的面),所有的数值均需要经过几何计算得来:

代码如下:


.itemOne{
   left:-50px;
   -webkit-transform:translateZ(87px) rotateY(-60deg);  
   background:#f00;
}

在鼠标悬浮在该结构上时动画停止:

代码如下:


.rotate:hover{
   -webkit-animation-play-state:paused;  
}

本例子只有在webkit内核的浏览器中可以查看效果,如需兼容其他现代浏览器,需添加 -moz- 等前缀,完整代码如下:

代码如下:


<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>Animation Test</title>
   <style>
   *{margin:0;padding:0;}
   @-webkit-keyframes rotation{    
       0%{-webkit-transform:rotateY(0deg);}    
       100%{-webkit-transform:rotateY(-360deg);}
   }
   .wapper{
       -webkit-perspective:800;
       -webkit-perspective-origin:50% -100%;
       width:400px;
       height:300px;
       margin:100px auto;
   }
   .rotate{
       -webkit-transform-style:preserve-3d;
       -webkit-animation: rotation 6s infinite;
       -webkit-animation-timing-function: linear;
       -webkit-transform-origin:center;
       width:100%;
       height:100%;
       position:relative;
   }
   .item{
       -webkit-transform-origin:center;
       width:198px;
       height:300px;
       position:absolute;
       background:none;
       text-align:center;
       line-height:300px;
   }
   .itemOne{
       left:-50px;
       -webkit-transform:translateZ(87px) rotateY(-60deg);
       background:#f00;
   }
   .itemTwo{
       left:100px;
       -webkit-transform:translateZ(173px);
       background:#ff0;
   }
   .itemThree{
       left:250px;
       -webkit-transform:translateZ(87px) rotateY(60deg);
       background:#0ff;        
   }
   .itemFour{
       left:250px;
       -webkit-transform:translateZ(-87px) rotateY(120deg);    
       background:#0f0;
   }
   .itemFive{
       left:100px;
       -webkit-transform:translateZ(-173px) rotateY(180deg);
       background:#0ff;
   }
   .itemSix{
       left:-50px;
       -webkit-transform:translateZ(-87px) rotateY(-120deg);
       background:#00f;
   }
   .rotate:hover{
       -webkit-animation-play-state:paused;
   }
   </style>
</head>
<body>
   <div class="wapper">
       <div class="rotate">
           <div class="item itemOne">1</div>
           <div class="item itemTwo">2</div>
           <div class="item itemThree">3</div>
           <div class="item itemFour">4</div>
           <div class="item itemFive">5</div>
           <div class="item itemSix">6</div>
       </div>        
   </div>
</body>
</html>

到此,相信大家对“怎么用css3实现走马灯效果”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用css3实现走马灯效果

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

jquery如何实现走马灯特效

本文小编为大家详细介绍“jquery如何实现走马灯特效”,内容详细,步骤清晰,细节处理妥当,希望这篇“jquery如何实现走马灯特效”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。话不多说,先上大致效果:html代
2023-06-29

vue+animation怎么实现跑马灯效果

这篇文章主要讲解了“vue+animation怎么实现跑马灯效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue+animation怎么实现跑马灯效果”吧!1、单行显示,每行只显示一条效
2023-06-29

Android中怎么用TextView实现跑马灯效果

这篇“Android中怎么用TextView实现跑马灯效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android中怎么
2023-06-29

android中怎么利用TextView实现跑马灯效果

这篇文章给大家介绍android中怎么利用TextView实现跑马灯效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、要点设置四个属性android:singleLine="true"android:ellipsi
2023-05-31

CSS3中transition transform如何实现简单的跑马灯效果

这篇文章将为大家详细讲解有关CSS3中transition transform如何实现简单的跑马灯效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。思考过程html
2023-06-08

怎么在Android中利用TextView实现跑马灯效果

怎么在Android中利用TextView实现跑马灯效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MainActivitypackage com.example.jun
2023-06-15

Vue如何实现跑马灯效果

这篇文章主要介绍Vue如何实现跑马灯效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、跑马灯效果说明:单击"应援"按钮文字向左飘动,再单击"暂停"按钮停止当前飘动2、完整代码 (注意:代码中需要引入vue.js文
2023-06-25

编程热搜

目录