【问题标题】:Safari Browser showing blur animation on an image for scale and opacity CSS animationSafari 浏览器在图像上显示模糊动画以实现缩放和不透明度 CSS 动画
【发布时间】:2021-12-09 10:23:53
【问题描述】:

我正在为一张图片在网络上制作悬停动画。 它在 chrome、firefox 上运行良好。但是当我在 safari 上尝试时,动画图像是模糊的,直到动画结束。

所以我在stackoverflow上搜索了很多以了解可能是什么错误,但是尝试了所有方法,仍然没有解决方案

html

.hiddenStar{
        
        width:1px;
        height: 1px;
        position:absolute;
        top: 40%; right: 50%;
        transform: translate(50%,-50%);
      
        -moz-opacity: 0; /* Firefox and Mozilla browsers */
        -webkit-opacity: 0; /* WebKit browser e.g. Safari */
        opacity: 0;
       
        -webkit-transform: scale(1,1); /* Safari & Chrome */
        -moz-transform: scale(1); /* Firefox */
      -ms-transform: scale(1); /* Internet Explorer */
      -o-transform: scale(1); /* Opera */
      transform: scale(1);
        transition: all 1s;
        
      }
     
      #starspan:hover +.hiddenStar{
       
        -moz-opacity: 1; /* Firefox and Mozilla browsers */
        -webkit-opacity: 1; /* WebKit browser e.g. Safari */
        opacity: 1;
        
        -webkit-transform: scale(90,90); /* Safari & Chrome */
      -moz-transform: scale(90); /* Firefox */
    -ms-transform: scale(90); /* Internet Explorer */
    -o-transform: scale(90); /* Opera */
    transform: scale(90);
        transition: all 1s;
      }
<p>
  <span className="text-brand " id="starspan" >Star</span>
  <img src="https://res.cloudinary.com/zerko/image/upload/v1634379420/Logomark_kxgewd.svg" class="hiddenStar"/>
  </p>

尝试了 webkit 的规模和不透明度,但仍然是同样的问题。 我在这里缺少什么?

【问题讨论】:

    标签: html css safari webkit css-animations


    【解决方案1】:

    在 Safari 中从 0.01 缩放到 1。但不知道为什么……神秘的浏览器……

    .hiddenStar{
            
            width:90px;
            height:90px;
            position:absolute;
            top: 40%; right: 50%;
            transform: translate(50%,-50%);
          
            -moz-opacity: 0; /* Firefox and Mozilla browsers */
            -webkit-opacity: 0; /* WebKit browser e.g. Safari */
            opacity: 0;
           
            -webkit-transform: scale(0.01,0.01); /* Safari & Chrome */
            -moz-transform: scale(0.01); /* Firefox */
          -ms-transform: scale(0.01); /* Internet Explorer */
          -o-transform: scale(0.01); /* Opera */
          transform: scale(0.01);
            transition: all 1s;
            
          }
         
          #starspan:hover +.hiddenStar{
           
            -moz-opacity: 1; /* Firefox and Mozilla browsers */
            -webkit-opacity: 1; /* WebKit browser e.g. Safari */
            opacity: 1;
            
            -webkit-transform: scale(1,1); /* Safari & Chrome */
          -moz-transform: scale(1); /* Firefox */
        -ms-transform: scale(1); /* Internet Explorer */
        -o-transform: scale(1); /* Opera */
        transform: scale(1);
          }
    <p>
      <span className="text-brand " id="starspan" >Star</span>
      <img src="https://res.cloudinary.com/zerko/image/upload/v1634379420/Logomark_kxgewd.svg" class="hiddenStar"/>
      </p>

    【讨论】:

    • 我赞成你的回答。由于您找到了一种解决方法,使动画仍然适用于比例和不透明度。我希望其他人可以解释这个问题背后的原因。
    • Safari 似乎会根据渲染的位图而不是原始图像来缩放和动画图像。您将图像的初始大小设置为1px 1px,在通过 safari 缩小后,它在您的屏幕截图中看起来像一个大立方体。只是一个猜测,我没有深入研究 safari 的源代码,这是一项费力的工作。
    • 不是这样,因为一旦动画到达 Cap,模糊就会消失(一旦达到我提供的最大比例值),同样当缩小时,它会再次变得模糊并继续剩余的动画
    猜你喜欢
    • 2019-12-04
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多