无法将CSS震动效果应用于身体

时间:2018-11-22 10:48:36

标签: jquery html css

我有一个image类,它使用jQuery函数添加到body中:

$('body').addClass('image').addClass('shake');

当我尝试使用类shake添加震动效果时,它没有产生震动效果:

$('body').addClass('image').addClass('shake');

如何纠正我的代码以使添加到身体的图像获得抖动效果? jQuery还是其他问题?

$(document).ready(function() {
  $('body').addClass('image').addClass('shake');
});
@import url(https://fonts.googleapis.com/css?family=Gentium+Basic);
@import url(https://fonts.googleapis.com/css?family=Dancing+Script);
.image {
  background-image: url(https://picsum.photos/200/300?image=0);
}

.shake {
  display: inline-block;
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  -webkit-transform-origin: center center;
}

.shake:hover {
  -webkit-animation-name: shake-base;
  -ms-animation-name: shake-base;
  -webkit-animation-name: shake-base;
  -webkit-animation-duration: 100ms;
  -ms-animation-duration: 100ms;
  -webkit-animation-duration: 100ms;
  -webkit-animation-iteration-count: infinite;
  -ms-animation-iteration-count: infinite;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: ease-in-out;
  -ms-animation-timing-function: ease-in-out;
  -webkit-animation-timing-function: ease-in-out;
  -webkit-animation-delay: 0s;
  -ms-animation-delay: 0s;
  -webkit-animation-delay: 0s;
}

@-webkit-keyframes shake-base {
  0% {
    -webkit-transform: translate(0px, 0px) rotate(0deg);
  }
  2% {
    -webkit-transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  4% {
    -webkit-transform: translate(-2.5px, -2.5px) rotate(-0.5deg);
  }
  6% {
    -webkit-transform: translate(-0.5px, -2.5px) rotate(-0.5deg);
  }
  8% {
    -webkit-transform: translate(-0.5px, -1.5px) rotate(-1.5deg);
  }
  10% {
    -webkit-transform: translate(1.5px, -1.5px) rotate(-0.5deg);
  }
  12% {
    -webkit-transform: translate(0.5px, -0.5px) rotate(-1.5deg);
  }
  14% {
    -webkit-transform: translate(1.5px, 1.5px) rotate(-0.5deg);
  }
  16% {
    -webkit-transform: translate(0.5px, -2.5px) rotate(-0.5deg);
  }
  18% {
    -webkit-transform: translate(-0.5px, -1.5px) rotate(0.5deg);
  }
  20% {
    -webkit-transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  22% {
    -webkit-transform: translate(-1.5px, 0.5px) rotate(0.5deg);
  }
  24% {
    -webkit-transform: translate(-2.5px, 1.5px) rotate(-1.5deg);
  }
  26% {
    -webkit-transform: translate(1.5px, -0.5px) rotate(-1.5deg);
  }
  28% {
    -webkit-transform: translate(0.5px, -0.5px) rotate(-1.5deg);
  }
  30% {
    -webkit-transform: translate(-0.5px, -0.5px) rotate(-1.5deg);
  }
  32% {
    -webkit-transform: translate(-2.5px, 1.5px) rotate(0.5deg);
  }
  34% {
    -webkit-transform: translate(0.5px, -0.5px) rotate(0.5deg);
  }
  36% {
    -webkit-transform: translate(0.5px, -0.5px) rotate(-0.5deg);
  }
  38% {
    -webkit-transform: translate(1.5px, -0.5px) rotate(-0.5deg);
  }
  40% {
    -webkit-transform: translate(-2.5px, 0.5px) rotate(-0.5deg);
  }
  42% {
    -webkit-transform: translate(-2.5px, 1.5px) rotate(-1.5deg);
  }
  44% {
    -webkit-transform: translate(0.5px, 0.5px) rotate(-0.5deg);
  }
  46% {
    -webkit-transform: translate(-2.5px, -1.5px) rotate(-0.5deg);
  }
  48% {
    -webkit-transform: translate(1.5px, 1.5px) rotate(0.5deg);
  }
  50% {
    -webkit-transform: translate(1.5px, 1.5px) rotate(-1.5deg);
  }
  52% {
    -webkit-transform: translate(1.5px, -1.5px) rotate(-0.5deg);
  }
  54% {
    -webkit-transform: translate(1.5px, -2.5px) rotate(0.5deg);
  }
  56% {
    -webkit-transform: translate(1.5px, -0.5px) rotate(-0.5deg);
  }
  58% {
    -webkit-transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  60% {
    -webkit-transform: translate(-0.5px, -1.5px) rotate(-0.5deg);
  }
  62% {
    -webkit-transform: translate(0.5px, 0.5px) rotate(-1.5deg);
  }
  64% {
    -webkit-transform: translate(-2.5px, 0.5px) rotate(-0.5deg);
  }
  66% {
    -webkit-transform: translate(0.5px, 1.5px) rotate(0.5deg);
  }
  68% {
    -webkit-transform: translate(-0.5px, -2.5px) rotate(-1.5deg);
  }
  70% {
    -webkit-transform: translate(0.5px, -2.5px) rotate(-1.5deg);
  }
  72% {
    -webkit-transform: translate(0.5px, -1.5px) rotate(0.5deg);
  }
  74% {
    -webkit-transform: translate(-2.5px, 1.5px) rotate(-0.5deg);
  }
  76% {
    -webkit-transform: translate(-1.5px, 0.5px) rotate(-0.5deg);
  }
  78% {
    -webkit-transform: translate(-2.5px, -2.5px) rotate(-1.5deg);
  }
  80% {
    -webkit-transform: translate(-0.5px, 0.5px) rotate(0.5deg);
  }
  82% {
    -webkit-transform: translate(-2.5px, -0.5px) rotate(0.5deg);
  }
  84% {
    -webkit-transform: translate(-1.5px, 1.5px) rotate(-0.5deg);
  }
  86% {
    -webkit-transform: translate(-2.5px, 1.5px) rotate(-0.5deg);
  }
  88% {
    -webkit-transform: translate(-1.5px, -2.5px) rotate(-0.5deg);
  }
  90% {
    -webkit-transform: translate(-0.5px, -0.5px) rotate(-1.5deg);
  }
  92% {
    -webkit-transform: translate(1.5px, -1.5px) rotate(-1.5deg);
  }
  94% {
    -webkit-transform: translate(-0.5px, -1.5px) rotate(-1.5deg);
  }
  96% {
    -webkit-transform: translate(-2.5px, 0.5px) rotate(-0.5deg);
  }
  98% {
    -webkit-transform: translate(1.5px, -2.5px) rotate(-1.5deg);
  }
}

@-ms-keyframes shake-base {
  0% {
    -ms-transform: translate(0px, 0px) rotate(0deg);
  }
  2% {
    -ms-transform: translate(1.5px, 1.5px) rotate(0.5deg);
  }
  4% {
    -ms-transform: translate(0.5px, -2.5px) rotate(-0.5deg);
  }
  6% {
    -ms-transform: translate(-2.5px, 1.5px) rotate(-1.5deg);
  }
  8% {
    -ms-transform: translate(-2.5px, -0.5px) rotate(-1.5deg);
  }
  10% {
    -ms-transform: translate(-1.5px, -0.5px) rotate(-1.5deg);
  }
  12% {
    -ms-transform: translate(-0.5px, -2.5px) rotate(-1.5deg);
  }
  14% {
    -ms-transform: translate(-2.5px, -2.5px) rotate(0.5deg);
  }
  16% {
    -ms-transform: translate(-1.5px, -1.5px) rotate(-0.5deg);
  }
  18% {
    -ms-transform: translate(-0.5px, 0.5px) rotate(-0.5deg);
  }
  20% {
    -ms-transform: translate(-1.5px, 0.5px) rotate(-0.5deg);
  }
  22% {
    -ms-transform: translate(1.5px, -1.5px) rotate(-1.5deg);
  }
  24% {
    -ms-transform: translate(-2.5px, -0.5px) rotate(-0.5deg);
  }
  26% {
    -ms-transform: translate(-0.5px, -2.5px) rotate(-0.5deg);
  }
  28% {
    -ms-transform: translate(0.5px, -1.5px) rotate(-0.5deg);
  }
  30% {
    -ms-transform: translate(-0.5px, 0.5px) rotate(-0.5deg);
  }
  32% {
    -ms-transform: translate(-1.5px, 1.5px) rotate(-0.5deg);
  }
  34% {
    -ms-transform: translate(-0.5px, -1.5px) rotate(-1.5deg);
  }
  36% {
    -ms-transform: translate(1.5px, -0.5px) rotate(-0.5deg);
  }
  38% {
    -ms-transform: translate(-2.5px, 0.5px) rotate(-0.5deg);
  }
  40% {
    -ms-transform: translate(1.5px, -1.5px) rotate(0.5deg);
  }
  42% {
    -ms-transform: translate(-0.5px, 1.5px) rotate(-0.5deg);
  }
  44% {
    -ms-transform: translate(-0.5px, 0.5px) rotate(-0.5deg);
  }
  46% {
    -ms-transform: translate(1.5px, 0.5px) rotate(-1.5deg);
  }
  48% {
    -ms-transform: translate(1.5px, 0.5px) rotate(0.5deg);
  }
  50% {
    -ms-transform: translate(-0.5px, -0.5px) rotate(-0.5deg);
  }
  52% {
    -ms-transform: translate(-2.5px, 1.5px) rotate(0.5deg);
  }
  54% {
    -ms-transform: translate(-0.5px, -2.5px) rotate(0.5deg);
  }
  56% {
    -ms-transform: translate(-0.5px, 1.5px) rotate(0.5deg);
  }
  58% {
    -ms-transform: translate(-1.5px, 0.5px) rotate(-0.5deg);
  }
  60% {
    -ms-transform: translate(-0.5px, -1.5px) rotate(0.5deg);
  }
  62% {
    -ms-transform: translate(1.5px, -1.5px) rotate(0.5deg);
  }
  64% {
    -ms-transform: translate(0.5px, 0.5px) rotate(-1.5deg);
  }
  66% {
    -ms-transform: translate(-0.5px, 1.5px) rotate(-1.5deg);
  }
  68% {
    -ms-transform: translate(-1.5px, -2.5px) rotate(-0.5deg);
  }
  70% {
    -ms-transform: translate(-1.5px, -2.5px) rotate(-1.5deg);
  }
  72% {
    -ms-transform: translate(-2.5px, -0.5px) rotate(-1.5deg);
  }
  74% {
    -ms-transform: translate(0.5px, 1.5px) rotate(0.5deg);
  }
  76% {
    -ms-transform: translate(-2.5px, -2.5px) rotate(-1.5deg);
  }
  78% {
    -ms-transform: translate(-1.5px, -1.5px) rotate(-0.5deg);
  }
  80% {
    -ms-transform: translate(-1.5px, -0.5px) rotate(-1.5deg);
  }
  82% {
    -ms-transform: translate(0.5px, 1.5px) rotate(-1.5deg);
  }
  84% {
    -ms-transform: translate(-2.5px, 0.5px) rotate(-1.5deg);
  }
  86% {
    -ms-transform: translate(1.5px, -1.5px) rotate(0.5deg);
  }
  88% {
    -ms-transform: translate(0.5px, -2.5px) rotate(0.5deg);
  }
  90% {
    -ms-transform: translate(-1.5px, -1.5px) rotate(-1.5deg);
  }
  92% {
    -ms-transform: translate(-1.5px, -1.5px) rotate(-1.5deg);
  }
  94% {
    -ms-transform: translate(-0.5px, 1.5px) rotate(-0.5deg);
  }
  96% {
    -ms-transform: translate(-1.5px, 0.5px) rotate(-0.5deg);
  }
  98% {
    -ms-transform: translate(-0.5px, -1.5px) rotate(-1.5deg);
  }
}

@keyframes shake-base {
  0% {
    transform: translate(0px, 0px) rotate(0deg);
  }
  2% {
    transform: translate(-2.5px, -2.5px) rotate(-1.5deg);
  }
  4% {
    transform: translate(1.5px, 0.5px) rotate(0.5deg);
  }
  6% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  8% {
    transform: translate(-0.5px, 1.5px) rotate(-1.5deg);
  }
  10% {
    transform: translate(0.5px, 0.5px) rotate(0.5deg);
  }
  12% {
    transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  14% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  16% {
    transform: translate(-1.5px, -2.5px) rotate(0.5deg);
  }
  18% {
    transform: translate(0.5px, -2.5px) rotate(-0.5deg);
  }
  20% {
    transform: translate(-2.5px, -2.5px) rotate(0.5deg);
  }
  22% {
    transform: translate(-0.5px, -1.5px) rotate(0.5deg);
  }
  24% {
    transform: translate(-1.5px, -2.5px) rotate(-1.5deg);
  }
  26% {
    transform: translate(-1.5px, 1.5px) rotate(-0.5deg);
  }
  28% {
    transform: translate(0.5px, 1.5px) rotate(-1.5deg);
  }
  30% {
    transform: translate(-0.5px, 1.5px) rotate(0.5deg);
  }
  32% {
    transform: translate(-1.5px, 0.5px) rotate(0.5deg);
  }
  34% {
    transform: translate(-2.5px, 1.5px) rotate(0.5deg);
  }
  36% {
    transform: translate(-0.5px, -2.5px) rotate(-0.5deg);
  }
  38% {
    transform: translate(0.5px, 1.5px) rotate(-0.5deg);
  }
  40% {
    transform: translate(1.5px, -1.5px) rotate(-0.5deg);
  }
  42% {
    transform: translate(-0.5px, 0.5px) rotate(-0.5deg);
  }
  44% {
    transform: translate(1.5px, 1.5px) rotate(0.5deg);
  }
  46% {
    transform: translate(0.5px, -1.5px) rotate(0.5deg);
  }
  48% {
    transform: translate(-1.5px, 0.5px) rotate(-1.5deg);
  }
  50% {
    transform: translate(-0.5px, -1.5px) rotate(-0.5deg);
  }
  52% {
    transform: translate(-0.5px, 1.5px) rotate(-0.5deg);
  }
  54% {
    transform: translate(-1.5px, 1.5px) rotate(0.5deg);
  }
  56% {
    transform: translate(-1.5px, -0.5px) rotate(-0.5deg);
  }
  58% {
    transform: translate(1.5px, 0.5px) rotate(-0.5deg);
  }
  60% {
    transform: translate(1.5px, 0.5px) rotate(-0.5deg);
  }
  62% {
    transform: translate(-1.5px, -1.5px) rotate(0.5deg);
  }
  64% {
    transform: translate(1.5px, 0.5px) rotate(-1.5deg);
  }
  66% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  68% {
    transform: translate(0.5px, -2.5px) rotate(-1.5deg);
  }
  70% {
    transform: translate(0.5px, -2.5px) rotate(-1.5deg);
  }
  72% {
    transform: translate(1.5px, -1.5px) rotate(0.5deg);
  }
  74% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  76% {
    transform: translate(1.5px, -1.5px) rotate(-0.5deg);
  }
  78% {
    transform: translate(1.5px, -1.5px) rotate(-1.5deg);
  }
  80% {
    transform: translate(-2.5px, -1.5px) rotate(-1.5deg);
  }
  82% {
    transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  84% {
    transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  86% {
    transform: translate(1.5px, 0.5px) rotate(0.5deg);
  }
  88% {
    transform: translate(-2.5px, 0.5px) rotate(-1.5deg);
  }
  90% {
    transform: translate(0.5px, 1.5px) rotate(0.5deg);
  }
  92% {
    transform: translate(-1.5px, 1.5px) rotate(0.5deg);
  }
  94% {
    transform: translate(-0.5px, 0.5px) rotate(-1.5deg);
  }
  96% {
    transform: translate(1.5px, -2.5px) rotate(0.5deg);
  }
  98% {
    transform: translate(-2.5px, -0.5px) rotate(-1.5deg);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

3 个答案:

答案 0 :(得分:7)

它工作正常,但是the background you see is moved to the canvas and no more belong to the body element.且您的body元素的高度为0,因为其中没有内容。您所看到的不是body元素(该元素不可见),而是从身体窃取背景的画布(您的浏览器窗口)。

更改html的背景(以便画布采用此背景)并给body增高一些以查看效果:

$(document).ready(function() {
  $('body').addClass('image').addClass('shake');
});
@import url(https://fonts.googleapis.com/css?family=Gentium+Basic);
@import url(https://fonts.googleapis.com/css?family=Dancing+Script);
.image {
  background-image: url(https://picsum.photos/200/300?image=0);
  height:200px;
}

html {
  background:red;
}

.shake {
  transform-origin: center center;;
}

.shake:hover {
  animation: shake-base 100ms infinite ease-in-out;
}

@keyframes shake-base {
  0% {
    transform: translate(0px, 0px) rotate(0deg);
  }
  2% {
    transform: translate(-2.5px, -2.5px) rotate(-1.5deg);
  }
  4% {
    transform: translate(1.5px, 0.5px) rotate(0.5deg);
  }
  6% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  8% {
    transform: translate(-0.5px, 1.5px) rotate(-1.5deg);
  }
  10% {
    transform: translate(0.5px, 0.5px) rotate(0.5deg);
  }
  12% {
    transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  14% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  16% {
    transform: translate(-1.5px, -2.5px) rotate(0.5deg);
  }
  18% {
    transform: translate(0.5px, -2.5px) rotate(-0.5deg);
  }
  20% {
    transform: translate(-2.5px, -2.5px) rotate(0.5deg);
  }
  22% {
    transform: translate(-0.5px, -1.5px) rotate(0.5deg);
  }
  24% {
    transform: translate(-1.5px, -2.5px) rotate(-1.5deg);
  }
  26% {
    transform: translate(-1.5px, 1.5px) rotate(-0.5deg);
  }
  28% {
    transform: translate(0.5px, 1.5px) rotate(-1.5deg);
  }
  30% {
    transform: translate(-0.5px, 1.5px) rotate(0.5deg);
  }
  32% {
    transform: translate(-1.5px, 0.5px) rotate(0.5deg);
  }
  34% {
    transform: translate(-2.5px, 1.5px) rotate(0.5deg);
  }
  36% {
    transform: translate(-0.5px, -2.5px) rotate(-0.5deg);
  }
  38% {
    transform: translate(0.5px, 1.5px) rotate(-0.5deg);
  }
  40% {
    transform: translate(1.5px, -1.5px) rotate(-0.5deg);
  }
  42% {
    transform: translate(-0.5px, 0.5px) rotate(-0.5deg);
  }
  44% {
    transform: translate(1.5px, 1.5px) rotate(0.5deg);
  }
  46% {
    transform: translate(0.5px, -1.5px) rotate(0.5deg);
  }
  48% {
    transform: translate(-1.5px, 0.5px) rotate(-1.5deg);
  }
  50% {
    transform: translate(-0.5px, -1.5px) rotate(-0.5deg);
  }
  52% {
    transform: translate(-0.5px, 1.5px) rotate(-0.5deg);
  }
  54% {
    transform: translate(-1.5px, 1.5px) rotate(0.5deg);
  }
  56% {
    transform: translate(-1.5px, -0.5px) rotate(-0.5deg);
  }
  58% {
    transform: translate(1.5px, 0.5px) rotate(-0.5deg);
  }
  60% {
    transform: translate(1.5px, 0.5px) rotate(-0.5deg);
  }
  62% {
    transform: translate(-1.5px, -1.5px) rotate(0.5deg);
  }
  64% {
    transform: translate(1.5px, 0.5px) rotate(-1.5deg);
  }
  66% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  68% {
    transform: translate(0.5px, -2.5px) rotate(-1.5deg);
  }
  70% {
    transform: translate(0.5px, -2.5px) rotate(-1.5deg);
  }
  72% {
    transform: translate(1.5px, -1.5px) rotate(0.5deg);
  }
  74% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  76% {
    transform: translate(1.5px, -1.5px) rotate(-0.5deg);
  }
  78% {
    transform: translate(1.5px, -1.5px) rotate(-1.5deg);
  }
  80% {
    transform: translate(-2.5px, -1.5px) rotate(-1.5deg);
  }
  82% {
    transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  84% {
    transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  86% {
    transform: translate(1.5px, 0.5px) rotate(0.5deg);
  }
  88% {
    transform: translate(-2.5px, 0.5px) rotate(-1.5deg);
  }
  90% {
    transform: translate(0.5px, 1.5px) rotate(0.5deg);
  }
  92% {
    transform: translate(-1.5px, 1.5px) rotate(0.5deg);
  }
  94% {
    transform: translate(-0.5px, 0.5px) rotate(-1.5deg);
  }
  96% {
    transform: translate(1.5px, -2.5px) rotate(0.5deg);
  }
  98% {
    transform: translate(-2.5px, -0.5px) rotate(-1.5deg);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:2)

好吧,这是我创建的一支笔,没有CSS前缀。

我已将类<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>@ViewBag.Title - My ASP.NET Application</title> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") </head> <body> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> @Html.ActionLink("Application name", "Index", "Home", null, new { @class = "navbar-brand" }) </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("About", "About", "Home")</li> <li>@Html.ActionLink("Contact", "Contact", "Home")</li> </ul> @Html.Partial("_LoginPartial") </div> </div> </div> <div class="container body-content"> @RenderBody() <hr /> <footer> <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p> </footer> </div> @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts", required: false) </body> </html> 添加到div,

image

在div中添加了一些CSS

<div class="image"></div>

并通过jQuery将类添加到图像:

 .image {
     width: 100vw;
     height: 100vh;
     background-repeat: no-repeat;
     background-size: 100% 100%;
     background-image: url(https://picsum.photos/200/300?image=0);
 }

完整代码:

 $(document).ready(function() {
     $('.image').addClass('shake');
 });
$(document).ready(function() {
  $('.image').addClass('shake');
});
.image {
  width: 100vw;
  height: 100vh;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-image: url(https://picsum.photos/200/300?image=0);
}

.shake {
  display: inline-block;
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  -webkit-transform-origin: center top;
}

.shake:hover {
  -webkit-animation-name: shake-base;
  -ms-animation-name: shake-base;
  -webkit-animation-name: shake-base;
  -webkit-animation-duration: 100ms;
  -ms-animation-duration: 100ms;
  -webkit-animation-duration: 100ms;
  -webkit-animation-iteration-count: infinite;
  -ms-animation-iteration-count: infinite;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: ease-in-out;
  -ms-animation-timing-function: ease-in-out;
  -webkit-animation-timing-function: ease-in-out;
  -webkit-animation-delay: 0s;
  -ms-animation-delay: 0s;
  -webkit-animation-delay: 0s;
}

@keyframes shake-base {
  0% {
    transform: translate(0px, 0px) rotate(0deg);
  }
  2% {
    transform: translate(-2.5px, -2.5px) rotate(-1.5deg);
  }
  4% {
    transform: translate(1.5px, 0.5px) rotate(0.5deg);
  }
  6% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  8% {
    transform: translate(-0.5px, 1.5px) rotate(-1.5deg);
  }
  10% {
    transform: translate(0.5px, 0.5px) rotate(0.5deg);
  }
  12% {
    transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  14% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  16% {
    transform: translate(-1.5px, -2.5px) rotate(0.5deg);
  }
  18% {
    transform: translate(0.5px, -2.5px) rotate(-0.5deg);
  }
  20% {
    transform: translate(-2.5px, -2.5px) rotate(0.5deg);
  }
  22% {
    transform: translate(-0.5px, -1.5px) rotate(0.5deg);
  }
  24% {
    transform: translate(-1.5px, -2.5px) rotate(-1.5deg);
  }
  26% {
    transform: translate(-1.5px, 1.5px) rotate(-0.5deg);
  }
  28% {
    transform: translate(0.5px, 1.5px) rotate(-1.5deg);
  }
  30% {
    transform: translate(-0.5px, 1.5px) rotate(0.5deg);
  }
  32% {
    transform: translate(-1.5px, 0.5px) rotate(0.5deg);
  }
  34% {
    transform: translate(-2.5px, 1.5px) rotate(0.5deg);
  }
  36% {
    transform: translate(-0.5px, -2.5px) rotate(-0.5deg);
  }
  38% {
    transform: translate(0.5px, 1.5px) rotate(-0.5deg);
  }
  40% {
    transform: translate(1.5px, -1.5px) rotate(-0.5deg);
  }
  42% {
    transform: translate(-0.5px, 0.5px) rotate(-0.5deg);
  }
  44% {
    transform: translate(1.5px, 1.5px) rotate(0.5deg);
  }
  46% {
    transform: translate(0.5px, -1.5px) rotate(0.5deg);
  }
  48% {
    transform: translate(-1.5px, 0.5px) rotate(-1.5deg);
  }
  50% {
    transform: translate(-0.5px, -1.5px) rotate(-0.5deg);
  }
  52% {
    transform: translate(-0.5px, 1.5px) rotate(-0.5deg);
  }
  54% {
    transform: translate(-1.5px, 1.5px) rotate(0.5deg);
  }
  56% {
    transform: translate(-1.5px, -0.5px) rotate(-0.5deg);
  }
  58% {
    transform: translate(1.5px, 0.5px) rotate(-0.5deg);
  }
  60% {
    transform: translate(1.5px, 0.5px) rotate(-0.5deg);
  }
  62% {
    transform: translate(-1.5px, -1.5px) rotate(0.5deg);
  }
  64% {
    transform: translate(1.5px, 0.5px) rotate(-1.5deg);
  }
  66% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  68% {
    transform: translate(0.5px, -2.5px) rotate(-1.5deg);
  }
  70% {
    transform: translate(0.5px, -2.5px) rotate(-1.5deg);
  }
  72% {
    transform: translate(1.5px, -1.5px) rotate(0.5deg);
  }
  74% {
    transform: translate(1.5px, -0.5px) rotate(0.5deg);
  }
  76% {
    transform: translate(1.5px, -1.5px) rotate(-0.5deg);
  }
  78% {
    transform: translate(1.5px, -1.5px) rotate(-1.5deg);
  }
  80% {
    transform: translate(-2.5px, -1.5px) rotate(-1.5deg);
  }
  82% {
    transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  84% {
    transform: translate(1.5px, -2.5px) rotate(-0.5deg);
  }
  86% {
    transform: translate(1.5px, 0.5px) rotate(0.5deg);
  }
  88% {
    transform: translate(-2.5px, 0.5px) rotate(-1.5deg);
  }
  90% {
    transform: translate(0.5px, 1.5px) rotate(0.5deg);
  }
  92% {
    transform: translate(-1.5px, 1.5px) rotate(0.5deg);
  }
  94% {
    transform: translate(-0.5px, 0.5px) rotate(-1.5deg);
  }
  96% {
    transform: translate(1.5px, -2.5px) rotate(0.5deg);
  }
  98% {
    transform: translate(-2.5px, -0.5px) rotate(-1.5deg);
  }
}

答案 2 :(得分:2)

将您的内容放入包装器中(示例中的.body-content),并将震动类应用于此元素。您还应该对HTML和正文应用全高。

请注意,将摇动类应用于整个身体可能会产生不良后果,因为其内容会溢出,从而导致显示浏览器滚动条。

$(document).ready(function(){
  $('body .body-content').addClass('image').addClass('shake');
});
@import url(https://fonts.googleapis.com/css?family=Gentium+Basic);
@import url(https://fonts.googleapis.com/css?family=Dancing+Script);

.image {
  background-image:url(https://picsum.photos/200/300?image=0);
}

html{
  height: 100%;
}

body {
  min-height: 100%;
  padding:0;
  margin:0;
  display: flex;
  align-items: stretch;
}

.body-content{
  width:100%;
  padding:0;
  margin:0;
}


.shake {
  display: inline-block;
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  -webkit-transform-origin: center center;
}
.shake:hover {
  -webkit-animation-name: shake-base;
  -ms-animation-name: shake-base;
  -webkit-animation-name: shake-base;
  -webkit-animation-duration: 100ms;
  -ms-animation-duration: 100ms;
  -webkit-animation-duration: 100ms;
  -webkit-animation-iteration-count: infinite;
  -ms-animation-iteration-count: infinite;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: ease-in-out;
  -ms-animation-timing-function: ease-in-out;
  -webkit-animation-timing-function: ease-in-out;
  -webkit-animation-delay: 0s;
  -ms-animation-delay: 0s;
  -webkit-animation-delay: 0s;
}

@-webkit-keyframes shake-base { 0% { -webkit-transform: translate(0px, 0px) rotate(0deg); }
  2% { -webkit-transform: translate(1.5px, -2.5px) rotate(-0.5deg); }
  4% { -webkit-transform: translate(-2.5px, -2.5px) rotate(-0.5deg); }
  6% { -webkit-transform: translate(-0.5px, -2.5px) rotate(-0.5deg); }
  8% { -webkit-transform: translate(-0.5px, -1.5px) rotate(-1.5deg); }
  10% { -webkit-transform: translate(1.5px, -1.5px) rotate(-0.5deg); }
  12% { -webkit-transform: translate(0.5px, -0.5px) rotate(-1.5deg); }
  14% { -webkit-transform: translate(1.5px, 1.5px) rotate(-0.5deg); }
  16% { -webkit-transform: translate(0.5px, -2.5px) rotate(-0.5deg); }
  18% { -webkit-transform: translate(-0.5px, -1.5px) rotate(0.5deg); }
  20% { -webkit-transform: translate(1.5px, -0.5px) rotate(0.5deg); }
  22% { -webkit-transform: translate(-1.5px, 0.5px) rotate(0.5deg); }
  24% { -webkit-transform: translate(-2.5px, 1.5px) rotate(-1.5deg); }
  26% { -webkit-transform: translate(1.5px, -0.5px) rotate(-1.5deg); }
  28% { -webkit-transform: translate(0.5px, -0.5px) rotate(-1.5deg); }
  30% { -webkit-transform: translate(-0.5px, -0.5px) rotate(-1.5deg); }
  32% { -webkit-transform: translate(-2.5px, 1.5px) rotate(0.5deg); }
  34% { -webkit-transform: translate(0.5px, -0.5px) rotate(0.5deg); }
  36% { -webkit-transform: translate(0.5px, -0.5px) rotate(-0.5deg); }
  38% { -webkit-transform: translate(1.5px, -0.5px) rotate(-0.5deg); }
  40% { -webkit-transform: translate(-2.5px, 0.5px) rotate(-0.5deg); }
  42% { -webkit-transform: translate(-2.5px, 1.5px) rotate(-1.5deg); }
  44% { -webkit-transform: translate(0.5px, 0.5px) rotate(-0.5deg); }
  46% { -webkit-transform: translate(-2.5px, -1.5px) rotate(-0.5deg); }
  48% { -webkit-transform: translate(1.5px, 1.5px) rotate(0.5deg); }
  50% { -webkit-transform: translate(1.5px, 1.5px) rotate(-1.5deg); }
  52% { -webkit-transform: translate(1.5px, -1.5px) rotate(-0.5deg); }
  54% { -webkit-transform: translate(1.5px, -2.5px) rotate(0.5deg); }
  56% { -webkit-transform: translate(1.5px, -0.5px) rotate(-0.5deg); }
  58% { -webkit-transform: translate(1.5px, -0.5px) rotate(0.5deg); }
  60% { -webkit-transform: translate(-0.5px, -1.5px) rotate(-0.5deg); }
  62% { -webkit-transform: translate(0.5px, 0.5px) rotate(-1.5deg); }
  64% { -webkit-transform: translate(-2.5px, 0.5px) rotate(-0.5deg); }
  66% { -webkit-transform: translate(0.5px, 1.5px) rotate(0.5deg); }
  68% { -webkit-transform: translate(-0.5px, -2.5px) rotate(-1.5deg); }
  70% { -webkit-transform: translate(0.5px, -2.5px) rotate(-1.5deg); }
  72% { -webkit-transform: translate(0.5px, -1.5px) rotate(0.5deg); }
  74% { -webkit-transform: translate(-2.5px, 1.5px) rotate(-0.5deg); }
  76% { -webkit-transform: translate(-1.5px, 0.5px) rotate(-0.5deg); }
  78% { -webkit-transform: translate(-2.5px, -2.5px) rotate(-1.5deg); }
  80% { -webkit-transform: translate(-0.5px, 0.5px) rotate(0.5deg); }
  82% { -webkit-transform: translate(-2.5px, -0.5px) rotate(0.5deg); }
  84% { -webkit-transform: translate(-1.5px, 1.5px) rotate(-0.5deg); }
  86% { -webkit-transform: translate(-2.5px, 1.5px) rotate(-0.5deg); }
  88% { -webkit-transform: translate(-1.5px, -2.5px) rotate(-0.5deg); }
  90% { -webkit-transform: translate(-0.5px, -0.5px) rotate(-1.5deg); }
  92% { -webkit-transform: translate(1.5px, -1.5px) rotate(-1.5deg); }
  94% { -webkit-transform: translate(-0.5px, -1.5px) rotate(-1.5deg); }
  96% { -webkit-transform: translate(-2.5px, 0.5px) rotate(-0.5deg); }
  98% { -webkit-transform: translate(1.5px, -2.5px) rotate(-1.5deg); } }

@-ms-keyframes shake-base { 0% { -ms-transform: translate(0px, 0px) rotate(0deg); }
  2% { -ms-transform: translate(1.5px, 1.5px) rotate(0.5deg); }
  4% { -ms-transform: translate(0.5px, -2.5px) rotate(-0.5deg); }
  6% { -ms-transform: translate(-2.5px, 1.5px) rotate(-1.5deg); }
  8% { -ms-transform: translate(-2.5px, -0.5px) rotate(-1.5deg); }
  10% { -ms-transform: translate(-1.5px, -0.5px) rotate(-1.5deg); }
  12% { -ms-transform: translate(-0.5px, -2.5px) rotate(-1.5deg); }
  14% { -ms-transform: translate(-2.5px, -2.5px) rotate(0.5deg); }
  16% { -ms-transform: translate(-1.5px, -1.5px) rotate(-0.5deg); }
  18% { -ms-transform: translate(-0.5px, 0.5px) rotate(-0.5deg); }
  20% { -ms-transform: translate(-1.5px, 0.5px) rotate(-0.5deg); }
  22% { -ms-transform: translate(1.5px, -1.5px) rotate(-1.5deg); }
  24% { -ms-transform: translate(-2.5px, -0.5px) rotate(-0.5deg); }
  26% { -ms-transform: translate(-0.5px, -2.5px) rotate(-0.5deg); }
  28% { -ms-transform: translate(0.5px, -1.5px) rotate(-0.5deg); }
  30% { -ms-transform: translate(-0.5px, 0.5px) rotate(-0.5deg); }
  32% { -ms-transform: translate(-1.5px, 1.5px) rotate(-0.5deg); }
  34% { -ms-transform: translate(-0.5px, -1.5px) rotate(-1.5deg); }
  36% { -ms-transform: translate(1.5px, -0.5px) rotate(-0.5deg); }
  38% { -ms-transform: translate(-2.5px, 0.5px) rotate(-0.5deg); }
  40% { -ms-transform: translate(1.5px, -1.5px) rotate(0.5deg); }
  42% { -ms-transform: translate(-0.5px, 1.5px) rotate(-0.5deg); }
  44% { -ms-transform: translate(-0.5px, 0.5px) rotate(-0.5deg); }
  46% { -ms-transform: translate(1.5px, 0.5px) rotate(-1.5deg); }
  48% { -ms-transform: translate(1.5px, 0.5px) rotate(0.5deg); }
  50% { -ms-transform: translate(-0.5px, -0.5px) rotate(-0.5deg); }
  52% { -ms-transform: translate(-2.5px, 1.5px) rotate(0.5deg); }
  54% { -ms-transform: translate(-0.5px, -2.5px) rotate(0.5deg); }
  56% { -ms-transform: translate(-0.5px, 1.5px) rotate(0.5deg); }
  58% { -ms-transform: translate(-1.5px, 0.5px) rotate(-0.5deg); }
  60% { -ms-transform: translate(-0.5px, -1.5px) rotate(0.5deg); }
  62% { -ms-transform: translate(1.5px, -1.5px) rotate(0.5deg); }
  64% { -ms-transform: translate(0.5px, 0.5px) rotate(-1.5deg); }
  66% { -ms-transform: translate(-0.5px, 1.5px) rotate(-1.5deg); }
  68% { -ms-transform: translate(-1.5px, -2.5px) rotate(-0.5deg); }
  70% { -ms-transform: translate(-1.5px, -2.5px) rotate(-1.5deg); }
  72% { -ms-transform: translate(-2.5px, -0.5px) rotate(-1.5deg); }
  74% { -ms-transform: translate(0.5px, 1.5px) rotate(0.5deg); }
  76% { -ms-transform: translate(-2.5px, -2.5px) rotate(-1.5deg); }
  78% { -ms-transform: translate(-1.5px, -1.5px) rotate(-0.5deg); }
  80% { -ms-transform: translate(-1.5px, -0.5px) rotate(-1.5deg); }
  82% { -ms-transform: translate(0.5px, 1.5px) rotate(-1.5deg); }
  84% { -ms-transform: translate(-2.5px, 0.5px) rotate(-1.5deg); }
  86% { -ms-transform: translate(1.5px, -1.5px) rotate(0.5deg); }
  88% { -ms-transform: translate(0.5px, -2.5px) rotate(0.5deg); }
  90% { -ms-transform: translate(-1.5px, -1.5px) rotate(-1.5deg); }
  92% { -ms-transform: translate(-1.5px, -1.5px) rotate(-1.5deg); }
  94% { -ms-transform: translate(-0.5px, 1.5px) rotate(-0.5deg); }
  96% { -ms-transform: translate(-1.5px, 0.5px) rotate(-0.5deg); }
  98% { -ms-transform: translate(-0.5px, -1.5px) rotate(-1.5deg); } }

@keyframes shake-base { 0% { transform: translate(0px, 0px) rotate(0deg); }
  2% { transform: translate(-2.5px, -2.5px) rotate(-1.5deg); }
  4% { transform: translate(1.5px, 0.5px) rotate(0.5deg); }
  6% { transform: translate(1.5px, -0.5px) rotate(0.5deg); }
  8% { transform: translate(-0.5px, 1.5px) rotate(-1.5deg); }
  10% { transform: translate(0.5px, 0.5px) rotate(0.5deg); }
  12% { transform: translate(1.5px, -2.5px) rotate(-0.5deg); }
  14% { transform: translate(1.5px, -0.5px) rotate(0.5deg); }
  16% { transform: translate(-1.5px, -2.5px) rotate(0.5deg); }
  18% { transform: translate(0.5px, -2.5px) rotate(-0.5deg); }
  20% { transform: translate(-2.5px, -2.5px) rotate(0.5deg); }
  22% { transform: translate(-0.5px, -1.5px) rotate(0.5deg); }
  24% { transform: translate(-1.5px, -2.5px) rotate(-1.5deg); }
  26% { transform: translate(-1.5px, 1.5px) rotate(-0.5deg); }
  28% { transform: translate(0.5px, 1.5px) rotate(-1.5deg); }
  30% { transform: translate(-0.5px, 1.5px) rotate(0.5deg); }
  32% { transform: translate(-1.5px, 0.5px) rotate(0.5deg); }
  34% { transform: translate(-2.5px, 1.5px) rotate(0.5deg); }
  36% { transform: translate(-0.5px, -2.5px) rotate(-0.5deg); }
  38% { transform: translate(0.5px, 1.5px) rotate(-0.5deg); }
  40% { transform: translate(1.5px, -1.5px) rotate(-0.5deg); }
  42% { transform: translate(-0.5px, 0.5px) rotate(-0.5deg); }
  44% { transform: translate(1.5px, 1.5px) rotate(0.5deg); }
  46% { transform: translate(0.5px, -1.5px) rotate(0.5deg); }
  48% { transform: translate(-1.5px, 0.5px) rotate(-1.5deg); }
  50% { transform: translate(-0.5px, -1.5px) rotate(-0.5deg); }
  52% { transform: translate(-0.5px, 1.5px) rotate(-0.5deg); }
  54% { transform: translate(-1.5px, 1.5px) rotate(0.5deg); }
  56% { transform: translate(-1.5px, -0.5px) rotate(-0.5deg); }
  58% { transform: translate(1.5px, 0.5px) rotate(-0.5deg); }
  60% { transform: translate(1.5px, 0.5px) rotate(-0.5deg); }
  62% { transform: translate(-1.5px, -1.5px) rotate(0.5deg); }
  64% { transform: translate(1.5px, 0.5px) rotate(-1.5deg); }
  66% { transform: translate(1.5px, -0.5px) rotate(0.5deg); }
  68% { transform: translate(0.5px, -2.5px) rotate(-1.5deg); }
  70% { transform: translate(0.5px, -2.5px) rotate(-1.5deg); }
  72% { transform: translate(1.5px, -1.5px) rotate(0.5deg); }
  74% { transform: translate(1.5px, -0.5px) rotate(0.5deg); }
  76% { transform: translate(1.5px, -1.5px) rotate(-0.5deg); }
  78% { transform: translate(1.5px, -1.5px) rotate(-1.5deg); }
  80% { transform: translate(-2.5px, -1.5px) rotate(-1.5deg); }
  82% { transform: translate(1.5px, -2.5px) rotate(-0.5deg); }
  84% { transform: translate(1.5px, -2.5px) rotate(-0.5deg); }
  86% { transform: translate(1.5px, 0.5px) rotate(0.5deg); }
  88% { transform: translate(-2.5px, 0.5px) rotate(-1.5deg); }
  90% { transform: translate(0.5px, 1.5px) rotate(0.5deg); }
  92% { transform: translate(-1.5px, 1.5px) rotate(0.5deg); }
  94% { transform: translate(-0.5px, 0.5px) rotate(-1.5deg); }
  96% { transform: translate(1.5px, -2.5px) rotate(0.5deg); }
  98% { transform: translate(-2.5px, -0.5px) rotate(-1.5deg); } }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <div class="body-content"></div>
</body>