html - 将此 css 运动模糊效果反转为垂直

标签 html css css-transitions css-animations

我有这段代码允许对象左右移动模糊,但我希望它垂直移动蓝色,以便它从上到下然后再回到上。你能帮帮我吗?

http://jsfiddle.net/db8gr4y6/

  #outer {
    position: relative;
    margin: 10px;
  }
  #mb {
    position: absolute;
    left: 0;
    font-size: 2em;
    font-weight: bold;
    padding: 0.2em 1em;
    color: #fff;
    background-color: #600;
    border: 0.2em solid #c00;
    border-radius: 8px;
    text-shadow: 0 0 5px rgba(255, 255, 255, 0);
    box-shadow: 0 0 2px rgba(200, 0, 0, 0);
    -webkit-animation: motionblur 4s ease-in-out infinite;
    animation: motionblur 4s ease-in-out infinite;
  }
  @-webkit-keyframes motionblur {
    0% {
      left: 0;
      text-shadow: 0 0 0 rgba(255, 255, 255, 0);
      box-shadow: 0 0 0 rgba(200, 0, 0, 0);
    }
    5% {
      left: 0;
      -webkit-transform-origin: 0 0;
      -webkit-transform: scaleX(0.85);
    }
    25% {
      text-shadow: -5px 0 5px rgba(255, 255, 255, 1);
      box-shadow: -15px 0 10px -5px rgba(200, 0, 0, 0.5);
      -webkit-transform: scaleX(1.1) skewX(-4deg);
    }
    50% {
      left: 300px;
      text-shadow: 0 0 0 rgba(255, 255, 255, 0);
      box-shadow: 0 0 0 rgba(200, 0, 0, 0);
      -webkit-transform: scaleX(1) skewX(0deg);
    }
    55% {
      left: 300px;
      -webkit-transform-origin: 100% 0;
      -webkit-transform: scaleX(0.85);
    }
    75% {
      text-shadow: 5px 0 5px rgba(255, 255, 255, 1);
      box-shadow: 15px 0 10px -5px rgba(200, 0, 0, 0.5);
      -webkit-transform: scaleX(1.1) skewX(4deg);
    }
    100% {
      left: 0px;
      text-shadow: 0 0 0 rgba(255, 255, 255, 0);
      box-shadow: 0 0 0 rgba(200, 0, 0, 0);
      -webkit-transform: scaleX(1) skewX(0deg);
    }
  }
  @keyframes motionblur {
    0% {
      left: 0;
      text-shadow: 0 0 0 rgba(255, 255, 255, 0);
      box-shadow: 0 0 0 rgba(200, 0, 0, 0);
    }
    5% {
      left: 0;
      transform-origin: 0 0;
      transform: scaleX(0.85);
    }
    25% {
      text-shadow: -5px 0 5px rgba(255, 255, 255, 1);
      box-shadow: -15px 0 10px -5px rgba(200, 0, 0, 0.5);
      transform: scaleX(1.1) skewX(-4deg);
    }
    50% {
      left: 300px;
      text-shadow: 0 0 0 rgba(255, 255, 255, 0);
      box-shadow: 0 0 0 rgba(200, 0, 0, 0);
      transform: scaleX(1) skewX(0deg);
    }
    55% {
      left: 300px;
      transform-origin: 100% 0;
      transform: scaleX(0.85);
    }
    75% {
      text-shadow: 5px 0 5px rgba(255, 255, 255, 1);
      box-shadow: 15px 0 10px -5px rgba(200, 0, 0, 0.5);
      transform: scaleX(1.1) skewX(4deg);
    }
    100% {
      left: 0px;
      text-shadow: 0 0 0 rgba(255, 255, 255, 0);
      box-shadow: 0 0 0 rgba(200, 0, 0, 0);
      transform: scaleX(1) skewX(0deg);
    }
<div id="outer">
  <div id="mb">Motion Blur</div>
</div>

最佳答案

试试这个来反转动画。

只需将所有 left 属性替换为 Top

X、ScaleXSkewX 的所有变换属性到 SkewX SkewY

#outer {
  position: relative;
  margin: 10px;
}
#mb {
  position: absolute;
  left: 0;
  font-size: 2em;
  font-weight: bold;
  padding: 0.2em 1em;
  color: #fff;
  background-color: #600;
  border: 0.2em solid #c00;
  border-radius: 8px;
  text-shadow: 0 0 5px rgba(255, 255, 255, 0);
  box-shadow: 0 0 2px rgba(200, 0, 0, 0);
  -webkit-animation: motionblur 4s ease-in-out infinite;
  animation: motionblur 4s ease-in-out infinite;
}
@-webkit-keyframes motionblur {
  0% {
    top: 0;
    text-shadow: 0 0 0 rgba(255, 255, 255, 0);
    box-shadow: 0 0 0 rgba(200, 0, 0, 0);
  }
  5% {
    top: 0;
    -webkit-transform-origin: 0 0;
    -webkit-transform: scaleY(0.85);
  }
  25% {
    text-shadow: -5px 0 5px rgba(255, 255, 255, 1);
    box-shadow: -15px 0 10px -5px rgba(200, 0, 0, 0.5);
    -webkit-transform: scaleY(1.1) skewY(-4deg);
  }
  50% {
    top: 300px;
    text-shadow: 0 0 0 rgba(255, 255, 255, 0);
    box-shadow: 0 0 0 rgba(200, 0, 0, 0);
    -webkit-transform: scaleY(1) skewY(0deg);
  }
  55% {
    left: 300px;
    -webkit-transform-origin: 100% 0;
    -webkit-transform: scaleY(0.85);
  }
  75% {
    text-shadow: 5px 0 5px rgba(255, 255, 255, 1);
    box-shadow: 15px 0 10px -5px rgba(200, 0, 0, 0.5);
    -webkit-transform: scaleY(1.1) skewY(4deg);
  }
  100% {
    top: 0px;
    text-shadow: 0 0 0 rgba(255, 255, 255, 0);
    box-shadow: 0 0 0 rgba(200, 0, 0, 0);
    -webkit-transform: scaleY(1) skewY(0deg);
  }
}
@keyframes motionblur {
  0% {
    top: 0;
    text-shadow: 0 0 0 rgba(255, 255, 255, 0);
    box-shadow: 0 0 0 rgba(200, 0, 0, 0);
  }
  5% {
    top: 0;
    -webkit-transform-origin: 0 0;
    -webkit-transform: scaleY(0.85);
  }
  25% {
    text-shadow: -5px 0 5px rgba(255, 255, 255, 1);
    box-shadow: -15px 0 10px -5px rgba(200, 0, 0, 0.5);
    -webkit-transform: scaleY(1.1) skewY(-4deg);
  }
  50% {
    top: 300px;
    text-shadow: 0 0 0 rgba(255, 255, 255, 0);
    box-shadow: 0 0 0 rgba(200, 0, 0, 0);
    -webkit-transform: scaleY(1) skewY(0deg);
  }
  55% {
    top: 300px;
    -webkit-transform-origin: 100% 0;
    -webkit-transform: scaleY(0.85);
  }
  75% {
    text-shadow: 5px 0 5px rgba(255, 255, 255, 1);
    box-shadow: 15px 0 10px -5px rgba(200, 0, 0, 0.5);
    -webkit-transform: scaleY(1.1) skewY(4deg);
  }
  100% {
    top: 0px;
    text-shadow: 0 0 0 rgba(255, 255, 255, 0);
    box-shadow: 0 0 0 rgba(200, 0, 0, 0);
    -webkit-transform: scaleY(1) skewY(0deg);
  }
<div id="outer">
  <div id="mb">Motion Blur</div>
</div>

关于html - 将此 css 运动模糊效果反转为垂直,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31790381/

相关文章:

javascript - 如何使用文本框作为常量输入?

html - 在下拉多个复选框中选择最后 3 个复选框中的任何一个时打开一个新的文本字段

javascript - 调整幻灯片放映以仅响应单个按键

javascript + 不透明度转换不起作用

javascript - 在IE7和IE6中,设置element.style ['display' ] = 'inherit'会抛出异常

css - 子 CSS3 过渡在 FireFox 中不起作用

javascript - 如何在 Javascript 中按值(而不是引用)保存所选元素的 Node ?

css - 页脚定位问题

html - ul in ul 的正确语义

css - 在手机上将圆圈居中对齐