gpt4 book ai didi

javascript - 纯CSS使用的图片倒影效果

转载 作者:太空狗 更新时间:2023-10-29 13:25:45 25 4
gpt4 key购买 nike

我在 <img> 中有一张图片标签。我的目标是仅使用 CSS 创建该图像的反射。它还必须与所有浏览器兼容。我尝试了多种方法来做到这一点,其中之一就是这个 JS Fiddle

我想要的:
反射上从上到下的不透明度淡化为零。目前它仅适用于使用 -webkit-box-reflect 组合的 webkit 浏览器。和 -webkit-gradient .
我希望它也能在 Mozilla 上运行。

我现在拥有的:
JSfiddle中可以看出我在 webkit 浏览器中使用:

-webkit-box-reflect: below 0px 
-webkit-gradient(linear, left top, left bottombottom, from(transparent), color-stop(70%, transparent) , to(rgba(250, 250, 250, 0.1)));

我为 Mozilla 尝试了以下方法:

#moz-reflect:after {  
content: "";
display: block;
background: -moz-element(#moz-reflect) no-repeat;
width: auto;
height: 200px;
margin-bottom: 100px;
-moz-transform: scaleY(-1);
}

哪里#moz-reflect<img> 的容器 div .

我很感激只能用 CSS 解决问题的答案。有很多图像(图标)必须应用此效果。

如果仅使用 CSS 无法让它在 Mozilla 中工作,那么我不介意走 JavaScript 之路。

更新它必须在可以是图像或黑色或任何其他颜色的自定义背景上工作。

最佳答案

我已经完全更改了您的代码,我正在使用具有 transform 属性的 CSS3 渐变,这是具有最大兼容性的 Pure CSS

在这里,我使用的关键是 rgba() 以及应用于第二个 imgtransform 属性,目标是使用 nth-of-type 伪。

此外,请确保您已在父元素上调用了 position: relative;,因为我使用 :after pseudo 作为 底部的渐变叠加层,所以我使用 position: absolute;bottom 设置为 0

Demo (在使用 rotate() 时犯了一点错误,因为它不会产生反射效果,只会旋转图像,请引用我的第二个演示)

Demo 2 (使用 scale 镜像图像,也可以使用 rotateY,正如评论中所指出的......)

#moz-reflect:after {
content:"";
width: 100%;
height: 200px;
position: absolute;
bottom: 0;
left: 0;
background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.67) 49%, rgba(255, 255, 255, 1) 100%);
/*I've removed proprietary gradient codes from here, you can get it in the demo*/
}

#moz-reflect img:nth-of-type(2) {
-webkit-transform: scaleY(-1);
-moz-transform: scaleY(-1);
-ms-transform: scaleY(-1);
-o-transform: scaleY(-1);
transform: scaleY(-1);
}

#moz-reflect {
position: relative;
}

Demo 3 (唯一的区别是,我使用 height: 50%; 作为 :after 伪,所以我们不必硬编码)

在上面的代码块中唯一要修改的代码是 height 属性,它设置为 50%

#moz-reflect:after {
content:"";
width: 100%;
height: 50%; /* Changed the unit over here */
position: absolute;
bottom: 0;
left: 0;
background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.67) 49%, rgba(255, 255, 255, 1) 100%);
}

注意:为了创建最适合的渐变,比如说黑色背景的网站需要黑色不透明渐变,您可以使用 Color Zilla 制作自己的渐变。 .

图像反射,使用black 作为body background。上面代码片段的唯一变化是将 background: #000; 应用于 body 并且我相应地调整了渐变。

background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.67) 49%, rgba(0, 0, 0, 1) 100%);

Demo (对于使用较暗背景的网站,在本例中为黑色)

注意:黑色demo中没有添加渐变的专有属性

关于javascript - 纯CSS使用的图片倒影效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21635990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com