当前位置: 首页 > news >正文

CSS实现图片边框酷炫效果

一、前言

我们在浏览一些网页时,经常会看到一些好看酷炫的元素边框效果(如下图),那么这些效果是怎么实现的呢?我们知道,一般的边框,要么是实线,要么是虚线(点状,短横线),但是遇到一些特殊的边框,传统边框就束手无策了。
在这里插入图片描述

在这里插入图片描述

遇到这种边框,不妨考虑下用 border-image。border-image属性可以给边框添加背景图片,实现图片边框效果。在css中,可以使用border-image属性设置图片边框,只需要给元素添加border-image样式即可。

二、代码实现

用css代码实现该效果很简单,只需几行css代码即可。

<div class="border-img"><h2>梦游天姥吟留别</h2><p>唐 · 李白</p><p>海客谈瀛洲,烟涛微茫信难求,越人语天姥,云霞明灭或可睹。天姥连天向天横,势拔五岳掩赤城。天台四万八千丈,对此欲倒东南倾。我欲因之梦吴越,一夜飞度镜湖月。湖月照我影,送我至剡溪。谢公宿处今尚在,渌水荡漾清猿啼。脚著谢公屐,身登青云梯。半壁见海日,空中闻天鸡。千岩万转路不定,迷花倚石忽已暝。熊咆龙吟殷岩泉,栗深林兮惊层巅。云青青兮欲雨,水澹澹兮生烟。列缺霹雳,丘峦崩摧。洞天石扉,訇然中开。青冥浩荡不见底,日月照耀金银台。霓为衣兮风为马,云之君兮纷纷而来下。虎鼓瑟兮鸾回车,仙之人兮列如麻。忽魂悸以魄动,恍惊起而长嗟。惟觉时之枕席,失向来之烟霞。世间行乐亦如此,古来万事东流水。别君去兮何时还?且放白鹿青崖间。须行即骑访名山。安能摧眉折腰事权贵,使我不得开心颜!</p>
</div>

重点代码来了!!!

.border-img {text-align: center;padding: 3rem;margin: 2rem auto;width: 60%;border: 70px solid #fff;border-image: url('./img/border.png') 70 round;
}

上面的代码可以看出,只需要给元素添加border-image样式即可。那么,下面就重点来介绍一个border-image属性的用法!

三、border-image属性

border-image 属性是一个简写属性,它由 border-image-source, border-image-slice, border-image-width, border-image-outset 和border-image-repeat 五个属性组成。下面详细介绍一下这个几个属性的作用。

3.1、border-image-source
border-image-source属性指定要使用的图像地址,而不是由border-style属性设置的边框样式。

div {border-image-source: url('border.png');
}

默认值为none。如果值是none,或者如果无法显示图像,边框样式会被使用。

3.2、border-image-slice
border-image-slice 属性将使用 border-image-source 引用的图像划分为多个区域。这些区域组成了一个元素的边框图像。

border-image-slice: number | % | fill;

number:表示到图像边缘的偏移量,在位图中的单位为像素点,在矢量图中则是坐标。对于矢量图,number 值与元素大小相关,而非矢量图的原始大小。因此,使用矢量图时,使用百分比值(%)更可取。

%:以原始图像大小的百分比表示的边缘偏移量:水平偏移使用图像的宽度,垂直偏移则使用图像的高度。

fill:保留图像的中心区域并将其作为背景图像显示出来,但其会堆叠在 background 之上。它的宽度和高度分别对应顶部和左侧图像切片的宽度和高度。

切分过程会将图像分割为 9 个区域:四个角、四个边(edges)以及中心区域。四条切片线,从它们各自的侧面设置给定距离,控制区域的大小。

图片

  • 区域 1-4 为角区域(corner region)。每一个都被用于组成最终边框图像的四个角。
  • 区域 5-8 边区域(edge region)。在最终的边框图像中重复、缩放或修改它们以匹配元素的大小。
  • 区域 9 为中心区域(middle region)。它在默认情况下会被丢弃,但如果设置了关键字 fill,则会将其用作元素的背景图像。

以如下原始图为例,图像中钻石是长宽分别为 30px:
在这里插入图片描述

在这里插入图片描述

