#css #animation #keyframe
#css #Анимация #ключевой кадр
Вопрос:
На моем веб-сайте есть простая анимация теневых блоков (встроенная в Elementor, WordPress). Анимация отлично работает в Chrome, но в Safari она создает эту странную квадратную анимацию (как для мобильных устройств, так и для ноутбуков):
Это CSS, который я использовал для создания анимации теней в ящиках. Не могли бы вы сказать мне, что я делаю не так?
Спасибо!
.hero_button_homepage svg{
border-radius: 150px!important;
animation: pulse-orange 2s infinite!important;
width:60px;
height:60px;
border-color: red;
}
@keyframes pulse-orange {
0% {
box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-webkit-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-moz-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-webkit-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-moz-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
}
}
@-webkit-keyframes pulse-orange {
0% {
box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-webkit-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-moz-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-webkit-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-moz-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
}
}
@-moz-keyframes pulse-orange {
0% {
box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-webkit-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-moz-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-webkit-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-moz-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
}
}
@-o-keyframes pulse-orange {
0% {
box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-webkit-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-moz-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-webkit-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-moz-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
}
}
<div class="hero_button_homepage">
<div class="elementor-widget-container">
<div class="elementor-icon-box-wrapper">
<div class="elementor-icon-box-icon">
<a class="" href="">
<svg xmlns="http://www.w3.org/2000/svg" width="86" height="86" viewBox="0 0 86 86" fill="none"><path d="M57.5 43.866L38 55.1244C37.3333 55.5093 36.5 55.0281 36.5 54.2583L36.5 31.7417C36.5 30.9719 37.3333 30.4907 38 30.8756L57.5 42.134C58.1667 42.5189 58.1667 43.4811 57.5 43.866Z" stroke="#F9F6F1" stroke-width="2"></path><circle cx="43" cy="43" r="42" stroke="#F9AC66" stroke-width="2" stroke-linecap="round"></circle></svg> </a>
</div>
<div class="elementor-icon-box-content">
<h3 class="elementor-icon-box-title">
<a href=""> Watch the full video</a>
</h3>
</div>
</div>
</div>
</div>
Ответ №1:
Оберните свой svg в оболочку и примените к ней свою анимацию. Анимация в SVG может быть сложной, потому что ваш путь может сократить определенные вещи, чтобы добиться его внешнего вида.
Кроме того, ваш HTML имеет плохой отступ, что может быть причиной того, что у вас есть закрывающий div
тег под вами svg
, у которого нет соответствующего открывающего тега. Ваш закрывающий a
тег «скрыт» полностью в конце вашей строки svg.
Очистите это и оберните свой svg, и все должно быть готово.
ПРИМЕЧАНИЕ: я обратился margin: 5rem;
к вам .hero_button_homepage
, чтобы дать понять, что это работает. Не забудьте удалить это, прежде чем внедрять приведенное ниже.
Редактировать: я уверен, что вы должны добавлять анимации -webkit-
перед -moz-
своим обычным объявлением и ПЕРЕД ним: например:
.foo-bar {
-moz-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-webkit-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
}
Вы можете увидеть, какие префиксы вы должны использовать в shouldiprefix.com
.hero_button_homepage { margin: 5rem; }
.hero_button_homepage .svg_wrapper {
border-radius: 150px!important;
animation: pulse-orange 2s infinite!important;
width:60px;
height:60px;
border-color: red;
}
.hero_button_homepage svg {
border-radius: 150px!important;
animation: pulse-orange 2s infinite!important;
width:60px;
height:60px;
border-color: red;
}
@keyframes pulse-orange {
0% {
box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-webkit-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-moz-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-webkit-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-moz-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
}
}
@-webkit-keyframes pulse-orange {
0% {
box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-webkit-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-moz-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-webkit-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-moz-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
}
}
@-moz-keyframes pulse-orange {
0% {
box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-webkit-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-moz-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-webkit-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-moz-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
}
}
@-o-keyframes pulse-orange {
0% {
box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-webkit-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
-moz-box-shadow: 0 0 0 0 rgba(249,172,102,0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-webkit-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
-moz-box-shadow: 0 0 0 20px rgba(249, 172, 102, 0);
}
}
<div class="hero_button_homepage">
<div class="elementor-widget-container">
<div class="elementor-icon-box-wrapper">
<div class="elementor-icon-box-icon">
<a class="" href="">
<div class="svg_wrapper">
<svg xmlns="http://www.w3.org/2000/svg" width="86" height="86" viewBox="0 0 86 86" fill="none"><path d="M57.5 43.866L38 55.1244C37.3333 55.5093 36.5 55.0281 36.5 54.2583L36.5 31.7417C36.5 30.9719 37.3333 30.4907 38 30.8756L57.5 42.134C58.1667 42.5189 58.1667 43.4811 57.5 43.866Z" stroke="#F9F6F1" stroke-width="2"></path><circle cx="43" cy="43" r="42" stroke="#F9AC66" stroke-width="2" stroke-linecap="round"></circle></svg> </a>
</div>
<div class="elementor-icon-box-content">
<h3 class="elementor-icon-box-title">
<a href=""> Watch the full video</a>
</h3>
</div>
</div>
</div>
</div>