千家信息网

怎么用纯CSS实现条纹错觉的动画效果

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,小编给大家分享一下怎么用纯CSS实现条纹错觉的动画效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!代码解读定义dom,容器中包含2个元素,分别代表2条轨道:居中显示:body{ma
千家信息网最后更新 2024年11月25日怎么用纯CSS实现条纹错觉的动画效果

小编给大家分享一下怎么用纯CSS实现条纹错觉的动画效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

  代码解读

  定义dom,容器中包含2个元素,分别代表2条轨道:

  

  

  

  

  居中显示:

  body{

  margin:0;

  height:100vh;

  display:flex;

  align-items:center;

  justify-content:center;

  background-color:#999;

  }

  定义容器尺寸和子元素的布局方式:

  .container{

  font-size:30px;

  width:calc(13em+0.5em);

  height:8em;

  display:flex;

  flex-direction:column;

  justify-content:space-between;

  }

  定义2个色值,一个亮的和一个暗的:

  .container{

  --dark:#222;

  --light:#ddd;

  }

  画出2条轨道的轮廓:

  .track{

  width:inherit;

  height:2em;

  border:1pxsolidvar(--dark);

  }

  为2条轨道的背景图案,图案是明暗相间的条纹,但第2条轨道要错半个格:

  .track{

  background:linear-gradient(

  90deg,

  var(--dark)50%,

  var(--light)50%

  );

  background-size:1em;

  }

  .track:nth-child(2){

  background-position:0.5em;

  }

  用伪元素画出2个矩形:

  .track{

  position:relative;

  display:flex;

  align-items:center;

  }

  .track::before{

  content:'';

  position:absolute;

  width:2em;

  height:0.8em;

  background-color:var(--light);

  }

  让这2个矩形在轨道上往复移动:

  .track::before{

  animation:move5slinearinfinitealternate;

  }

  @keyframesmove{

  from{

  left:0;

  }

  to{

  left:calc(100%-2em);

  }

  }

  此时,两个矩形看起来是一先一后地前进的,但实际上它们是在同一时刻开始并且以相同的速度在移动。接下来我们来揭秘真相。

  在dom中增加一个子元素,作为按钮;

  

  

  

  Showmethetruth

  

  设置按钮的样式:

  .toggle{

  order:-1;

  width:10em;

  height:2em;

  border:2pxsolidvar(--dark);

  border-radius:0.2em;

  font-size:0.5em;

  font-family:sans-serif;

  font-weight:bold;

  color:black;

  text-align:center;

  line-height:2em;

  cursor:pointer;

  user-select:none;

  }

  为按钮设置与轨道风格类似的背景,以及鼠标悬停效果:

  .toggle{

  background-image:linear-gradient(toright,#ddd50%,#99950%);

  background-size:1em;

  transition:0.5s;

  }

  .toggle:hover{

  background-position:5em;

  }

  增加一段点击按钮时触发的脚本,为轨道元素切换样式:

  let$toggle=document.getElementsByClassName('toggle')[0]

  let$tracks=Array.from(document.getElementsByClassName('track'))

  $toggle.addEventListener('click',function(){

  $tracks.forEach(track=>track.classList.toggle('highlights'))

  })

  终于,谜底就在切换样式之后被揭晓了:

  .track::before{

  box-sizing:border-box;

  border:solidvar(--dark);

  border-width:0;

  }

  .track.highlights::before{

  background-color:white;

  border-width:0.1em;

  }





看完了这篇文章,相信你对"怎么用纯CSS实现条纹错觉的动画效果"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

0