【问题标题】:background-image transition not working in Safari背景图像转换在 Safari 中不起作用
【发布时间】:2017-02-14 09:43:02
【问题描述】:

悬停时,我正在尝试使用 CSS 过渡来交换背景图像。但是,在 Safari 中,图像在动画期间会缩小,我不知道为什么。

.icon {
  background-color: white;
  width: 100px;
  height: 100px;
  background-image: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4MS44OSA4MS44OSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM4YjkyYTE7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjZweDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmljb24tc2VhcmNoPC90aXRsZT48Y2lyY2xlIGNsYXNzPSJjbHMtMSIgY3g9IjM1LjU5IiBjeT0iMzUuNTkiIHI9IjMyLjU5Ii8+PGxpbmUgY2xhc3M9ImNscy0xIiB4MT0iNTguNjMiIHkxPSI1OC42MyIgeDI9Ijc5Ljc3IiB5Mj0iNzkuNzciLz48L3N2Zz4=);
  background-size: 14px 14px;
  background-repeat: no-repeat;
  transition: all 1s;
}

.icon:hover {
    background-image: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4MS44OSA4MS44OSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM1YTJhODI7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjZweDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmljb24tc2VhcmNoLXB1cnBsZTwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSIzNS41OSIgY3k9IjM1LjU5IiByPSIzMi41OSIvPjxsaW5lIGNsYXNzPSJjbHMtMSIgeDE9IjU4LjYzIiB5MT0iNTguNjMiIHgyPSI3OS43NyIgeTI9Ijc5Ljc3Ii8+PC9zdmc+);
 }

https://jsfiddle.net/Lfqucz82/

【问题讨论】:

    标签: html css safari css-transitions


    【解决方案1】:

    如果出现的图像(悬停之前和悬停期间)大小不同,则一个图像(在您的情况下为第一张图像)将显示为完美尺寸,因为您已设置 background-size: 14px 14px;,而另一张图像可能看起来已调整大小(扩大或缩小)。

    所以 1. 检查图像的大小。 (如果它们不一样,那么定义你需要的完美 css background-size 属性 2. 为了完美过渡(在所有浏览器和浏览器版本中),请执行

    .icon{
        //other css codes;
        transition: 1s;
        -o-transition: 1s;
        -ms-transition: 1s;
        -moz-transition: 1s;
        -webkit-transition: 1s;
    }
    

    【讨论】:

      【解决方案2】:

      虽然我不知道为什么 Safari 会有这样的行为,但如果你想在悬停时交叉淡入淡出图标,请处理 :after 和 :before 伪选择器不透明度。试试这个小提琴:https://jsfiddle.net/ifthenelse/6s9g4kdn/

      你的 CSS 应该是这样的:

      /* Icon container */
      .icon {
        position: relative;
        background-color: white;
        width: 100px;
        height: 100px;
      }
      
      /* Images containers */
      .icon:before, .icon:after {
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        content: "";
        display: block;
        background-size: 14px 14px;
        background-repeat: no-repeat;
        transition: opacity 1s;
      }
      
      /* Attach backgrounds */
      .icon:before {
        background-image: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4MS44OSA4MS44OSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM4YjkyYTE7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjZweDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmljb24tc2VhcmNoPC90aXRsZT48Y2lyY2xlIGNsYXNzPSJjbHMtMSIgY3g9IjM1LjU5IiBjeT0iMzUuNTkiIHI9IjMyLjU5Ii8+PGxpbmUgY2xhc3M9ImNscy0xIiB4MT0iNTguNjMiIHkxPSI1OC42MyIgeDI9Ijc5Ljc3IiB5Mj0iNzkuNzciLz48L3N2Zz4=);
        opacity: 1;
      }
      
      .icon:after {
        background-image: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4MS44OSA4MS44OSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiM1YTJhODI7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjZweDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmljb24tc2VhcmNoLXB1cnBsZTwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSIzNS41OSIgY3k9IjM1LjU5IiByPSIzMi41OSIvPjxsaW5lIGNsYXNzPSJjbHMtMSIgeDE9IjU4LjYzIiB5MT0iNTguNjMiIHgyPSI3OS43NyIgeTI9Ijc5Ljc3Ii8+PC9zdmc+);
        opacity: 0;
      }
      
      /* Transition on hover */
      .icon:hover:before {
        opacity: 0;
      }
      
      .icon:hover:after {
        opacity: 1;
      }
      

      【讨论】:

        猜你喜欢
        • 2016-12-24
        • 1970-01-01
        • 2021-09-08
        • 1970-01-01
        • 1970-01-01
        • 2014-02-27
        • 2010-12-08
        • 2023-03-03
        相关资源
        最近更新 更多