返回顶部
首页 > 资讯 > 精选 >使用box-shadow和drop-shadow怎么实现不规则的投影
  • 616
分享到

使用box-shadow和drop-shadow怎么实现不规则的投影

2023-06-08 08:06:57 616人浏览 薄情痞子
摘要

使用box-shadow和drop-shadow怎么实现不规则的投影?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。当我们想给一个矩形或其他能用 border-radius 生成

使用box-shadow和drop-shadow怎么实现不规则的投影?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

当我们想给一个矩形或其他能用 border-radius 生成的形状(在“自适应的椭圆”一节中可以看到一些示例)加投影时,box-shadow 的表现都堪称完美。但是,当元素添加了一些伪元素或半透明的装饰之后,它就有些力不从心了,因为 border-radius 会无耻地忽视透明部分。这类情况包括:

  • 半透明图像、背景图像、或者 border-image(比如老式的金质像框);

  • 元素设置了点状、虚线或半透明的边框,但没有背景(或者当background-clip 不是 border-box 时);

  • 对话气泡,它的小尾巴通常是用伪元素生成的;

如果我们打算对这类元素直接应用 box-shadow,那只能得到不完全投影的结果。难道我们只能完全放弃投影效果吗?有没有办法可以解决这个难题?

使用box-shadow和drop-shadow怎么实现不规则的投影