3.3、border-image-width
border-image-width 指定了边界图像的宽度。如果本属性值大于元素的 border-width,边界图像将会向 padding 边缘延展。

border-image-width: [ <length> | <percentage> | <number> | auto ]{1,4}

border-image-width 参数的四种类型:

length:带 px, em, in … 单位的尺寸值。

percentage:百分比。

number:不带单位的数字;它表示 border-width 的倍数。

auto:使用 auto, border-image-width 将会使用 border-image-slice 的值。

border-image-width 的参数不能为负值。

border-image-width 属性的值可用以下方式进行设定:

当指定 一个 值时,它将作用到 四个方向 ;

当指定 两个 值时,它将分别作用到 垂直方向 和 水平方向 ;

当指定 三个 值时,它将分别作用到 上方、水平方向、和下方;

当指定 四个 值时,它将分别作用到 上方、右方、下方和左方。
在这里插入图片描述

3.4、border-image-outset
border-image-outset 属性定义边框图像可超出边框盒的大小,使图像边框延伸到盒子模型以外的距离。

border-image-outset:[ <length> | <number> ]{1,4}

length:用具体的数值加单位的形式指定图像边框向外偏移的距离,不允许为负值;

number:用浮点数指定图像边框向外偏移的距离,该值表示 border-width 的倍数,例如值为 2,则表示偏移量为 2 * border-width,不允许为负值。

border-image-outset 属性的值可用以下方式进行设定:

当指定 一个 值时,它将作用到 四个方向 ;

当指定 两个 值时,它将分别作用到 垂直方向 和 水平方向 ;

当指定 三个 值时,它将分别作用到 上方、水平方向、和下方;

当指定 四个 值时,它将分别作用到 上方、右方、下方和左方。

在这里插入图片描述

3.5、border-image-repeat
border-image-repeat 属性用来设置如何填充使用 border-image-slice 属性分割的图像边框,例如平铺、拉伸等等。

border-image-repeat: [ stretch | repeat | round | space ]{1,2}
stretch:拉伸图片以填充边框。

repeat:平铺图片以填充边框。

round:平铺图像。当不能整数次平铺时,根据情况放大或缩小图像。

space:平铺图像。当不能整数次平铺时,会用空白间隙填充在图像周围(不会放大或缩小图像)。

border-image-repeat 属性接受 1~2 个参数值:

如果提供两个参数,那么第一个参数将用于水平方向,第二个将用于垂直方向;

如果只提供一个参数,那么将在水平和垂直方向都应用该值。

演示图如下:

在这里插入图片描述

round 与 repeat 的区别:round会凑整填充,进行了适度的缩放。repeat不凑整,不进行缩放。

round 与 space 的区别:虽然都是凑整填充显示,但是space不能凑整时,不进行缩放,而是用空白间隙填充在图像周围。

四、总结

大多数现代浏览器都支持 border-image 属性,但旧版浏览器可能不支持或支持有限。border-image属性兼容性如下:

图片

注意事项:

如果没有设置 border-image-source,则其他 border-image 属性将无效。

如果图像无法加载或图像源为空,则边框将不会显示。

为了看到 border-image 的效果,通常需要先设置一个透明的边框宽度。

border-image 不会继承,但可以通过 CSS 继承规则从父元素继承其他边框属性(如 border-width、border-style 和 border-color)。

border-image 不会影响 border-radius,但 border-radius 可能会影响 border-image 的外观。

border-image 是 CSS 中的一个高级属性,它允许你使用图像来创建边框,而不仅仅是使用颜色和样式。这个属性提供了比传统边框更多的灵活性和视觉吸引力。

相关文章:

CSS实现图片边框酷炫效果

一、前言 我们在浏览一些网页时&#xff0c;经常会看到一些好看酷炫的元素边框效果&#xff08;如下图&#xff09;&#xff0c;那么这些效果是怎么实现的呢&#xff1f;我们知道&#xff0c;一般的边框&#xff0c;要么是实线&#xff0c;要么是虚线&#xff08;点状&#xf…...

遇到 MySQL 死锁问题如何解决?

