CSS 神奇的卡片悬停交互效果
一个堪称完美用户体验度的产品,离不开交互设计师所做出的巨大贡献,交互设计师的日常离不开特有的思维习惯和经久沉淀下来的设计方法。这些看似简单不起眼的规则,极有可能是一个产品未来能否在巨大的市场中脱颖而出的因素。
今天逛网站看到一个不错的交互设计,文本将展开说明 CSS 代码实现过程,最终效果如下图 GIF 所示,为减小 GIF 的大小,去掉了卡片中的内容。
这种卡片在各大官网中出现的比较多,介绍产品的种类,系统的功能,价格的等级等等。但是很多都是纯卡片展示,没有任何给到用户的交互反馈,但像上图所示在用户鼠标移动的过程中给到一个跟随鼠标移动的光圈,这样就给到了足额的用户的反馈,用户体验得到了极大的提升。
实现过程
JS 代码
能够跟随鼠标移动,前提就需要获取到鼠标的 X/Y 轴坐标,这一点需要借助于 JS 获取,获取所有的卡片元素,通过监听 onmousemove
鼠标移动事件计算出每个卡片内的光圈坐标值,这里通过 CSS 自定义属性设置 --mouse-x
和 --mouse-y
到卡片的行内 style 中,稍后将在 CSS 中使用到,整体代码如下:
CSS 代码
在这里为了保障代码简洁,都是基于伪元素创建,主要是通过设置 radial-gradient()
函数创建径向渐变光圈,再结合上面 JS 中设置的 --mouse-x
和 --mouse-y
即可让界面跟随鼠标的移动动起来啦。代码如下:
为了让界面效果更真实,实例网站中用上了before
after
两个伪元素设置了不同的半径值。整体 CSS 代码如下:
HTML 代码
最后
整体代码拆解就结束了,看完是不是觉得很简单呢,你如果有其他更好的方案欢迎留言交流。看完觉得有用,记得点赞收藏起来吧,说不定哪天就用上啦~
示例链接地址:https://linear.app/features
专注前端开发,分享前端相关技术干货,公众号:南城大前端(ID: nanchengfe)
版权声明: 本文为 InfoQ 作者【南城FE】的原创文章。
原文链接:【http://xie.infoq.cn/article/5983a57652ab5212269cb005d】。文章转载请联系作者。
评论