一招搞定css不规则边框

大家可能都习惯了使用box-shadow来设置盒阴影,但顾名思义,盒阴影一般阴影的投影是一个方形,如果我们遇到其他情况,想要做阴影效果应该怎么实现呢?

一招搞定css不规则边框

之前做过很多特殊的布局,比如在这两篇文章 CSS 实现优惠券的技巧 、CSS 实现支持渐变的提示框(tooltips),如下

1460000040490966.webp.jpg

但是一直有一个痛点就是:无法给这些图形加上边框

立即学习“前端免费学习笔记(深入)”;

1460000040490967.webp.jpg

今天带来一个小技巧:利用 drop-shadow 一行代码搞定所有不规则边框

一、投影

这里需要利用投影 drop-shadow,这里简单介绍一下

语法其实很简单

filter: drop-shadow(offset-x offset-y blur-radius color)

并不是一个单独的属性,而是 filter 滤镜下的一个方法

这里 offset-x、 offset-y为偏移量,blur-radius为模糊半径,color为投影颜色。实际作用就是可以模拟真实世界的投影(透明的部分不会投影),区别如下

1460000040490968.webp.jpg

可惜的是,虽然和 box-shadow 比较类似,但是少了扩展半径。试想一下,如果支持了扩展半径,那不规则边框是不是很容易了(应该不会支持了,因为真实世界的投影也没有扩展半径)?

那么,drop-shadow如何生成边框呢?

二、多重投影

box-shadow 可以很轻易的实现多重阴影

box-shadow: 0 0 3px #333, 1px 1px 5px #666, ...

可以无限叠加下去。

但是,drop-shadow可就不行了,比如

