首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery / CSS3动画阴影效果

jQuery / CSS3动画阴影效果
EN

Stack Overflow用户
提问于 2013-01-14 13:53:58
回答 1查看 2.7K关注 0票数 7

因此,这个问题可能会被否决,但我认为有人可能会提供帮助。

我正在寻找的效果是蓝色的积木像气球一样上下悬停,阴影在它下面增长和缩小,随着积木的上下循环。

有没有关于如何编程的想法,或者有没有人知道一个可以完成的教程/插件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-14 14:54:10

您可以使用jQuery,也可以使用CSS3,我将向您展示这两种方法:

CSS3:

代码语言:javascript
复制
#box{
  position:absolute;
  top:100px;
  left:0;
  width:200px;
  height:200px;
  background:#6CB8E9;
     -moz-animation:jump 2s infinite ease-in-out;
  -webkit-animation:jump 2s infinite ease-in-out;
}

#shadow{
  position:absolute;
  top:290px;
  height:20px;
  border-radius:30px;
  left: -200px;
  background:transparent;
  width:200px;
  box-shadow:200px 0 10px 2px rgba(0,0,0,0.4);
  margin-left:0;
  opacity: 1;
     -moz-animation:shadowSize 2s infinite ease-in-out;
  -webkit-animation:shadowSize 2s infinite ease-in-out;
}

@-moz-keyframes jump {
    0%   { top:100px;}
    50%  { top:25px;}
    100% { top:100px;}
}
@-webkit-keyframes jump {
    0%   { top:100px;}
    50%  { top:25px;}
    100% { top:100px;}
}

@-moz-keyframes shadowSize {
    0%   { width:200px; margin-left:0px; opacity:1;   box-shadow:200px 0 10px rgba(0,0,0,0.7);}
    50%  { width:150px; margin-left:25px;opacity:0.3; box-shadow:200px 0 30px rgba(0,0,0,0.3);}
    100% { width:200px; margin-left:0px; opacity:1;   box-shadow:200px 0 10px rgba(0,0,0,0.7);}
}
@-webkit-keyframes shadowSize {
    0%   { width:200px; margin-left:0px; opacity:1;   box-shadow:200px 0 10px rgba(0,0,0,0.7);}
    50%  { width:150px; margin-left:25px;opacity:0.3; box-shadow:200px 0 30px rgba(0,0,0,0.3);}
    100% { width:200px; margin-left:0px; opacity:1;   box-shadow:200px 0 10px rgba(0,0,0,0.7);}
}

现在有了我们亲爱的jQ..。只需使用.png图像代替我丑陋的box-shadow :)

代码语言:javascript
复制
var li = 1; // a LoopIterations variable

function loop(){  
  
    li = ++li%2;  // reset evenly to '0' // results in 0, 1, 0, 1, 0, .... 
  
  $('#shadow').animate({
      width:       !li ? 150:200 ,
      marginLeft:  !li ? 25:0 ,
      opacity:     !li ? 0.3:1
  }, 2000);
  
  $('#box').animate({
    top:        !li ? 25 : 100
  },2000, loop);   // THIS 'loop' callback will recall the loop() function creating ... a loop :D
      
}

loop(); // start loop

解释一下:在每一次奇数迭代中,li将被设置为0,而在每隔一次迭代中,由于% (模运算符),将被设置为1

Javascript中的0可以表示为false,非常适合使用检查两个布尔值的三元运算符,例如:[true or false statement] ? [do this if true] : [do that if false] ;

!li ? 150:200表示如果!li (= 0=为false),则使用200,否则使用150

此外:

代码语言:javascript
复制
<div id="box"></div>
<div id="shadow"></div>

和CSS:

代码语言:javascript
复制
#box{
  position:absolute;
  top:100px;
  width:200px;
  height:200px;
  background:#6CB8E9;
}

#shadow{
  position:absolute;
  top:310px;
  height:1px;
  background:rgba(0,0,0,0.26);
  width:200px;
  box-shadow:0 0 14px 2px #000;
  margin-left:0;
  opacity: 1;
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14313863

复制
相关文章

相似问题

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