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

如何使用border-image做大屏公共组件的边框

示例如下

首先我们先做一个盒子示例 效果如下
在这里插入图片描述

	<div class="box">
	  内容
	 </div>
	 <style>
	    .box{
	      width: 600px;
	      height: 400px;
	      background-color: rgb(211, 191, 247);
	      border: 30px solid red;
	    }
	  </style>

接下来使用边框属性border-image 简写方式

原始图片
在这里插入图片描述
代码效果图
在这里插入图片描述

.box{
      width: 600px;
      height: 400px;
      background-color: rgb(211, 191, 247);
      border: 30px solid red;
      border-image: url('./border-diamonds.png') 30 30 round;
    }

border-image属性示意

只有图片源的效果border-image-source

在这里插入图片描述

.box{
      width: 600px;
      height: 400px;
      background-color: rgb(211, 191, 247);
      box-sizing: border-box;
      border: 30px solid red;
      /* border-image: url('./border-diamonds.png') 30 30 round; */
      border-image-source: url('./border-diamonds.png'); /* 图片路径 */
    }

添加切割效果border-image-slice 控制四个角

border-image-slice CSS 属性将使用 border-image-source 引用的图像划分为多个区域。这些区域组成了一个元素的边框图像。
切分过程会将图像分割为 9 个区域:四个角、四个边(edge)以及中心区域。四条切片线,从它们各自的侧面设置给定距离,控制区域的大小。

在这里插入图片描述
上图说明了每个区域的位置。
区域 1-4 为角区域(corner region)。每一个都被用于组成最终边框图像的四个角。
区域 5-8 边区域(edge region)。在最终的边框图像中重复、缩放或修改它们以匹配元素的大小。
区域 9 为中心区域(middle region)。它在默认情况下会被丢弃,但如果设置了关键字 fill,则会将其用作元素的背景图像。
border-image-slice 属性可以用四个指定的 值来表示每一个图像切片的位置。负数是无效的,而大于其相应的最大尺寸的值则会被限制为 100%。

仅指定了一个位置(1 个值)时,创建的(上下左右)四个切片将具有相同的宽度/高度。
当指定了两个位置(2 个值)时,第一个值表示垂直方向的两个切片的高度(即 top 与 bottom),第二个值表示水平方向两侧切片的宽度(即 left 和 right)。
当指定了三个位置(3 个值)时,第一个值表示顶部切片的高度(即 top),第二个值表示水平方向两侧切片的宽度(即 left 和 right),第三个值则表示底部切片的高度(即 bottom)。
当指定了四个位置(4 个值)时,这四个值则分别对应 top、right、bottom、left(上、右、下、左)四个切片的宽度/高度。
可选值 fill 可放在上面声明的值的末尾。

取值

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

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

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

.box{
      width: 600px;
      height: 400px;
      background-color: rgb(211, 191, 247);
      box-sizing: border-box;
      border: 30px solid red;
      /* border-image: url('./border-diamonds.png') 30 30 round; */
      border-image-source: url('./border-diamonds.png'); /* 图片路径 */
      border-image-slice: 30; /* 图片裁剪 表明四个方向切割都是30*/
    }

在这里插入图片描述

.box{
      width: 600px;
      height: 400px;
      background-color: rgb(211, 191, 247);
      box-sizing: border-box;
      border: 30px solid red;
      /* border-image: url('./border-diamonds.png') 30 30 round; */
      border-image-source: url('./border-diamonds.png'); /* 图片路径 */
      /* border-image-slice: 30 30 30 30; */
      /* border-image-slice: 30; 图片裁剪 */
      border-image-slice: 30 fill;
    }

在这里插入图片描述

控制中间部分 border-image-repeat

 .box{
      width: 600px;
      height: 400px;
      background-color: rgb(211, 191, 247);
      box-sizing: border-box;
      border: 30px solid red;
      /* border-image: url('./border-diamonds.png') 30 30 round; */
      border-image-source: url('./border-diamonds.png'); /* 图片路径 */
      /* border-image-slice: 30 30 30 30; */
      /* 图片裁剪 和padding margin的使用逻辑一样  默认是像素  可以使用百分比  如果添加fill 会显示中间部分 层级在background-image之上 */
      border-image-slice: 30; 
       /* 图片重复方式
        1. 单个值
        repeat 平铺图片以填充边框
        stretch 拉伸图片以填充边框
        round 平铺图像。当不能整数次平铺时,根据情况放大或缩小图像
        space 平铺图像。当不能整数次平铺时,会用空白间隙填充在图像周围
        inherit 继承父级元素的计算值
        2. 两个值
        第一个值表示水平方向,第二个值表示垂直方向 值和1中的相同
      */
      border-image-repeat: round;
    }

