您现在的位置是:网站首页> 编程资料编程资料
CSS 实现多彩、智能的阴影效果css3中less实现文字长阴影(long shadow)CSS中使用文本阴影与元素阴影效果
2021-09-02
1150人已围观
简介 这篇文章主要介绍了CSS 实现多彩、智能的阴影效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

背景
有没有想过如何创建从前景元素中继承某些颜色的阴影效果?阅读本文并找出如何实现方法吧!
前几天我经过家得宝(Home Depot,美国家得宝公司,全球领先的家居建材用品零售商),他们正在大规模展销正在出售的智能灯 💡,其中一种是一系列灯泡位于电视机后面,它们会投射出与电视机前景屏幕上显示的颜色相近的灯光,类似于以下图片所示。

注意电视后面发生了什么。电视机屏幕前景中显示的颜色被灯投影成彩色阴影背景。随着屏幕上颜色的变化,背景投影颜色也发生变化。真的很酷,对吧?
看到这一点后,自然而然地我首先想到的是,能否使用 web 开发技术创建一个五颜六色的,并且足够聪明可以模拟前景颜色的阴影呢?事实证明,在只使用 CSS 的情况下,完全可以实现这种效果。在本文中,我们将研究如何实现。
开干!
令其成真
在接下来的段落中你将会发现,刚开始时,乍一看仅使用 CSS 来创建智能的彩色阴影似乎是一项艰巨的任务,当我们循序渐进,把困难部分拆分成更小的部分时,你就会发现一切都会变得容易理解消化。在接下来的章节中,我们将创建一个如下所示的示例:

你看到的是一张寿司 🍣 的图片,后面有与前景颜色相对应的阴影。为了强调我们所做的是动态的,给阴影增加了一个脉动动画效果。通过这个有效的示例,让我们深入探讨如何仅在使用 HTML 和 CSS 的情况下让一切变得生动起来。
展示图片
用于展示寿司 🍣 的 HTML 如下所示并没有什么特别:
我们有一个父级 div 元素 .parent,它包含一个子级元素 .suchi 用于展示 🍣。我们通过使用一张背景图片的形式来实例化 🍣,.sushi 元素的具体样式规则如下:
.sushi { margin: 100px; width: 150px; height: 150px; background-image: url("https://www.kirupa.com/icon/1f363.svg"); background-repeat: no-repeat; background-size: contain; }在上面样式规则中,我们将 div 设置为 150 * 150 宽高像素,并且设置了 background-image 及相关属性,如果展示一下我们现在所实现的结果,可以看到如下图所示的内容。

创建阴影
现在我们已经展示出了我们的寿司 🍣 图片,剩下更加有趣的部分就是来定义阴影。我们将使用指定一个子伪元素 ::after 来定义阴影,它将做 3 件事情:
- 直接位于图片所在
div的后面; - 继承与父元素相同的背景图像;
- 通过滤镜产生出多彩的
drop-shadow阴影效果。
上述3个功能由以下2个样式规则实现:
.colorfulShadow { position: relative; } .colorfulShadow::after { content: ""; width: 100%; height: 100%; position: absolute; background: inherit; background-position: center center; filter: drop-shadow(0px 0px 10px rgba(0, 0, 0, 0.50)) blur(20px); z-index: -1; }花一点时间来浏览下这里的实现,密切关注每个属性和对应值。最值得注意的是 background 属性和 filter 属性。 background 的值是 inherit,这意味着它将继承父级元素的背景值:
background: inherit;
filter 属性定义了两个滤镜值:drop-shadow 和 blur
filter: drop-shadow(0px 0px 10px rgba(0, 0, 0, 0.50)) blur(20px);
我们的 drop-shadow 滤镜设置了一个 50% 透明度的黑色阴影。blur 滤镜为为元素设置 20px 的模糊效果。这两个滤镜的结合最终就可以创造出多彩的阴影,当这两条样式规则生效时,我们就可以看到如下图出现在寿司 🍣 图像后面彩色的阴影:

