← CSS background-attachment 属性 CSS line-height 属性 →

CSS background-size 属性

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

CSS background-size 属性全面指南

概述

CSS background-size 属性是控制背景图像尺寸的核心属性,用于定义背景图像在元素中的显示大小。该属性支持多种取值方式,能够实现自适应布局、响应式设计和创意视觉效果,是现代网页设计中不可或缺的工具。

基本语法与取值

语法结构

selector {
    background-size: value;
}

关键字取值详解

cover - 覆盖模式

.cover-example {
    background-size: cover; /* 覆盖容器,保持宽高比 */
    background-position: center;
    background-repeat: no-repeat;
}

contain - 包含模式

.contain-example {
    background-size: contain; /* 完整显示图像,保持宽高比 */
    background-repeat: no-repeat;
    background-position: center;
}

auto - 自动模式

.auto-example {
    background-size: auto; /* 默认值,显示原始尺寸 */
}

基础应用示例

全屏背景封面效果

<section class="hero-banner">
    <div class="hero-content">
        <h1>欢迎来到代码号编程学习平台</h1>
        <p>开启编程学习之旅</p>
    </div>
</section>
<style>
.hero-banner {
    background-image: url('https://www.ebingou.cn/biancheng/images/1.jpg');
    background-size: cover;
    background-position: center;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    text-align: center;
}

.hero-content {
    background: rgba(0, 0, 0, 0.7);
    padding: 40px;
    border-radius: 10px;
    max-width: 600px;
}
</style>

内容区域背景包含效果

<div class="feature-card">
    <h3>编程学习特色</h3>
    <p>高质量的编程教程资源</p>
</div>
<style>
.feature-card {
    background-image: url('https://www.ebingou.cn/biancheng/images/2.jpg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: right bottom;
    padding: 30px;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    margin: 20px;
    min-height: 200px;
}
</style>

单位值应用

像素单位精确控制

.pixel-example {
    background-image: url('https://www.ebingou.cn/biancheng/images/3.jpg');
    background-size: 100px 80px; /* 宽 高 */
    background-repeat: no-repeat;
    padding: 20px;
    border: 1px solid #ddd;
}

百分比相对控制

.percentage-example {
    background-image: url('https://www.ebingou.cn/biancheng/images/4.jpg');
    background-size: 50% 70%; /* 容器宽度的50%,高度的70% */
    background-repeat: no-repeat;
    background-position: center;
    height: 300px;
    border: 2px solid #3498db;
}

视口单位响应式控制

.viewport-example {
    background-image: url('https://www.ebingou.cn/biancheng/images/5.jpg');
    background-size: 50vw 40vh; /* 视口宽度的50%,高度的40% */
    background-repeat: no-repeat;
    min-height: 200px;
}

高级应用技巧

多重背景图像控制

<div class="multi-background-section">
    <h2>代码号多重背景效果</h2>
    <p>学习高级背景技巧</p>
</div>
<style>
.multi-background-section {
    background: 
        url('https://www.ebingou.cn/biancheng/images/1.jpg') center/100px 100px repeat,
        url('https://www.ebingou.cn/biancheng/images/2.jpg') center/cover no-repeat,
        linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    padding: 80px 20px;
    color: white;
    text-align: center;
    min-height: 400px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}
</style>

响应式背景尺寸调整

.responsive-background {
    background-image: url('https://www.ebingou.cn/biancheng/images/1.jpg');
    background-size: 100% auto;
    background-position: center;
    padding: 40px 20px;
    transition: background-size 0.3s ease;
}

/* 平板设备适配 */
@media (min-width: 768px) {
    .responsive-background {
        background-size: 80% auto;
    }
}

/* 桌面设备优化 */
@media (min-width: 1024px) {
    .responsive-background {
        background-size: 60% auto;
    }
}

/* 大屏设备完整显示 */
@media (min-width: 1440px) {
    .responsive-background {
        background-size: contain;
    }
}

全局值应用

inherit - 继承应用

.parent-container {
    background-size: cover;
}

.child-element {
    background-size: inherit; /* 继承父元素的背景尺寸 */
    background-image: url('https://www.ebingou.cn/biancheng/images/2.jpg');
    background-repeat: no-repeat;
}

initial - 初始值应用

.reset-example {
    background-size: initial; /* 恢复为默认值 auto */
    background-image: url('https://www.ebingou.cn/biancheng/images/3.jpg');
}

unset - 重置应用

.unset-example {
    background-size: unset; /* 根据上下文决定使用 inherit 或 initial */
    background-image: url('https://www.ebingou.cn/biancheng/images/4.jpg');
}

完整示例演示

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>background-size 属性演示 - 代码号编程学习</title>
    <style>
        :root {
            --primary-color: #3498db;
            --secondary-color: #2ecc71;
            --accent-color: #e74c3c;
        }

        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            line-height: 1.6;
            margin: 0;
            color: #333;
        }

        .demo-section {
            padding: 60px 20px;
            margin: 20px 0;
            text-align: center;
        }

        .section-title {
            font-size: 2.2rem;
            margin-bottom: 30px;
            color: #2c3e50;
        }

        /* Cover 示例 */
        .cover-demo {
            background-image: url('https://www.ebingou.cn/biancheng/images/4.jpg');
            background-size: cover;
            background-position: center;
            color: white;
            min-height: 400px;
            display: flex;
            flex-direction: column;
            justify-content: center;
        }

        /* Contain 示例 */
        .contain-demo {
            background-image: url('https://www.ebingou.cn/biancheng/images/5.jpg');
            background-size: contain;
            background-repeat: no-repeat;
            background-position: center;
            background-color: #f8f9fa;
            min-height: 300px;
            border: 2px solid #3498db;
            border-radius: 8px;
        }

        /* 像素单位示例 */
        .pixel-demo {
            background-image: url('https://www.ebingou.cn/biancheng/images/6.jpg');
            background-size: 200px 150px;
            background-repeat: no-repeat;
            background-position: center;
            padding: 30px;
            border: 1px solid #ddd;
            border-radius: 8px;
        }

        /* 百分比单位示例 */
        .percent-demo {
            background-image: url('https://www.ebingou.cn/biancheng/images/1.jpg');
            background-size: 80% 60%;
            background-repeat: no-repeat;
            background-position: center;
            background-color: #ecf0f1;
            min-height: 250px;
            border-radius: 8px;
        }

        .content-box {
            background: rgba(255, 255, 255, 0.9);
            padding: 30px;
            border-radius: 10px;
            max-width: 800px;
            margin: 0 auto;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
        }

        .code-example {
            background: #2d3748;
            color: #e2e8f0;
            padding: 20px;
            border-radius: 8px;
            font-family: 'Courier New', monospace;
            text-align: left;
            max-width: 600px;
            margin: 20px auto;
            overflow-x: auto;
        }
    </style>