filter: drop-shadow(0 0 3px #333, 1px 1px 5px #666, ...)

可以看到浏览器直接认为非法了

1460000040490969.webp.jpg

不过可以换一种思路,虽然 drop-shadow不支持,但是filter支持多种滤镜,所以可以这样来实现

filter: drop-shadow(0 0 3px #333) drop-shadow(0 0 3px #333) drop-shadow(0 0 3px #333)...

这样就可以生效了

1460000040490970.webp.jpg

是不是有点像边框了?如果只设置 0.5px 的模糊,多叠加几次,模糊的部分会变清晰,这个就有点像一个比较软的笔触,多画几笔就变清晰了,于是可以得到这样的效果

1460000040490971.webp.jpg

这样就更加接近了,实践下来,可能需要微调,这里给出一个比较完美的方案(重点来了~)

.wrap{  filter: drop-shadow(0px 0px 0.5px #333) drop-shadow(0px 0px 0px #333) drop-shadow(0px 0px 0px #333) drop-shadow(0px 0px 0px #333) drop-shadow(0px 0px 0px #333)}

1460000040490972.webp.jpg

这样实现的边框已经足够清晰,基本可以日常使用了

这段代码中颜色比较多,可以优化一下,投影的颜色默认是跟随当前文字颜色的,所以可以简化为

.wrap{  filter: drop-shadow(0 0 0.5px)drop-shadow(0 0 0)drop-shadow(0 0 0)drop-shadow(0 0 0)drop-shadow(0 0 0);  color: #333;}

三、使用和局限

使用方式简单,在容器的最外层加上这一行 CSS 就行了,比如之前的优惠券例子,得到的边框效果这样的

1460000040490973.webp.jpg

还有这样的

1460000040490974.webp.jpg

边框还算不错,几乎看不出投影

不过这里需要注意的是,经过 mask 裁剪的图形需要在外层嵌套一层父级,不然投影会被 mask 直接裁剪掉

另外,这个方案进适合比较小的边框,如果较大的边框,可能会比较圆滑,而且需要叠加更多的滤镜,效果也不太好,如下

1460000040490975.webp.jpg

这些就需要自行取舍了(一般情况下不会有太粗的边框)

四、总结和说明

本文介绍了一个实现不规则边框的通用方案,成本非常低,效果也非常不错,这里总结一下:

drop-shadow只会对不透明部分生成投影,符合真实物理世界

drop-shadow不支持多重投影,filter支持多重滤镜,可以间接实现多重投影

边框的实现原理是投影的多重叠加

有些通过mask裁剪生成的图形,需要在外包裹一层容器,再生成边框

适合比较小的边框,过大的边框不太理想

滤镜其实是一个比较耗费性能的属性,不适合太范围使用

可能大部分同学最后可能还是会选择 “切图.png”,不过这也算是一个解决方案 ,多一种方案总是没错的。最后,如果觉得还不错,对你有帮助的话,欢迎点赞、收藏、转发❤❤❤

推荐学习:css视频教程

以上就是一招搞定css不规则边框的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1621394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 07:29:25
下一篇 2025年12月24日 07:29:37

相关推荐

  • 10款好看且实用的文字动画特效,让你的页面更吸引人!

    图片和文字是网页不可缺少的组成部分,图片运用得当可以让网页变得生动,但普通的文字不行。那么就可以给文字添加一些样式,实现一下好看的文字效果,让页面变得更交互,更吸引人。下面创想鸟就来给大家分享10款文字动画特效,好看且实用,快来收藏吧! 1、网页玻璃文字动画特效 模板简介:使用css3制作网页渐变底…

    2025年12月24日 好文分享
    000
  • 如何实现炫酷的数字大屏

    依托强大无远开发平台,可以快速实现带各种酷炫联动效果的数字化大屏。一起来看一下吧 DEMO 地址:https://previewer.wuyuan.io/p… 配置地址:https://workbench.wuyuan.io/p… 效果图 1 效果图 2 实现步骤 1. 完成…

    2025年12月24日 好文分享
    000
  • 手把手教你使用css给HTML字体添加边框效果(代码分享)

    之前的文章《html网页中如何实现居中效果(代码分享)》中,给大家介绍了如何让网页整体居中。下面本篇文章给大家介绍怎样使用css给HTML元素字体添加边框效果,我们一起看看怎么做。 html元素添加边框用border属性来实现。 border 简写属性在一个声明设置所有的边框属性。 border属性…

    2025年12月24日
    000
  • 一招搞定css元素五彩斑斓的背景

    本篇文章将开始新的一个章节。所有好看的事物都离不开颜色,今天我们就来学习一个最简单的,那就是给元素设置背景颜色。快来学习吧。 我们也知道没有背景颜色的元素是不好看的,所有我们还是需要给元素设置背景颜色的。 我们先来看一个小例子吧,了解一下什么是背景颜色,怎么去设置。 已知,我们有一个div元素,一个…

    2025年12月24日
    000
  • 一招教你使用css给HTML字体添加背景图(代码分享)

    之前的文章《手把手教你使用css给HTML字体添加边框效果(代码分享)》中,给大家介绍了怎样使用css给HTML字体添加边框效果。下面本篇文章给大家介绍如何用css给HTML字体添加背景图,我们一起看看怎么做。 先看一下最终实现的效果 如何在字体添加背景图? 1、在html打开中,首先写div标签,…

    2025年12月24日 好文分享
    000
  • 手把手教你怎么使用CSS3实现动画效果(代码分享)

    之前的文章《H5篇:页面中实现动画的几种方式?(附代码)》中,带大家了解页面中实现动画的几种方式。下面本篇文章给大家介绍怎么使用CSS3来实现一个简单漂亮的动画效果,我们一起看看 复习下 css3 的动画, 都快不会写了,那会儿挺喜欢 flash 的,可惜了时代在前进。写这里就当是文档看吧 浏览器支…

    2025年12月24日
    000
  • 教你怎么使用css3给图片添加渐变效果(代码详解)

    之前的文章《手把手教你怎么使用CSS3实现动画效果(代码分享)》中,给大家介绍一下怎么使用css3动画效果设置经验。下面本篇文章给大家介绍怎么使用css3给图片添加渐变效果,伙伴们来看看一下。 初次接触css3渐变是在很早以前了,觉得这个东西很有意思哈,跟玩 PS 似的,可以做出很多华丽的东西。 浏…

    2025年12月24日 好文分享
    000
  • 手把手教你使用CSS3制作一个简单页面的布局(代码详解)

    之前的文章《深入解析微信小程序页面中实现的保存图片(附代码)》中,给大家了解一下微信小程序页面中实现的保存图片。下面本篇文章给大家介绍怎么使用CSS3制作一个简单页面的布局,感兴趣的小伙伴们可以参考一下。 兼容性 2009 年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响…

    2025年12月24日 好文分享
    000
  • 用CSS快速创建高级模糊感的背景图像

    想让你的网页页面显得高级感十足吗?想要提高你网页的阅读访问量吗?想让你的用户一眼就被你的页面吸引住吗?那么就不要错过本文啦!毕竟简单又快速的实现高级感模糊的背景图,谁都可以学会! 废话不多说,开始正文! 正如标题所言我们今天所要介绍的就是通过css来创建一个模糊的背景图像,适用于你个人博客页面,也适…

    2025年12月24日
    000
  • css上边距怎么写

    在css中,可以使用margin-top属性设置上边距,只需要给元素设置“margin-top:数值+单位;”样式即可。margin-top属性设置元素的上外边距,允许使用负值。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。 margin 简写…

    2025年12月24日
    000
  • css中:not用法是什么

    在css中,“:not”是选择器的一种,如果希望某个样式不作用到选择器上,可以使用:not(选择器),语法格式为“ 元素:not(元素id){属性:属性值;}”;该选择器匹配非指定元素/选择器的每个元素。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3…

    2025年12月24日
    000
  • css怎么让背景图拉伸

    在css中,可以使用background-size属性让背景图拉伸,只需要给元素设置“background-size:100% 100%;”样式即可。该属性可以以父元素的百分比来设置背景图像的宽度和高度。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3…

    2025年12月24日 好文分享
    000
  • 利用CSS如何实现全兼容的毛玻璃效果?(代码详解)

    本篇文章带大家了解一下css backdrop-filter属性,看看该属性的兼容性,介绍一下如何实现全兼容毛玻璃效果。 通过本文,你能了解到 最基本的使用 CSS backdrop-filter 实现磨砂玻璃(毛玻璃)的效果 在至今不兼容 backdrop-filter 的 firefox 浏览器…

    2025年12月24日 好文分享
    000
  • 详解CSS content的使用机制,原来还可以这样用!

    本篇文章带大家了解一下css中的content属性,介绍一下content的使用场景,希望对大家有所帮助! 在开发中遇到类似清除浮动、小图标、替换内容等场景时不可避免会遇到 content 属性,一般就是百度下解决方案,甚少细究到底,在看《CSS 世界》这本书时看了下 content 章节,今天这里…

    2025年12月24日 好文分享
    000
  • CSS怎么设置字体发光效果

    在CSS中,可以利用text-shadow属性来设置字体发光效果;该属性可为文本添加阴影效果,设置阴影的水平偏移量和垂直偏移量为0,增大阴影模糊的距离,即可以达到字体外发光的效果。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。 在CSS中,可以…

    2025年12月24日
    000
  • css怎么把ul文字变成横向排列

    在css中,可以利用float属性来把ul文字变成横向排列,只需要给ul列表的li元素添加“float:left;”样式,让li元素往左浮动即可。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。 默认ul列表是竖向排列: 测试文本1 测试文本1 …

    2025年12月24日
    000
  • css技巧:怎么给图片添加蒙版(分享)

    之前的文章《什么是CSS语法?详细介绍使用方法及规则》中带了解CSS语法使用方法及规则。下面本篇文章给大家分享一下使用CSS给图片添加蒙版效果的小技巧,这个技巧很实用,可以将帮助您打破网站布局的模式,只需几行代码,快来看看吧! 添加蒙版 遮罩告诉您的浏览器哪些资产元素应该可见,这对于构建创意形状和布…

    2025年12月24日
    000
  • css如何重叠图片

    css重叠图片的方法:先通过给图片添加“position: absolute;”样式进行绝对定位;然后使用margin-left和margin-top属性设置图片位置即可。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。 使用css把两个图片叠加…

    2025年12月24日
    000
  • css如何让高度自适应

    css让高度自适应的方法:1、给html元素设置“height:100%;display:table;”样式,给body元素设置“display:table-cell;height:100%;”样式即可。2、使用flex布局。 本教程操作环境:windows7系统、CSS3&&HTM…

    2025年12月24日
    000
  • 手把手教你使用img标签添加图片效果(知识)

    之前的文章《如何使用HTML制作一个简单美观的导航栏(代码详解)》中,给大家介绍了怎样使用HTML制作导航栏的方法。下面本篇文章给大家带了解一下img标签怎么添加图片效果的方法,我们一起看怎么做。 标签 用于定义网页中的图片,我们平常在网页中见到的大部分图片都是用这个标签定义。 代码示例: @@##…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信