html - 在 Safari 中悬停时按钮的位置发生变化

标签 html css safari

我的目标是制作一个圆形图标按钮,其中单个图标被一个圆圈包围,圆圈在悬停时缩小,但图标保持居中。

我在 Firefox 和 Chrome 中得到了这种效果,但在 Safari 9 中(我认为它在 Safari 10 中类似),当我将鼠标悬停在按钮上时,它们的垂直位置偶尔会意外地上下移动。它似乎主要发生在快速更改悬停的按钮时。

这是按钮的 HTML 结构:

<a class='icon-button'>
  <button>
    <span class='bg'></span>
    <span class='icon'>A</span>
  </button>
</a>

这是我正在应用的 SCSS 代码:

.icon-button {
  $width: 2em;

  display: inline-block;
  width: $width;
  height: $width;
  overflow: hidden;
  cursor: pointer;

  button {
    position: relative;
    display: flex;
    align-items: center;
    text-align: center;
    width: $width;
    height: $width;
    padding: 0;
    margin: 0;
    background: none;
    border: none;
    cursor: pointer;
  }

  .bg {
    background-color: #FF9999;
    width: $width;
    height: $width;
    border-radius: $width / 2;
    margin: 0 auto;
    transition: width 128ms linear, height 128ms linear;
  }

  &:hover .bg {
    width: 0.8 * $width;
    height: 0.8 * $width;
  }

  .icon {
    color: #FFF;
    position: absolute;
    top: 0;
    left: 0;
    line-height: $width;
    width: 100%;
  }
}

这是一个 JSFiddle 页面,我在其中使用相关代码复制了问题:https://jsfiddle.net/Auroratide/6u463jL5/3/

有谁知道是什么原因导致 Safari 而不是其他浏览器发生这种情况?我可能需要改变我的策略,这样 CSS 才不会那么卡顿,但我还是很好奇。

更新:

这里是我所看到的视频的链接,对比了 Firefox 和 Safari:

最佳答案

尝试添加

-webkit-transition: width 128ms linear, height 128ms linear;

-webkit- 指的是 Chrome 和 Safari 等浏览器,因此有望解决您遇到的问题。

关于html - 在 Safari 中悬停时按钮的位置发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45217873/

相关文章:

javascript - Firefox 闪烁错误

html - 带有 flex 的内联表单,safari 中的错误

ios - 在 iPad 上,当浏览器为 'closed' 时,如何使网页上的嵌入声音停止播放?

css - (HTML5 & CSS) 类问题

javascript - 如何只提交两个表单元素?

javascript - jQuery 单页移动应用

css - 仅在顶部应用椭圆边框效果

javascript - 使用用户输入更改宽度大小时出现问题

html - 包含图像的 float <li> 元素下方有 4px 间隙

Javascript 脚本无法在 Safari 中运行