如何在 jQuery animate() 中使用 box-shadow?

Posted

技术标签:

【中文标题】如何在 jQuery animate() 中使用 box-shadow?【英文标题】:How to use box-shadow with jQuery animate()? 【发布时间】:2018-10-12 21:25:55 【问题描述】:

我有一个 li 元素,它需要在悬停时为框阴影设置动画,但我无法获得所需的结果,这是我的 javascript 代码:

$(document).ready(function () 
$('#skill_list li').hover(function () 
    $(this).animate(
        top: "-5px",
        boxShadow: "10px 10px red"
    , 100, "linear").clearQueue();
, function () 
    $(this).animate(
        top: "0px",
        boxShadow:"0px 0px"
    , 100, "linear").clearQueue();
)
);

谢谢

【问题讨论】:

您想要的结果是什么?当你运行你拥有的代码时实际发生了什么? 我知道您要求使用 jQuery 解决方案,但您愿意接受仅使用 css 的解决方案吗? [众所周知,jQuery 在动画性能方面非常慢](css-tricks.com/myth-busting-css-animations-vs-javascript/… @RyanWilson 盒子阴影没有动画,当我检查元素时,我看到位置属性正在改变,但盒子阴影没有 @Ghostrydr 当然我也可以尝试 css,实际上我正在学习 jquery,所以我想要 jQuery 中的解决方案 @KashyapPavra 可能是因为在您的第二个 .animate() 中您没有更改 boxShadow 属性,事实上,它根本不存在。 【参考方案1】:

直接回答

使用 Edwin Martin 的 jQuery plugin for shadow animation,它扩展了 .animate 方法,您可以简单地使用带有“boxShadow”的普通语法以及它的各个方面 - colorx 和 y 偏移blur-radiusspread-radius - 被动画化。它包括多个阴影支持。

$(element).animate( 
  boxShadow: "0px 0px 5px 3px hsla(100, 70%, 60%, 0.8)"
); 

使用 CSS

.element
  transition: all 0.8s ease-in;
  width: 50px;
  height: 50px;
  border: 1px solid black;

.element:hover 
  box-shadow: 0px 0px 5px 3px hsla(100, 70%, 60%, 0.8); 

【讨论】:

这个方法我用过,但是在m情况下好像不行 好像是***.com/a/9197026/5707563的副本【参考方案2】:

将此添加到您的 css 中并添加到您想要的任何位置

body
  background: #fff;

.box 
  transition: box-shadow .3s;
  width: 300px;
  height: 500px;
  margin: 50px;
  border-radius:10px;
  border: 1px solid #ccc;
  background: #fff;
  float: left;
  

.box:hover 
  box-shadow: 0 0 11px rgba(33,33,33,.2); 

【讨论】:

为什么这有助于或回答明确说“jQuery”的问题? 非常感谢您的方法完美无缺,您能告诉我如何使用 jquery 来完成吗?

以上是关于如何在 jQuery animate() 中使用 box-shadow?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery 中停止 .each .animate 循环函数

如何避免在 jQuery 动画 [fadeIn() 或 animate()] 结束时出现文本闪烁?

如何使用 css 转换重新创建我的 jQuery .animate() 元素缩放/平移?

jQuery中关于如何使用animate自定义动画

如何使用 jquery animate 滚动到元素跨浏览器

如何使用 jquery 的 animate 方法使 div 来回移动