难以置信的纯CSS实现鼠标跟随效果

电脑杂谈  发布时间:2020-08-06 19:09:44  来源:网络整理

鼠标跟随_电脑鼠标跟随特效_鼠标跟随特效下载

直接转到主题,鼠标跟随,顾名思义,元素将跟随鼠标的移动并进行相应的移动. 看起来像这样:

通常来说,CSS负责性能,而JavaScript负责行为. 鼠标跟随的效果是行为,通常需要使用JS来实现.

当然,本文的重点是介绍如何在不借助JS的情况下使用CSS来模拟一些鼠标跟随的效果.

原理

以上面的Demo为例,使用CSS实现鼠标跟随,最重要的一点是:

如何实时检测当前鼠标位置?

好吧,实际上,许多CSS效果都与眼罩一词密不可分. 要监视当前鼠标的位置,我们只需要在页面上填充以下元素:

我们使用100个元素填充整个页面并在悬停时显示颜色. SCSS的核心代码如下:

鼠标跟随特效下载_电脑鼠标跟随特效_鼠标跟随

  1. class="g-container">

  2. class="position">

  • class="position">

  • class="position">

  • class="position">

  • ... // 100个

    1. .g-container {

    2. position: relative;

    3. width: 100vw;

    4. height: 100vh;

    5. }

    6. .position {

    7. position: absolute;

    8. width: 10vw;

    9. height: 10vh;

    10. }

    11. @for $i from 0 through 100 {

    12. $x: $i % 10;

    13. $y: ($i - $x) / 10;

    14. .position:nth-child(#{$i + 1}) {

    15. top: #{$y * 10}vh;

    16. left: #{$x * 10}vw;

    17. }

    18. .position:nth-child(#{$i + 1}):hover {

    19. background: rgba(255, 155, 10, .5)

    20. }

    21. }

    可以获得这种效果:

    好的,如果除去每个元素的悬停效果,那么此时操作页面实际上将无效. 但是同时,通过: hover伪类,我们可以大致了解当前鼠标在页面上的位置.

    继续,让我们在页面中添加另一个元素(一个小圆形球)并将其绝对定位在页面中间:

    1. class="g-ball">

    1. .ball {

    2. position: absolute;

    3. top: 50%;

    4. left: 50%;

    5. width: 10vmax;

    6. height: 10vmax;

    7. border-radius: 50%;

    8. transform: translate(-50%, -50%);

    9. }

    最后,我们使用〜兄弟元素选择器来控制球元素在悬停页面时通过当前悬停的div的位置(实际上,它是一百个隐藏的div).

    鼠标跟随特效下载_鼠标跟随_电脑鼠标跟随特效

    1. @for $i from 0 through 100{

    2. $x: $i % 10;

    3. $y: ($i - $x) / 10;

    4. .position:nth-child(#{$i + 1}):hover ~ .ball {

    5. top: #{$y * 10}vh;

    6. left: #{$x * 10}vw;

    7. }

    8. }

    到目前为止,已经实现了实现鼠标跟随效果的简单纯CSS,方便大家理解. 请看以下图片以了解:

    完整的演示,您可以单击此处查看: CodePen Demo-CSS实现鼠标跟随

    存在的问题

    在上面的演示中,仍然存在许多缺陷,例如

    精度太差

    您只能控制元素到div所在空间的移动,而不能控制鼠标的确切位置. 为此,我们可以通过增加隐藏div的数量来进行优化. 例如,从100个平铺div增加到1000个平铺div.

    锻炼不够柔滑

    电脑鼠标跟随特效_鼠标跟随_鼠标跟随特效下载

    效果似乎不够柔滑,这可能需要通过合理的缓动功能和适当的延迟来优化.

    变干

    是的. 掌握了原理之后,让我们看一下使用这种技术可以产生哪些有趣的效果.

    CSS鼠标跟随按钮效果

    一开始,我通过使用SVG + CSS + JS实现了对CodePen的以下效果,我想知道是否可以仅使用CSS复制它:

    CodePen演示-Gooey鼠标关注

    好吧,理想是充实的,现实是很骨感的. 单独使用CSS仍然有很多限制.

    好的,仅使用CSS来查看破产版本的模拟效果:

    鼠标跟随_鼠标跟随特效下载_电脑鼠标跟随特效

    有点奇怪. 您可以收敛一点效果. 通过调整颜色和滤镜强度(各种尝试...),可以获得类似效果更好的效果:

    演示戳我,CodePen演示-CSS鼠标跟随按钮效果

    全屏鼠标跟随

    好的,继续,让我们做些更令人眼花. 乱的事情. 好吧,那是浮华的. : sweat_smile:

    如果我们控制多个元素,则可以控制多个元素. 然后,多个元素之间的效果会设置不同的过渡延迟,以按顺序延迟运动. 哇,我很想这件事. 例如:

    CodePen演示-鼠标跟随PURE CSS MAGIC MIX

    如果我们可以更具想象力,那么我们可以碰撞更多的火花:

    此效果是我非常喜欢的日本CodePen作者Nakaya Yusuke的作品,源代码: 演示-仅CSS: 水面

    鼠标遵循说明


    本文来自电脑杂谈,转载请注明本文网址:
    https://www.pc-fly.com/a/bofangqi/article-293289-1.html

    相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...
    热点排行