在这里插入图片描述

.box{
      width: 600px;
      height: 400px;
      background-color: rgb(211, 191, 247);
      box-sizing: border-box;
      border: 30px solid red;
      /* border-image: url('./border-diamonds.png') 30 30 round; */
      border-image-source: url('./border-diamonds.png'); /* 图片路径 */
      /* border-image-slice: 30 30 30 30; */
      /* 图片裁剪 和padding margin的使用逻辑一样  默认是像素  可以使用百分比  如果添加fill 会显示中间部分 层级在background-image之上 */
      border-image-slice: 30; 
       /* 图片重复方式
        1. 单个值
        repeat 平铺图片以填充边框
        stretch 拉伸图片以填充边框
        round 平铺图像。当不能整数次平铺时,根据情况放大或缩小图像
        space 平铺图像。当不能整数次平铺时,会用空白间隙填充在图像周围
        inherit 继承父级元素的计算值
        2. 两个值
        第一个值表示水平方向,第二个值表示垂直方向 值和1中的相同
      */
      border-image-repeat: round stretch;
    }

在这里插入图片描述

配置边框渐变

在这里插入图片描述

.box{
      width: 600px;
      height: 400px;
      background-color: rgb(211, 191, 247);
      box-sizing: border-box;
      border: 30px solid red;
      /* border-image: url('./border-diamonds.png') 30 30 round; */
      /* border-image-source: url('./border-diamonds.png'); 图片路径 */
      border-image: linear-gradient(red, blue, green, pink) 27;
      /* border-image-slice: 30 30 30 30; */
      /* 图片裁剪 和padding margin的使用逻辑一样  默认是像素  可以使用百分比  如果添加fill 会显示中间部分 层级在background-image之上 */
      /* border-image-slice: 30;  */
       /* 图片重复方式
        1. 单个值
        repeat 平铺图片以填充边框
        stretch 拉伸图片以填充边框
        round 平铺图像。当不能整数次平铺时,根据情况放大或缩小图像
        space 平铺图像。当不能整数次平铺时,会用空白间隙填充在图像周围
        inherit 继承父级元素的计算值
        2. 两个值
        第一个值表示水平方向,第二个值表示垂直方向 值和1中的相同
      */
      /* border-image-repeat: round stretch; */
    }

其余属性

border-image-outset属性定义边框图像可超出边框盒的大小
border-image-width指定了 边界图像 (border image) 的宽度,如果本属性值大于元素的 border-width,边界图像将会向 padding 边缘延展
更多关于border的属性参考mdn

相关文章:

  • ICLR2022 | SETR | 提高视觉Transformers的对抗迁移性
  • 传统混合专家模型MoE架构详解以及python示例(DeepSeek-V3之基础)
  • VUE3环境搭建
  • ARINC 429详解
  • CentOS 7 企业级Redis 7部署指南
  • Python入门之List(列表)
  • CPU的原理
  • Cherno C++ P54 内存:栈与堆
  • 深度学习04 数据增强、调整学习率
  • 数据结构 红黑树和set/map
  • Windows环境搭建ES集群
  • DeepSeek-R1 大模型本地部署指南
  • hive:分桶表和分区表的区别, 分桶表,抽样查询
  • 国内智驾主要用的芯片以及对应厂商
  • Linux(ubuntu)下载ollama速度慢解决办法
  • 设计模式:状态模式
  • Visual Studio Code使用ai大模型编成
  • 【Godot4.3】自定义StyleBox
  • 在Vue3中使用Vuex
  • 前端里的this指向问题
  • 印度宣布即日起对所有巴基斯坦航班关闭领空
  • 人物|德国新外长关键词:总理忠实盟友、外交防务专家、大西洋主义者
  • 圆桌|如何应对特朗普政府的关税霸凌?一种联合国视角的思考
  • 证据公布!菲律宾6人非法登上铁线礁活动
  • 柳州警方通报临牌车撞倒行人:扣留涉事车辆,行人无生命危险
  • 杭州6宗涉宅用地收金125.76亿元,萧山区地块楼面价冲破5万元/平米