滤镜效果规范(Http://w3.org/TR/filter-effects)为这个问题提供了一个解决方案。它引入了一个叫作 filter 的新属性,这个属性也是从 SVG 那里借鉴过来的。尽管 CSS 滤镜基本上就是 SVG 滤镜,但我们并不需要掌握任何SVG 知识。相反,只需要一些函数就可以很方便地指定滤镜效果了,比如blur()、grayscale() 以及我们需要的 drop-shadow() !如果你喜欢,甚至可以把多个滤镜串连起来,只要用空格把它们分隔开就可以了,比如:

filter: blur() grayscale() drop-shadow();

drop-shadow() 滤镜可接受的参数基本上跟 box-shadow 属性是一样的,但不包括扩张半径,不包括 inset 关键字,也不支持逗号分割的多层投影语法。举个例子,上面的投影:

box-shadow: 2px 2px 10px rgba(0,0,0,.5);

可以这样来写:

filter: drop-shadow(2px 2px 10px rgba(0,0,0,.5));

使用box-shadow和drop-shadow怎么实现不规则的投影

CSS 滤镜最大的好处在于,它们可以平稳退化:当浏览器不支持时,不会出现问题,只不过没有任何效果而已。如果你确实需要这个效果在尽可能多的浏览器中显示出来,可以同时附上一个 SVG 滤镜,这样可以得到稍微好一些的浏览器支持度。你可以在滤镜效果规范(http://www.w3.org/TR/filter-effects/)中为每个滤镜函数找到对应的 SVG 滤镜版本。你可以把 SVG滤镜和简化的 CSS 滤镜放在一起使用,让层叠机制来决定哪一行最终生效:

filter: url(drop-shadow.svg#drop-shadow);filter: drop-shadow(2px 2px 10px rgba(0,0,0,.5));

不幸的是,如果 SVG 滤镜是存放在一个独立文件里的,那它就无法像一个简洁易用的函数那样在 CSS 代码中进行随意配置;如果它是内联的,则又会搅乱你的代码。参数需要写死在文件内部,因此每当我们新加一种哪怕是大同小异的投影效果时,都需要多准备一个文件,这显然是难以接受的。当然,我们还可以使用 data URI(它也会省掉额外的 HTTP 请求),但这个方法仍然会带来文件体积的增长。总的来说,这个方法只是一种回退方案,因此只要我们把SVG 滤镜控制在一定数量以内,哪怕它们的效果大同小异,也是说得过去的。

另外一件需要牢记的事情就是,任何非透明的部分都会被一视同仁地打上投影,包括文本(如果背景是透明的),正如我们刚刚看到的那样。你可能会想,是不是可以通过 text-shadow: none; 来取消掉文本上的投影呢?其实 text-shadow 跟它是完全不相干的两码事,因此这样做并不能取消文本上的 drop-shadow() 效果。此外,如果你已经用 textshadow在文本上加了投影效果,文本投影还会被 drop-shadow() 滤镜再加上投影,这本质上是给投影打了投影!看看下面这段示例代码(请原谅它惨不忍睹的效果,这样只是为了凸显这个怪异的问题):

color: deeppink;border: 2px solid;text-shadow: .1em .2em yellow;filter: drop-shadow(.05em .05em .1em gray);

你可以看到它的渲染效果,图中的文字被同时打上了 textshadow和 drop-shadow()。

看完上述内容,你们掌握使用box-shadow和drop-shadow怎么实现不规则的投影的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 使用box-shadow和drop-shadow怎么实现不规则的投影

本文链接: https://lsjlt.com/news/252804.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用box-shadow和drop-shadow怎么实现不规则的投影
    使用box-shadow和drop-shadow怎么实现不规则的投影?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。当我们想给一个矩形或其他能用 border-radius 生成...
    99+
    2023-06-08
  • css中的text-shadow字体投影属性样式怎么用
    这篇文章将为大家详细讲解有关css中的text-shadow字体投影属性样式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 text-shadow为css文字阴影...
    99+
    2024-04-02
  • 怎么用CSS3的text-shadow实现字体阴影
    这篇文章主要介绍了怎么用CSS3的text-shadow实现字体阴影的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用CSS3的text-shadow实现字体阴影文章都会有所...
    99+
    2024-04-02
  • DIV+CSS3中box-shadow对象实现盒子阴影和图片阴影的示例分析
    这篇文章主要介绍了DIV+CSS3中box-shadow对象实现盒子阴影和图片阴影的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一...
    99+
    2024-04-02
  • CSS中怎么使用text-shadow实现文字阴影效果
    这篇文章给大家介绍CSS中怎么使用text-shadow实现文字阴影效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。text-shadow语法text-shadow : h...
    99+
    2024-04-02
  • html5中怎么使用text-shadow属性实现文字阴影效果
    今天就跟大家聊聊有关html5中怎么使用text-shadow属性实现文字阴影效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。代码如下:<!...
    99+
    2024-04-02
  • CSS3 中怎么利用text-shadow实现文字阴影效果
    CSS3 中怎么利用text-shadow实现文字阴影效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。CSS3设置文字阴影效果,对文字字...
    99+
    2024-04-02
  • CSS3中怎么利用 text shadow实现字体阴影效果
    这篇文章将为大家详细讲解有关CSS3中怎么利用 text shadow实现字体阴影效果 ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、text-shad...
    99+
    2024-04-02
  • Android编程使用自定义shape实现shadow阴影效果的方法
    本文实例讲述了Android编程使用自定义shape实现shadow阴影效果的方法。分享给大家供大家参考,具体如下: 直接上xml文件, 并且附上相应的解析: <�...
    99+
    2022-06-06
    shape 方法 shadow Android
  • 使用Angular组件怎么实现投影
    本篇文章为大家展示了使用Angular组件怎么实现投影,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、子组件中使用<ng-content>指令来标记投影点<div cl...
    99+
    2023-06-15
  • 怎么使用CSS3的box-reflect实现倒影效果
    今天小编给大家分享一下怎么使用CSS3的box-reflect实现倒影效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。兼容...
    99+
    2023-07-04
  • CSS3中怎么利用text-shadow属性实现多种效果的文字样式
    这篇文章给大家介绍CSS3中怎么利用text-shadow属性实现多种效果的文字样式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 text-shadow属性text-sha...
    99+
    2024-04-02
  • 怎么在html5中使用canvas 实现光线沿不规则路径运动
    这篇文章将为大家详细讲解有关怎么在html5中使用canvas 实现光线沿不规则路径运动,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。svg让动画沿着不规则路径运动查阅svg文档后发现,sv...
    99+
    2023-06-09
  • 如何使用CSS3配合IE滤镜实现渐变和投影的效果
    本篇内容介绍了“如何使用CSS3配合IE滤镜实现渐变和投影的效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • 如何使用CSS的clip-path属性实现不规则图形的显示
    小编给大家分享一下如何使用CSS的clip-path属性实现不规则图形的显示,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!clip-pathCSS 属性使用裁剪方...
    99+
    2023-06-08
  • 使用Python和GDAL给图片加坐标系的实现思路(坐标投影转换)
    ** 使用Python和GDAL给图片加坐标系 ** 假设你已经知道arcgis地理配准(如下图内容),懂一点python。 ** -目的和背景 1.从地图网站获得一张PNG格式...
    99+
    2024-04-02
  • PHP中使用路由匹配器实现路由规则的动态配置和扩展
    在Web应用程序中,路由规则是非常重要的一部分。它决定了如何根据用户的请求将其映射到相应的处理程序或控制器。传统的做法是在应用程序的代码中硬编码路由规则,这样会导致代码难以维护和扩展。为了解决这个问题,可以使用路由匹配器来实现路由规则的动态...
    99+
    2023-10-21
    路由匹配器 (Route Matcher) 路由规则 (Route Rules) 动态配置 (Dynamic Confi
  • 怎么使用CSS实现比普通阴影更加立体的阴影效果
    这篇文章主要介绍“怎么使用CSS实现比普通阴影更加立体的阴影效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用CSS实现比普通阴影更加立体的阴影效果”文章能...
    99+
    2024-04-02
  • PHP开发点餐系统的优惠券使用规则设置功能实现方法是什么?
    PHP开发点餐系统的优惠券使用规则设置功能实现方法随着电子商务的兴起,线上点餐已经成为人们日常生活中的一部分。为了吸引用户并提升用户体验,许多点餐系统都会提供优惠券的使用功能。在开发点餐系统时,优惠券使用规则设置是一个重要的功能。本文将介绍...
    99+
    2023-11-01
    实现方法 规则设置 优惠券设置
  • 怎么使用JavaScript实现全选和反选的功能
    本篇内容介绍了“怎么使用JavaScript实现全选和反选的功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作