← CSS bottom 属性 CSS background-origin 属性 →

CSS border-image 边框图像

原创 2025-09-07 CSS 已有人查阅

CSS border-image 属性详解:边框图像技术指南

概述

border-image 是 CSS3 中一个强大的属性,它允许开发者使用图像来替代元素的传统边框样式。通过这个属性,可以创建出丰富多彩、创意十足的边框效果,为网页设计增添独特的视觉表现力。

属性语法

selector {
  border-image: <source> <slice> <width> <outset> <repeat> | initial | inherit;
}

属性组成详解

border-image-source(边框图像源)

指定用作边框图像的资源路径,可以是 URL 或渐变效果。

.image-border {
  border-image-source: url('https://www.ebingou.cn/biancheng/images/1.jpg');
}

border-image-slice(图像切片)

将边框图像划分为9个区域:四个角、四个边和一个中心区域。

.slice-example {
  border-image-slice: 30; /* 统一值 */
  border-image-slice: 30 20; /* 水平 垂直 */
  border-image-slice: 30 20 10 40; /* 上 右 下 左 */
}

border-image-width(边框图像宽度)

定义边框图像的显示宽度。

.width-example {
  border-image-width: 20px; /* 统一宽度 */
  border-image-width: 10px 20px; /* 垂直 水平 */
  border-image-width: 10px 20px 15px 25px; /* 上 右 下 左 */
}

border-image-outset(边框图像外延)

控制边框图像向外扩展的距离。

.outset-example {
  border-image-outset: 10px; /* 统一外延 */
  border-image-outset: 5px 10px; /* 垂直 水平 */
}

border-image-repeat(边框图像重复)

定义边框图像的填充方式。

.repeat-example {
  border-image-repeat: stretch; /* 拉伸填充 */
  border-image-repeat: repeat; /* 重复填充 */
  border-image-repeat: round; /* 平铺填充 */
  border-image-repeat: space; /* 间距填充 */
}

基础示例演示

示例1:基本边框图像应用

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号编程学习 - 基础边框图像</title>
  <style>
    .codehao-border {
      width: 300px;
      height: 200px;
      margin: 50px auto;
      padding: 30px;
      border: 30px solid transparent;
      border-image: url('https://www.ebingou.cn/biancheng/images/2.jpg') 30 round;
      background-color: #f8f9fa;
      text-align: center;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 18px;
      color: #333;
    }
    
    .content {
      background: rgba(255, 255, 255, 0.8);
      padding: 20px;
      border-radius: 8px;
    }
  </style>
</head>
<body>
  <div class="codehao-border">
    <div class="content">
      <h3>代码号编程学习平台</h3>
      <p>探索CSS边框图像的奇妙世界</p>
    </div>
  </div>
</body>
</html>

示例2:多值边框图像配置

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号编程 - 高级边框图像</title>
  <style>
    .advanced-border {
      width: 400px;
      height: 250px;
      margin: 40px auto;
      padding: 40px;
      border: 40px solid transparent;
      border-image: 
        url('https://www.ebingou.cn/biancheng/images/3.jpg') 
        40 /* slice */
        / 
        20px 30px /* width */
        / 
        10px /* outset */
        round; /* repeat */
      background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
      color: white;
      text-align: center;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
    }
    
    h2 {
      margin-bottom: 20px;
      font-size: 24px;
    }
    
    p {
      font-size: 16px;
      line-height: 1.6;
    }
  </style>
</head>
<body>
  <div class="advanced-border">
    <h2>边框图像进阶学习</h2>
    <p>通过代码号编程教程,掌握CSS边框图像的高级应用技巧</p>
  </div>
</body>
</html>

渐变边框图像示例

线性渐变边框

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号编程 - 渐变边框</title>
  <style>
    .gradient-border {
      width: 350px;
      height: 200px;
      margin: 50px auto;
      padding: 30px;
      border: 15px solid transparent;
      border-image: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1) 1;
      background-color: #f8f9fa;
      text-align: center;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    
    .gradient-content {
      padding: 20px;
    }
    
    h3 {
      color: #333;
      margin-bottom: 15px;
    }
    
    p {
      color: #666;
      line-height: 1.6;
    }
  </style>
</head>
<body>
  <div class="gradient-border">
    <div class="gradient-content">
      <h3>线性渐变边框效果</h3>
      <p>使用CSS渐变创建独特的边框样式</p>
    </div>
  </div>
</body>
</html>