终于来到死锁检查线程的第三步&#xff0c;可以解决死锁了。 作者&#xff1a;操盛春&#xff0c;爱可生技术专家&#xff0c;公众号『一树一溪』作者&#xff0c;专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0…...

Pyinstaller打包OSError: could not get source code【终极解决】

pyinstaller 打包的时候&#xff0c;发现只要是torch.jit.script装饰的函数&#xff0c;会报以下错误&#xff1a; Traceback (most recent call last):File "torch/_sources.py", line 25, in get_source_lines_and_fileFile "inspect.py", line 1123, i…...

【计算机毕业设计】707高校宿舍管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…...

从C++看C#托管内存与非托管内存

进程的内存 一个exe文件&#xff0c;在没有运行时&#xff0c;其磁盘存储空间格式为函数代码段全局变量段。加载为内存后&#xff0c;其进程内存模式增加为函数代码段全局变量段函数调用栈堆区。我们重点讨论堆区。 托管堆与非托管堆 C# int a10这种代码申请的内存空间位于函…...

Linux进程间通信--IPC之无名管道

进程间通信&#xff08;IPC&#xff0c;InterProcess Communication&#xff09;是指在不同进程之间传播或交换信息。 IPC的方式通常有管道&#xff08;包括无名管道和命名管道&#xff09;、消息队列、信号量、共享存储、Socket、Streams支持不同主机上的两个进程的IPC。...

Oracle19c数据库system密码锁定

一、在oracle 19c数据库中&#xff0c;cdb中system用户被锁定&#xff0c;locked 二、所在的pdb中的system用户状态是正常的&#xff0c;但不可用&#xff0c;连接的时候提示账号已锁定 三、解决 在cdb中将system用户解锁。 alter user system account unlock;...

java之hashCode() 方法和 equals(Object obj) 方法之间的关系

1、 hashCode() 方法和 equals(Object obj) 在Java中&#xff0c;hashCode() 方法和 equals(Object obj) 方法之间的关系是紧密相连的&#xff0c;特别是在使用基于哈希的集合&#xff08;如 HashSet、HashMap、HashTable 等&#xff09;时。这两个方法共同决定了对象在哈希表…...

首届「中国可观测日」圆满落幕

首届中国可观测日&#xff08;Observability Day&#xff09;在上海圆满落幕&#xff0c;为监控观测领域带来了一场技术盛宴。作为技术交流的重要平台&#xff0c;此次活动不仅促进了观测云与亚马逊云科技之间的深化合作&#xff0c;更标志着双方共同推动行业发展的重要里程碑。…...

[Docker][Docker NetWork][下]详细讲解

目录 1.网络管理命令1.docker network creatre2.docker network inspect3.docker network connect4.docker network disconnect5.docker network prune6.docker network rm7.docker network ls 2.docker bridge 详解0.基本概念1.默认 bridge2.自定义 bridge3.DNS解析4.端口暴露…...

安卓系统在未来如何更好地解决隐私保护与数据安全的问题?

安卓系统可以通过以下方式更好地解决隐私保护与数据安全的问题&#xff1a; 强化权限控制&#xff1a;安卓系统可以进一步加强对应用程序权限的管理&#xff0c;确保用户能够清楚地知道应用程序需要哪些权限&#xff0c;并给予用户更多的控制权&#xff0c;例如允许用户选择性地…...

MySQL innodb单表上限一般多少

参考&#xff1a;https://www.zhihu.com/question/351797203/answer/3137174084 1.MySQL innodb单表上限为啥都说是2k万条 2.GaussDB for MySQL 为啥可以突破单表2k万的限制 要讨论这两个问题&#xff0c;得先明确性下实际的DB部署环境 表是索引数据是放在磁盘上的&#xf…...

更小、更安全、更透明:Google发布的Gemma推动负责任AI的进步

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

基于Django框架的医疗耗材管理系统的设计实现-计算机毕设定制-附项目源码(可白嫖)48999

摘 要 在目前的形势下&#xff0c;科技力量已成为我国的主要竞争力。而在科学技术领域&#xff0c;计算机的使用逐渐达到成熟&#xff0c;无论是从国家到企业再到家庭&#xff0c;计算机都发挥着其不可替代的作用&#xff0c;可以说计算机的可用领域遍及生活、工作的各个方面。…...