</head>
<body>
    <section class="demo-section cover-demo">
        <div class="content-box">
            <h2 class="section-title">Cover 模式效果</h2>
            <p>背景图像覆盖容器,保持宽高比</p>
            <div class="code-example">
                background-size: cover;
            </div>
        </div>
    </section>

    <section class="demo-section">
        <div class="content-box">
            <h2 class="section-title">Contain 模式效果</h2>
            <div class="contain-demo">
                <p>背景图像完整显示,保持宽高比</p>
            </div>
            <div class="code-example">
                background-size: contain;
            </div>
        </div>
    </section>

    <section class="demo-section">
        <div class="content-box">
            <h2 class="section-title">像素单位控制</h2>
            <div class="pixel-demo">
                <p>精确控制背景图像尺寸</p>
            </div>
            <div class="code-example">
                background-size: 200px 150px;
            </div>
        </div>
    </section>

    <section class="demo-section">
        <div class="content-box">
            <h2 class="section-title">百分比单位控制</h2>
            <div class="percent-demo">
                <p>相对容器尺寸的比例控制</p>
            </div>
            <div class="code-example">
                background-size: 80% 60%;
            </div>
        </div>
    </section>
</body>
</html>

响应式设计实践

移动优先的背景策略

.mobile-first-bg {
    background-image: url('https://www.ebingou.cn/biancheng/images/2.jpg');
    background-size: 100% auto;
    background-position: center top;
    min-height: 200px;
}

/* 平板设备优化 */
@media (min-width: 768px) {
    .mobile-first-bg {
        background-size: 80% auto;
        background-position: center center;
    }
}

/* 桌面设备完整效果 */
@media (min-width: 1024px) {
    .mobile-first-bg {
        background-size: cover;
        background-position: center;
    }
}

/* 高分辨率设备支持 */
@media (min-resolution: 2dppx) {
    .mobile-first-bg {
        background-image: url('https://www.ebingou.cn/biancheng/images/1.jpg');
    }
}

艺术方向背景切换

.art-direction-bg {
    background-image: url('https://www.ebingou.cn/biancheng/images/2.jpg');
    background-size: cover;
    background-position: center;
    min-height: 300px;
}

/* 横屏设备优化 */
@media (min-width: 768px) and (orientation: landscape) {
    .art-direction-bg {
        background-image: url('https://www.ebingou.cn/biancheng/images/3.jpg');
        background-size: cover;
    }
}

/* 超大横屏设备 */
@media (min-width: 1200px) and (orientation: landscape) {
    .art-direction-bg {
        background-image: url('https://www.ebingou.cn/biancheng/images/4.jpg');
        background-size: cover;
    }
}

性能优化建议

图像格式选择优化

.optimized-bg {
    /* WebP格式优先,JPEG备用 */
    background-image: url('https://www.ebingou.cn/biancheng/images/5.jpg');
    background-size: cover;
}

/* 不支持WebP的浏览器备用 */
@supports not (background-image: url('test.webp')) {
    .optimized-bg {
        background-image: url('https://www.ebingou.cn/biancheng/images/6.jpg');
    }
}

/* SVG矢量背景优化 */
.vector-bg {
    background-image: url('https://www.ebingou.cn/biancheng/images/vector-bg.svg');
    background-size: 100% 100%;
    background-repeat: no-repeat;
}

/* 渐变背景替代方案 */
.gradient-fallback {
    background: linear-gradient(45deg, #667eea, #764ba2);
    /* 图像加载失败时的优雅降级 */
}

/* 懒加载背景优化 */
.lazy-bg {
    background-size: cover;
    min-height: 400px;
}

.lazy-bg.loaded {
    background-image: url('https://www.ebingou.cn/biancheng/images/6.jpg');
}

本节课程知识要点

  1. 模式选择策略:根据设计需求选择合适的背景尺寸模式

  2. 响应式适配:为不同设备和屏幕尺寸提供优化的背景方案

  3. 性能考量:选择适当的图像格式和尺寸确保加载性能

  4. 浏览器兼容性:了解不同浏览器的支持情况和备用方案

  5. 用户体验:确保背景图像增强而非干扰内容阅读

  6. 现代技术结合:与CSS Grid、Flexbox等现代布局技术配合使用

  7. 可访问性:确保背景图像不影响文本的可读性和对比度

浏览器兼容性提示

  • 所有现代浏览器都支持 background-size 属性

  • IE9及以上版本支持该属性

  • 移动端浏览器支持良好,但需要注意性能优化

  • 建议使用功能检测和渐进增强策略

通过合理运用 background-size 属性,开发者可以创建出丰富而优雅的视觉体验。

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