径向渐变边框

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号编程学习 - 径向渐变边框</title>
  <style>
    .radial-border {
      width: 300px;
      height: 180px;
      margin: 60px auto;
      padding: 25px;
      border: 20px solid transparent;
      border-image: radial-gradient(circle, #ff9a9e, #fad0c4, #fbc2eb) 1;
      background-color: #fff;
      text-align: center;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
    }
    
    .logo {
      width: 80px;
      height: 80px;
      margin-bottom: 15px;
    }
  </style>
</head>
<body>
  <div class="radial-border">
    <img src="https://www.ebingou.cn/biancheng/images/logo.png" alt="代码号编程" class="logo">
    <h3>径向渐变边框</h3>
    <p>创造圆润柔和的边框效果</p>
  </div>
</body>
</html>

实际应用场景

卡片组件边框

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号编程 - 卡片边框应用</title>
  <style>
    .card-container {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
      gap: 30px;
      padding: 40px;
      max-width: 1200px;
      margin: 0 auto;
    }
    
    .card {
      padding: 30px;
      border: 20px solid transparent;
      background: white;
      box-shadow: 0 10px 30px rgba(0,0,0,0.1);
      text-align: center;
    }
    
    .card1 {
      border-image: url('https://www.ebingou.cn/biancheng/images/4.jpg') 30 round;
    }
    
    .card2 {
      border-image: linear-gradient(135deg, #667eea, #764ba2) 1;
    }
    
    .card3 {
      border-image: url('https://www.ebingou.cn/biancheng/images/5.jpg') 40 stretch;
    }
    
    h3 {
      color: #333;
      margin-bottom: 15px;
    }
    
    p {
      color: #666;
      line-height: 1.6;
    }
  </style>
</head>
<body>
  <div class="card-container">
    <div class="card card1">
      <h3>图像边框卡片</h3>
      <p>使用图片资源创建独特的边框效果</p>
    </div>
    
    <div class="card card2">
      <h3>渐变边框卡片</h3>
      <p>通过CSS渐变实现平滑的边框过渡</p>
    </div>
    
    <div class="card card3">
      <h3>拉伸边框卡片</h3>
      <p>使用stretch模式填充边框图像</p>
    </div>
  </div>
</body>
</html>

按钮特殊边框

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>代码号编程学习 - 按钮边框</title>
  <style>
    .button-container {
      display: flex;
      gap: 20px;
      justify-content: center;
      padding: 50px;
      flex-wrap: wrap;
    }
    
    .special-button {
      padding: 15px 30px;
      border: 10px solid transparent;
      background: #fff;
      font-size: 16px;
      font-weight: bold;
      cursor: pointer;
      transition: all 0.3s ease;
      min-width: 150px;
      text-align: center;
    }
    
    .btn1 {
      border-image: url('https://www.ebingou.cn/biancheng/images/6.jpg') 20 round;
      color: #e74c3c;
    }
    
    .btn2 {
      border-image: linear-gradient(45deg, #ff6b6b, #4ecdc4) 1;
      color: #2c3e50;
    }
    
    .btn3 {
      border-image: repeating-linear-gradient(45deg, #fd746c, #ff9068 10px) 1;
      color: #34495e;
    }
    
    .special-button:hover {
      transform: translateY(-2px);
      box-shadow: 0 5px 15px rgba(0,0,0,0.2);
    }
  </style>
</head>
<body>
  <div class="button-container">
    <button class="special-button btn1">图像边框</button>
    <button class="special-button btn2">渐变边框</button>
    <button class="special-button btn3">重复渐变</button>
  </div>
</body>
</html>

本节课程知识要点

  1. 九宫格原理:理解边框图像被分割为9个区域的工作原理

  2. 切片技巧:掌握border-image-slice属性的正确使用方法

  3. 重复模式:熟悉stretch、repeat、round、space四种重复模式的区别

  4. 渐变应用:学会使用CSS渐变作为边框图像资源

  5. 性能优化:了解边框图像对页面性能的影响和优化方法

注意事项

  1. 浏览器兼容性:确保在目标浏览器中测试边框图像效果

  2. 图像质量:使用高质量图像资源以获得视觉效果

  3. 响应式设计:考虑在不同屏幕尺寸下的边框图像表现

  4. 降级方案:为不支持该属性的浏览器提供替代边框样式

  5. 可访问性:确保边框效果不会影响内容的可读性和可用性

← CSS bottom 属性 CSS background-origin 属性 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号