如何使用CSS 3制作闪烁的文本

HTML CSS

Sam神乐

2020-03-24

目前,我有以下代码:

@-webkit-keyframes blinker {
  from { opacity: 1.0; }
  to { opacity: 0.0; }
}

.waitingForConnection {
  -webkit-animation-name: blinker;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: cubic-bezier(.5, 0, 1, 1);
  -webkit-animation-duration: 1.7s;
}

它闪烁,但仅在“一个方向”闪烁。我的意思是,它只会淡出,然后以出现opacity: 1.0,然后再次淡出,再次出现,依此类推...

我希望它逐渐消失,然后从此渐隐“提升”到opacity: 1.0那可能吗?

第3231篇《如何使用CSS 3制作闪烁的文本》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

4个回答
ItachiGreen 2020.03.24

最近,但想添加一个具有更多关键帧的新代码...这是CodePen上的一个示例,因为内置代码段存在问题:

.block{
  display:inline-block;
  padding:30px 50px;
  background:#000;
}
.flash-me {
  color:#fff;
  font-size:40px;
  -webkit-animation: flash linear 1.7s infinite;
  animation: flash linear 1.7s infinite;
}

@-webkit-keyframes flash {
  0% { opacity: 0; } 
  80% { opacity: 1; color:#fff; } 
  83% { opacity: 0; color:#fff; } 
  86% { opacity: 1; color:#fff;}  
  89% { opacity: 0} 
  92% { opacity: 1; color:#fff;} 
  95% { opacity: 0; color:#fff;}
  100% { opacity: 1; color:#fff;}
}
@keyframes flash {
  0% { opacity: 0; } 
  80% { opacity: 1; color:#fff; } 
  83% { opacity: 0; color:#fff; } 
  86% { opacity: 1; color:#fff;}  
  89% { opacity: 0} 
  92% { opacity: 1; color:#fff;} 
  95% { opacity: 0; color:#fff;}
  100% { opacity: 1; color:#fff;}
}
<span class="block">
  <span class="flash-me">Flash Me Hard</span>
</span>

小小小宇宙 2020.03.24

将该alternate值用作animation-direction(并且您无需以这种方式添加任何keframe)。

alternate

动画应在每个循环中反转方向。反向播放时,动画步骤将向后执行。另外,定时功能也相反。例如,反向播放时将缓入动画替换为缓入动画。要确定是偶数还是奇数迭代的计数从1开始。

CSS

.waitingForConnection {
  animation: blinker 1.7s cubic-bezier(.5, 0, 1, 1) infinite alternate;  
}
@keyframes blinker { to { opacity: 0; } }

我删除了from关键帧。如果缺少它,它将从您为opacity元素上的animated property(在这种情况下)设置的值生成,或者如果您没有设置(在这种情况下也没有设置)默认值(1用于opacity)。

并且请不要仅使用WebKit版本。还要在其后添加无前缀的。如果只想编写更少的代码,请使用简写形式

伽罗理查德 2020.03.24

像旧<blink>的一样,获得纯“ 100%开启,100%关闭”眨眼的最佳方法是这样的:

.blink {
  animation: blinker 1s step-start infinite;
}

@keyframes blinker {
  50% {
    opacity: 0;
  }
}
<div class="blink">BLINK</div>

飞云 2020.03.24

更改持续时间和不透明度以适合。

.blink_text { 
    -webkit-animation-name: blinker;
    -webkit-animation-duration: 3s;
    -webkit-animation-timing-function: linear;
    -webkit-animation-iteration-count: infinite;
    -moz-animation-name: blinker;
    -moz-animation-duration: 3s;
    -moz-animation-timing-function: linear;
    -moz-animation-iteration-count: infinite;
    animation-name: blinker;
    animation-duration: 3s;
    animation-timing-function: linear; 
    animation-iteration-count: infinite; color: red; 
} 

@-moz-keyframes blinker {
    0% { opacity: 1.0; }
    50% { opacity: 0.3; }
    100% { opacity: 1.0; } 
}

@-webkit-keyframes blinker { 
    0% { opacity: 1.0; }
    50% { opacity: 0.3; }
    100% { opacity: 1.0; } 
} 

@keyframes blinker { 
    0% { opacity: 1.0; } 
    50% { opacity: 0.3; } 
    100% { opacity: 1.0; } 
}

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android