首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CSS动画时只在Safari中进行不同的css转换

使用CSS动画时只在Safari中进行不同的css转换
EN

Stack Overflow用户
提问于 2020-10-13 20:03:52
回答 1查看 42关注 0票数 1

这是很难解释的,所以我做了一个密码。尝试在Chrome和Safari中打开它,然后单击codepen来查看差异:https://codepen.io/matt_o_tron_5000/pen/gOMaKmY

基本上,在一些javascript的帮助下,我们在光标后面有一个点。CSS动画使它在任何时候都会慢慢地生长/收缩,当你点击这个点时,它就会发生实质性的收缩。

在Chrome和Firefox中,当您单击时,点会缩小到鼠标指针所在的中心。但在Safari,它缩小到左上角。我发现通过删除CSS动画,就可以解决这个问题。但我搞不懂为什么。

知道如何在Safari中修复这种行为吗?

显然,我不能发布这个,除非我的代码链接是“伴随代码”。这是一些代码。

// HTML

代码语言:javascript
复制
<span id="custom-cursor"></span>

// CSS

代码语言:javascript
复制
#custom-cursor {
  position: fixed;
  display: block;
  width: 6rem;
  height: 6rem;
  border-radius: 50%;
  background-color: red;
  transform: translate3d(-50%, -50%, 0) scale(1);
  transition: 0.1s ease-out;
  transition-property: width, height, transform;
  animation: growshrink 4s infinite;

  &.clicking {
    width: 1rem;
    height: 1rem;
  }
}

@keyframes growshrink {
  0% {
    transform: translate3d(-50%, -50%, 0) scale(1);
  }

  50% {
    transform: translate3d(-50%, -50%, 0) scale(1.3);
  }

  100% {
    transform: translate3d(-50%, -50%, 0) scale(1);
  }
}

// Javascript

代码语言:javascript
复制
(function () {
  var follower, mouseX, mouseY, positionElement, timer;
  follower = document.getElementById('custom-cursor');
  console.log(follower);
  mouseX = event => { return event.clientX; };
  mouseY = event => {return event.clientY;};
  positionElement = event => {
    var mouse;
    mouse = {
      x: mouseX(event),
      y: mouseY(event),
    };

    follower.style.top = mouse.y + 'px';
    follower.style.left = mouse.x + 'px';
  };
  window.onmousemove = event => {
    if(!timer){timer = false;}
    var _event;
    _event = event;
    return timer = setTimeout(() => {
      return positionElement(_event);
    }, 5);
  };
}).call(this);

$(document).on('mousedown', function() {
  $('#custom-cursor, #imghover-cursor').addClass('clicking');
});
$(document).on('mouseup', function() {
  $('#custom-cursor, #imghover-cursor').removeClass('clicking');
});
EN

回答 1

Stack Overflow用户

发布于 2020-10-13 20:20:29

浏览器呈现代码的方式不同..。我们可以更新它的代码,这样它的行为就像项目“受支持的浏览器”一样,或者使用用户代理嗅探方式/每种浏览器类型的方法--我不建议这样做,我从来不这样做,因为选项1几乎总是有一种方法来实现它,它更简单、更干净,并且更容易更改您使用和/或调整现有代码的库。

当我建议“修改动画库”时,我的意思是更具体地使用一个开源社区--像GSAP这样经过审查的社区。https://greensock.com/gsap/

但是如果你想进兔子洞,请从这里开始:

https://github.com/WhichBrowser/Parser-PHP

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64342404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档