【问题标题】:CSS Image Underwater effectCSS 图像水下效果
【发布时间】:2018-02-28 22:25:16
【问题描述】:

所以我目前正在尝试使用 Css 关键帧在某些图像上实现类似水下的效果。我正在使用“transform: skew”来做到这一点,但结果不是很好,而且看起来一点也不自然。我希望图像以流畅的方式移动和扭曲,就好像它们在水下一样。

我的 CSS:

 @keyframes imgevento{
        0%, 100% {
            transform: skew(0deg, 0deg);

        }
        50% { transform: skew(2deg, 2deg);

        }
    }

    .imgevento{
        transform-origin:50% 50%;
        animation:imgevento 6s linear alternate infinite;
}

反正我可以用 css 达到我想要的结果吗?

【问题讨论】:

  • underwater--> 所以你的意思是失真和波浪等?
  • 我不认为 CSS 可以做到这一点……但 JS 可以。 ariya.io/2012/03/underwater-effect-with-html5-canvas
  • 我在移动/午餐,所以我不能真正给你一个广泛的答案,但我会说你的代码行数太少,无法制作流畅的水下效果。首先想到的是,您可能必须使用 ":after 和 :before" 选择器来分割图像。就像将图像分成几部分一样,这样您就可以为每个和平设置动画以赋予它一种有机的感觉。感觉偏斜并不是实现这一目标的最佳选择。下班了,我去看看,如果到时候没人接。

标签: css image animation transform keyframe


【解决方案1】:

我认为一个关键是将扭曲的元素放入容器元素中并隐藏溢出,以创建更真实的视野。

除了skew,一些额外的过滤器、变换和潜在的CSS渐变可以应用于一些伪元素来创建一些“光”效果。

效果也可能取决于所使用的图像 - 增强或突出图像的特定元素,如光线等。

这只是一个开始,使用容器来裁剪视图,以及一些saturateinvert 过滤器。最好在全屏模式下观看以获得身临其境的体验。

html,
body {
  padding: 0;
  margin: 0;
  overflow-x: hidden;
  max-width: 570px;
}

.imgevento-container {
  overflow: hidden;
}

.imgevento {
  transform-origin: center center;
  animation: imgevento 6s ease-in-out alternate infinite;
}

@keyframes imgevento {
  0%,
  100% {
    transform: skew(0deg, 0deg) scale(1.35, 1.35);
    filter: saturate(100%) invert(0%);
  }
  
  25% {
    filter: saturate(180%) invert(10%);
  }
  
  50% {
    transform: skew(2deg, 2deg) scale(1.35, 1.35);
    filter: saturate(100%) invert(0%);
  }
  
  75% {
    filter: saturate(150%) invert(20%);
  }
}
<div class="imgevento-container">
  <img class="imgevento" src="https://i.imgur.com/fypMB4q.jpg" />
</div>

【讨论】:

  • 非常感谢!我用过这个,现在看起来好多了。我正在考虑现在实现一个 CSS 渐变来增强效果。我应该将它与伪元素一起使用吗?
  • 可能需要添加一个伪元素,具有某种半透明渐变
猜你喜欢
  • 1970-01-01
  • 2017-04-06
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 2014-03-18
  • 2016-02-24
  • 1970-01-01
相关资源
最近更新 更多