物联网协议篇(1):modbus tcp和modbusRTU的区别是什么?

Modbus TCP和Modbus RTU是Modbus协议中的两种主要变体,它们在多个方面存在显著的区别。以下是它们之间的主要区别: 1. 物理层和数据传输方式 Modbus TCP (TCP/IP): 使用以太网作为物理层,通过TCP/IP协议进行通信。数据以数据包的形式在TCP连接上传输,具有较高的通信速度和…...

JVM系列 | 对象的消亡——HotSpot的设计细节

HotSpot 的细节实现 文章目录 HotSpot 的细节实现OopMap 与 根节点枚举根节点类型及说明HotSpot中的实现 OopMap 与 安全点安全点介绍如何保证程序在安全点上&#xff1f; 安全区域记忆集与卡表记忆集卡表 写屏障并发的可达性分析&#xff08;与用户线程&#xff09;并发可达性…...

vue 运行或打包过程报错 JavaScript heap out of memory(内存溢出)

安装 increase-memory-limit npm install increase-memory-limit 运行increase-memory-limit ./node_modules/.bin/increase-memory-limit 运行后会报以下错误&#xff1a; "node --max-old-space-size10240" 不是内部或外部命令&#xff0c;也不是可运行的程序…...

git分支提交方法

先下载最新代码 改动文件覆盖 cp 文件到~/file/ git add添加文件 git commit提交本地 建立分支 git diff .c git status -uno git add git commit git checkout -b issue-lyd git push origin issue-lyd...

从微架构到向量化--CPU性能优化指北

引入 定位程序性能问题&#xff0c;相信大家都有很多很好的办法&#xff0c;比如用top/uptime观察负载和CPU使用率&#xff0c;用dstat/iostat观察io情况&#xff0c;ptrace/meminfo/vmstat观察内存、上下文切换和软硬中断等等&#xff0c;但是如果具体到CPU问题&#xff0c;我…...

声声入耳,事事如意 爱可声「如意」助听器即将上市!

如意助听器 Charm 爱可声全新系列「如意」助听器即将上市&#xff01; 此次新品充分考虑了不同听损以及年龄的用户需求&#xff0c; 融合三大强劲性能。 1、多群体覆盖&#xff0c;定制个性化方案 如意助听器针对不同听损程度的听障患者设计了不同款式助听器&#xff0c;贴…...

生物实验室设备文件采集如何才能质量和效率双管齐下?

生物实验室的设备文件采集是实验室运营、科研活动和数据科学实践应用中不可或缺的一环。通过数据采集&#xff0c;实验室可以优化资源配置、提高实验结果的准确性和可靠性、支持科研水平的提升&#xff0c;并确保数据的安全性和可追溯性。因此&#xff0c;实验室应高度重视设备…...

Framework源码整编、单编、烧录过程

目录 一.背景 二.整编方式 二.单编方式 三.烧录 一.背景 源码编译分为整编和单编,整编通常耗时较长,单编则速度很多,如果我们进行一个小的修改想要立马验证的话单编就很合适 二.整编方式 开始执行编译操作,总共三步. 执行source操作source build/envsetup.sh .执行lunc…...

TypeScript类型断言

TypeScript类型断言是TypeScript中一个强大且有用的特性&#xff0c;它允许开发者在编译时明确指定一个值的类型&#xff0c;即使TypeScript无法自动推断出这个类型。类型断言类似于其他编程语言中的类型转换&#xff0c;但它不会改变变量的运行时值&#xff0c;而只是告诉编译…...

Mallet:一款针对任意协议的安全拦截代理工具

关于Mallet Mallet是一款功能强大的协议安全分析工具&#xff0c;该工具支持针对任意协议创建用于安全审计的拦截代理&#xff0c;该工具本质上与我们所熟悉的拦截Web代理类似&#xff0c;只是通用性更强。 工具运行机制 Mallet建立在Netty框架之上&#xff0c;并且依赖于Net…...

【IEEE出版】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024,9月20-22)

第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09;将于2024年09月20-22日在中国温州隆重举行。 会议主要围绕大数据、人工智能与软件工程等研究领域展开讨论。会议旨在为从事大数据、人工智能与软件工程研究的专家学者、工程技术人员、技术研发人…...

