Dans l'article précédent "Vous apprendre étape par étape comment utiliser CSS3 pour implémenter des effets dynamiques de survol et de clignotement des boutons", nous avons présenté la méthode d'utilisation de CSS3 pour ajouter des effets dynamiques aux boutons et obtenir une animation d'ombre clignotante et de survol des boutons. effet. Intéressé Vous pouvez en apprendre davantage ~
Aujourd'hui, cet article partagera avec vous un effet d'animation de bordure. Voyons comment utiliser CSS3 pour obtenir l'effet d'animation de l'ombre de bordure s'étendant vers l'extérieur.
Jetons d'abord un coup d'œil aux rendus :
Étudions comment obtenir cet effet :
Créez d'abord la partie HTML et définissez un conteneur div
pour contenir du texte Texte : div
容器,包含文本文字:
<div id="box"> 编程是为那些有不同想法的人准备的。。。<br /> 对于那些想要创造伟大事物并愿意改变世界的人。 </div>
然后开始定义css样式来进行修饰:调整布局样式、背景颜色、div居中对齐、字体颜色
body { display: flex; align-items: center; justify-content: center; height: 100vh; background: #00ac69; } #box { font-family: Arial; font-size: 18px; line-height: 30px; font-weight: bold; color: white; border: 2px solid; padding: 15px; }
直角不好看,我们可以使用border-radius来将边框的四个角设置为圆角
#box { border-radius: 10px; }
下面就是最关键的,创建影向外扩散的动画特效:我们使用animation和@keyframes来实现
首先把 animation 绑定到#box元素上,使用animation属性 为@keyframes动画规定名称、设置完成动画所花费的时间、动画的速度曲线。
#box { animation: animated-border 1.5s infinite; }
然后就是利用@keyframes来设置动画每一帧的动作了
这里是设置动画刚开始(0%{})时,边框阴影为box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4);
;然后当动画完成(100%{})时,边框阴影为box-shadow: 0 0 0 20px rgba(255, 255, 255, 0);
,阴影距离变大、颜色变为透明。
@keyframes animated-border { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4); } 100% { box-shadow: 0 0 0 20px rgba(255, 255, 255, 0); } }
OK,大功告成!下面附上完整代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style type="text/css"> body { display: flex; align-items: center; justify-content: center; height: 100vh; background: #00ac69; } #box { font-family: Arial; font-size: 18px; line-height: 30px; font-weight: bold; color: white; border: 2px solid; padding: 15px; border-radius: 10px; animation: animated-border 1.5s infinite; } @keyframes animated-border { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4); } 100% { box-shadow: 0 0 0 20px rgba(255, 255, 255, 0); } } </style> </head> <body> <div id="box"> 编程是为那些有不同想法的人准备的。。。<br /> 对于那些想要创造伟大事物并愿意改变世界的人。 </div> </body> </html>
最后给大家介绍一下关键属性animation
和@keyframes
:
animation 属性是一个简写属性,可以在一个声明中设置多个动画属性:
animation-name:指定要绑定到选择器的关键帧的名称 animation-duration:动画指定需要多少秒或毫秒完成 animation-timing-function:设置动画将如何完成一个周期 animation-delay:设置动画在启动前的延迟间隔。 animation-iteration-count:定义动画的播放次数。 animation-direction:指定是否应该轮流反向播放动画。 animation-fill-mode:规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。 animation-play-state:指定动画是否正在运行或已暂停。
@keyframes
/* 定义动画*/ @keyframes 动画名称{ /* 样式规则*/ } /* 将它应用于元素 */ .element { animation-name: 动画名称(在@keyframes中已经声明好的); /* 或使用动画简写属性*/ animation: 动画名称 1s ... }
Ensuite, commencez à définir les styles CSS à modifier
: ajustez le style de mise en page, la couleur d'arrière-plan, l'alignement du centre div, la couleur de la police@keyframes animated-border { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4); } 100% { box-shadow: 0 0 0 20px rgba(255, 255, 255, 0); } }
box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4);
; puis lorsque l'animation est terminée (100%{}), la bordure l'ombre est box-shadow: 0 0 0 20px rgba(255, 255, 255, 0);
, la distance de l'ombre devient plus grande et la couleur devient transparente. animation
et @keyframes
: 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!