到这一点,我们已经实现了很多。为了完整性,如果你想要多彩的阴影具有放大缩小的动画效果,以下额外的 CSS 可以帮你实现:
.colorfulShadow { position: relative; } .colorfulShadow::after { content: ""; width: 100%; height: 100%; position: absolute; background: inherit; background-position: center center; filter: drop-shadow(0px 0px 10px rgba(0, 0, 0, 0.50)) blur(20px); z-index: -1; /* animation time! */ animation: oscillate 1s cubic-bezier(.17, .67, .45, 1.32) infinite alternate; } @keyframes oscillate { from { transform: scale(1, 1); } to { transform: scale(1.3, 1.3); } }如果你想在不使用循环动画效果的情况下增强交互性,也可以使用 CSS transition 来改变阴影的行为,如在 hover 操作情况下。需要强调的难点是对待伪元素只需要像对待用 HTML 创建的或 JavaScript 动态创建的元素一样,唯一的不同是这个元素完全是仅使用 CSS 创建的!
结论
伪元素允许我们使用 CSS 来创建通常在 HTML 和 JavaScript 领域内完成的元素创建任务。对于我们多彩的智能阴影来说,我们依赖于父元素有一个背景图像集,这使得我们定义一个既可以继承父级背景细节又可以设置模糊效果和投影效果的子元素变得容易。虽然这一切都很好,减少了我们大量的复制粘贴工作,但是这种方法也不是很灵活。
如果我想将这样的阴影应用到一个不只是带有背景图像的空元素上,该怎么办呢?如果我有一个 HTML 元素如一个按钮或组合框,我想应用这种阴影效果呢?一种解决方案是依靠 JavaScript 复制 DOM 中的相应元素,将其放置在前台元素底层,应用过滤器,这样也是一种方法。虽然这可以实现效果,但我想到这个有点重复 DOM 元素的沉重过程就不寒而栗。更糟糕的是,JavaScript 没有将你想提供的任意视觉意向转换为渲染目标位图的能力!🥶
本文是翻译,原文地址请浏览:https://www.kirupa.com/html5/creating_colorful_smart_shadows.htm
本文地址:https://www.cnblogs.com/dragonir/p/14758359.html 作者:dragonir
到此这篇关于CSS 实现多彩、智能的阴影的文章就介绍到这了,更多相关css实现阴影内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
相关内容
- 解析CSS 提取图片主题色功能(小技巧)CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- 为什么你写的height:100%不起作用 详解HTML元素的height、offsetHeight、clientHeight、scrollTop等梳理CSS中width和height的默认值auto与%案例详解详解HTML中字体使用line-height依然不能垂直居中解决办法CSS line-height的如何继承的问题深入理解 line-height 和 vertical-alignCSS中的line-height行高属性学习教程深入理解CSS height属性设置元素的高度
- css display table 自适应高度、宽度问题的解决详解CSS多种三列自适应布局实现CSS实现背景图片屏幕自适应的实现css3实现自适应浏览器图片布局特效CSS实现表格首行首列固定和自适应窗口的实例代码css实现六种自适应两栏布局方式CSS将img图片填满父容器div并自适应容器大小css实现两栏布局,左侧固定宽,右侧自适应的多种方法
- CSS 新特性 contain控制页面的重绘与重排问题css重绘与重排的方法
- css position fixed 左右双定位的实现代码CSS之定位布局(position,定位布局技巧)css定位position引发的层级关系问题详解详解css粘性定位position:sticky问题采坑CSS position属性和实例应用演示CSS的position定位和float浮动详解css关于position属性的用法详解(绝对定位和相对定位的混淆)
- css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3 transform(变形)和transform-origin(变形原点)调试工具
- CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果CSS3 实现的动态星空背景jQuery+CSS3制作卡片式步骤操作ui交互特效代码基于CSS3画一个iPhoneCSS3 实现NES游戏机的示例代码
- 利用HTML5+css3+jquery+weui实现仿微信聊天界面功能HTML5仿微信聊天界面、微信朋友圈实例代码详解html5 canvas 微信海报分享(个人爬坑)HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能html5 canvas合成海报所遇问题及解决方案总结基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)HTML5微信播放全屏问题的解决方法HTML5页面音视频在微信和app下自动播放的实现方法HTML5仿手机微信聊天界面微信端html5页面调用分享接口示例
- 分享一个H5原生form表单的checkbox特效代码CSS+HTML自定义checkbox效果的实例代码Html中使用自定义图片来实现checkbox显示的方法HTML的checkbox和radio样式美化的简单实例使用CSS修改HTML的checkbox效果的小示例分享HTML checkbox 点击说明文字即可选择/取消勾选状态
- HTML5混合开发二维码扫描以及调用本地摄像头Html5调用手机摄像头并实现人脸识别的实现html5调用摄像头功能的实现代码HTML5调用手机摄像头拍照的实现思路及代码HTML5 Canvas+JS控制电脑或手机上的摄像头实例html5调用摄像头实例代码