自修室预约小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;公告通知管理&#xff0c;自修室管理&#xff0c;座位预约管理&#xff0c;预约取消管理&#xff0c;管理员管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&a…...

用于跟踪个人图书馆的BookLogr

什么是 BookLogr &#xff1f; BookLogr 是一款网络应用&#xff0c;旨在帮助您轻松管理个人图书馆。这项自托管服务可确保您完全控制数据&#xff0c;提供安全且私密的方式来跟踪您拥有、阅读或希望阅读的所有书籍。您也可以选择向公众自豪地展示您的图书馆&#xff0c;与您的…...

深入解析JVM垃圾回收机制:Full GC、Minor GC与Major GC

目录 引言垃圾回收的基本概念 什么是垃圾回收GC的分类JVM内存模型 堆内存非堆内存Minor GC 触发条件运行机制对性能的影响...

Windows10点击文件夹右键卡死的解决办法

1、首先同时按下【WinR】打开运行页面&#xff0c;输入命令【regedit】按下回车或者点击确定。 2、打开注册表编辑器后&#xff0c;定位到如下位置“HKEY_CLASSES_ROOT\Directory\Background\Shellex\ContextMenuHandlers”。 3、然后在其中将所有名为“New”的文件或项全部删…...

C# 设计模式之单例模式

总目录 前言 本文是个人基于C#学习设计模式总结的学习笔记&#xff0c;希望对你有用&#xff01; 1 基本介绍 定义&#xff1a;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 本质就是保证在整个应用程序的生命周期中&#xff0c;任何一个时刻&#xff0c;单例…...

广发证券 网站谁做的/b站推广软件

keka在创建压缩和解压时从不要求文件名。现在keka总是在拖放文件夹/文件进行压缩时要求新的文件名。这个问题是因为更新了有关文件访问的信息&#xff0c;那么该如何解决&#xff0c;恢复到以前那样&#xff1f; Keka文件访问权限解决办法 磁盘访问 为了能够像以前一样集成&…...

做网站用什么技术好/佛山网站建设十年乐云seo

为什么80%的码农都做不了架构师&#xff1f;>>> 各个功能详解 ●地图 iOS 9的地图应用加入了公共交通导航、支持公交、火车、地铁、轮渡等交通工具&#xff0c;支持全球多个地区&#xff08;包括国内300多个城市&#xff09;。 ●Siri 更“积极”的Siri可以根据用户…...

wordpress老站开启多站点/百度快照搜索引擎

8月17日&#xff0c;“AI上有信仰的云——华为云中国行2018”系列活动将走进杭州这座美丽的城市&#xff0c;为其带来创新技术&#xff0c;激发企业新动能&#xff0c;以云之便利帮助企业拥抱AI&#xff0c;在信息洪流中充分享受数字红利。届时&#xff0c;华为云、生态伙伴和行…...

电商网站成功的营销策略/品牌推广的方式有哪些

PPT是大家广泛使用的一个幻灯片制作工具。作为微软office办公套件的其中一个重要组件&#xff0c;PPT一直在不断的版本更新。从XP、2003、2007、2010、2010、2016版本到去年发布的2019版本&#xff0c;每次版本的更新都给我们带来了许多的惊喜。作为最新版的PPT2019又给我们带来…...

网站兼容性测试怎么做/网络推广是啥

在Python中迭代序列&#xff08;或者其他可迭代对象&#xff09;时&#xff0c;有一些函数非常好用。有些函数位于itertools模块中&#xff0c;还有一些Python的内建函数也十分方便。 1. 并行迭代 程序可以同时迭代两个序列。比如有下面两个列表&#xff1a; names [anne, bet…...

wordpress 图标不显示/市场营销方案

1.控制台&#xff1a;执行过 Hibernate: select count(*) as y0_ from V_TRANSDETAIL_INFO this_ 后报错&#xff1a;Caused by: java.sql.SQLSyntaxErrorException: ORA-01031: 权限不足分析&#xff1a;debug&#xff0c;跟进去确实是因为查询存储过程V_TRANSDETAIL_INFO…...