Skip to content

Bootstrap 图像形状

概述

Bootstrap 提供了多种图像样式类,用于控制图像的显示效果,包括响应式图像、图像形状、图像对齐等功能。

响应式图像

使用 .img-responsive.img-fluid 类让图像适应父元素的宽度:

html
<img src="..." class="img-fluid" alt="响应式图像">

响应式图像会自动缩放以适应父元素的宽度,最大宽度为 100%,高度自动调整以保持宽高比。

图像形状

圆角图像

使用 .rounded 类为图像添加圆角:

html
<img src="..." class="rounded" alt="圆角图像">

圆形图像

使用 .rounded-circle 类创建圆形图像:

html
<img src="..." class="rounded-circle" alt="圆形图像">

缩略图样式

使用 .img-thumbnail 类创建带边框的缩略图:

html
<img src="..." class="img-thumbnail" alt="缩略图">

图像对齐

浮动对齐

html
<!-- 左浮动 -->
<img src="..." class="float-start" alt="左浮动图像">

<!-- 右浮动 -->
<img src="..." class="float-end" alt="右浮动图像">

居中对齐

html
<!-- 使用 mx-auto 和 d-block -->
<img src="..." class="mx-auto d-block" alt="居中图像">

<!-- 或者使用 text-center 包装 -->
<div class="text-center">
    <img src="..." alt="居中图像">
</div>

图像尺寸

虽然 Bootstrap 没有提供专门的图像尺寸类,但你可以使用宽度工具类:

html
<img src="..." class="w-25" alt="25% 宽度">
<img src="..." class="w-50" alt="50% 宽度">
<img src="..." class="w-75" alt="75% 宽度">
<img src="..." class="w-100" alt="100% 宽度">

实际示例

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap 图像示例</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        .demo-img {
            width: 200px;
            height: 200px;
            background: linear-gradient(45deg, #007bff, #6f42c1);
            display: inline-block;
            margin: 10px;
        }
        
        .placeholder-img {
            background-color: #e9ecef;
            color: #6c757d;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 14px;
        }
    </style>
</head>
<body>
    <div class="container my-5">
        <h1>Bootstrap 图像形状示例</h1>
        
        <!-- 响应式图像 -->
        <h2>响应式图像</h2>
        <p>调整浏览器窗口大小查看效果:</p>
        <div class="row">
            <div class="col-md-6">
                <div class="demo-img placeholder-img img-fluid">
                    响应式图像
                </div>
            </div>
        </div>
        
        <!-- 图像形状 -->
        <h2 class="mt-5">图像形状</h2>
        <div class="row">
            <div class="col-md-4 text-center">
                <h5>默认</h5>
                <div class="demo-img placeholder-img">
                    默认图像
                </div>
            </div>
            <div class="col-md-4 text-center">
                <h5>圆角 (.rounded)</h5>
                <div class="demo-img placeholder-img rounded">
                    圆角图像
                </div>
            </div>
            <div class="col-md-4 text-center">
                <h5>圆形 (.rounded-circle)</h5>
                <div class="demo-img placeholder-img rounded-circle">
                    圆形图像
                </div>
            </div>
        </div>
        
        <div class="row mt-4">
            <div class="col-md-4 text-center">
                <h5>缩略图 (.img-thumbnail)</h5>
                <div class="demo-img placeholder-img img-thumbnail">
                    缩略图
                </div>
            </div>
        </div>
        
        <!-- 图像对齐 -->
        <h2 class="mt-5">图像对齐</h2>
        
        <h4>浮动对齐</h4>
        <div class="clearfix">
            <div class="demo-img placeholder-img float-start me-3" style="width: 150px; height: 150px;">
                左浮动
            </div>
            <p>这是一段文本,展示左浮动图像的效果。图像会浮动到左侧,文本会环绕在图像周围。Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
        </div>
        
        <div class="clearfix mt-4">
            <div class="demo-img placeholder-img float-end ms-3" style="width: 150px; height: 150px;">
                右浮动
            </div>
            <p>这是一段文本,展示右浮动图像的效果。图像会浮动到右侧,文本会环绕在图像周围。Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
        </div>
        
        <h4 class="mt-5">居中对齐</h4>
        <div class="demo-img placeholder-img mx-auto d-block" style="width: 200px; height: 150px;">
            居中图像
        </div>
        
        <!-- 图像尺寸 -->
        <h2 class="mt-5">图像尺寸</h2>
        <div class="row">
            <div class="col-12">
                <div class="demo-img placeholder-img w-25 d-inline-block" style="height: 100px;">
                    25% 宽度
                </div>
                <div class="demo-img placeholder-img w-50 d-inline-block" style="height: 100px;">
                    50% 宽度
                </div>
                <div class="demo-img placeholder-img w-75 d-inline-block" style="height: 100px;">
                    75% 宽度
                </div>
                <div class="demo-img placeholder-img w-100" style="height: 100px;">
                    100% 宽度
                </div>
            </div>
        </div>
        
        <!-- 实际图像示例 -->
        <h2 class="mt-5">实际应用示例</h2>
        
        <!-- 用户头像 -->
        <h4>用户头像</h4>
        <div class="d-flex align-items-center mb-3">
            <div class="demo-img placeholder-img rounded-circle me-3" style="width: 60px; height: 60px; font-size: 12px;">
                头像
            </div>
            <div>
                <h6 class="mb-0">张三</h6>
                <small class="text-muted">前端开发工程师</small>
            </div>
        </div>
        
        <!-- 产品展示 -->
        <h4>产品展示</h4>
        <div class="row">
            <div class="col-md-4 mb-4">
                <div class="card">
                    <div class="demo-img placeholder-img card-img-top" style="height: 200px;">
                        产品图片
                    </div>
                    <div class="card-body">
                        <h5 class="card-title">产品名称</h5>
                        <p class="card-text">产品描述信息。</p>
                        <a href="#" class="btn btn-primary">查看详情</a>
                    </div>
                </div>
            </div>
            <div class="col-md-4 mb-4">
                <div class="card">
                    <div class="demo-img placeholder-img card-img-top rounded-top" style="height: 200px;">
                        产品图片
                    </div>
                    <div class="card-body">
                        <h5 class="card-title">产品名称</h5>
                        <p class="card-text">产品描述信息。</p>
                        <a href="#" class="btn btn-primary">查看详情</a>
                    </div>
                </div>
            </div>
        </div>
        
        <!-- 图片画廊 -->
        <h4>图片画廊</h4>
        <div class="row">
            <div class="col-md-3 mb-3">
                <div class="demo-img placeholder-img img-thumbnail w-100" style="height: 150px;">
                    图片 1
                </div>
            </div>
            <div class="col-md-3 mb-3">
                <div class="demo-img placeholder-img img-thumbnail w-100" style="height: 150px;">
                    图片 2
                </div>
            </div>
            <div class="col-md-3 mb-3">
                <div class="demo-img placeholder-img img-thumbnail w-100" style="height: 150px;">
                    图片 3
                </div>
            </div>
            <div class="col-md-3 mb-3">
                <div class="demo-img placeholder-img img-thumbnail w-100" style="height: 150px;">
                    图片 4
                </div>
            </div>
        </div>
    </div>
</body>
</html>

图像优化技巧

1. 使用适当的图像格式

html
<!-- 对于照片使用 JPEG -->
<img src="photo.jpg" class="img-fluid" alt="照片">

<!-- 对于图标和简单图形使用 PNG 或 SVG -->
<img src="icon.svg" class="img-fluid" alt="图标">

<!-- 对于现代浏览器使用 WebP -->
<picture>
    <source srcset="image.webp" type="image/webp">
    <img src="image.jpg" class="img-fluid" alt="图像">
</picture>

2. 响应式图像

html
<!-- 使用 srcset 提供不同尺寸的图像 -->
<img src="small.jpg" 
     srcset="small.jpg 300w, medium.jpg 600w, large.jpg 1200w"
     sizes="(max-width: 576px) 300px, (max-width: 768px) 600px, 1200px"
     class="img-fluid" 
     alt="响应式图像">

3. 懒加载

html
<!-- 使用 loading="lazy" 实现懒加载 -->
<img src="image.jpg" class="img-fluid" loading="lazy" alt="懒加载图像">

图像与文本组合

媒体对象

html
<div class="d-flex">
    <div class="flex-shrink-0">
        <div class="demo-img placeholder-img rounded" style="width: 64px; height: 64px; font-size: 12px;">
            图像
        </div>
    </div>
    <div class="flex-grow-1 ms-3">
        <h5 class="mt-0">媒体标题</h5>
        这是媒体对象的内容。图像在左侧,内容在右侧。
    </div>
</div>

图文混排

html
<div class="row align-items-center">
    <div class="col-md-6">
        <div class="demo-img placeholder-img w-100" style="height: 300px;">
            特色图像
        </div>
    </div>
    <div class="col-md-6">
        <h3>特色内容</h3>
        <p>这里是与图像相关的文本内容。可以是产品介绍、功能说明或其他相关信息。</p>
        <a href="#" class="btn btn-primary">了解更多</a>
    </div>
</div>

最佳实践

  1. 始终添加 alt 属性:为所有图像提供有意义的替代文本
  2. 使用响应式图像:确保图像在所有设备上都能正确显示
  3. 优化图像大小:压缩图像以提高加载速度
  4. 选择合适的形状:根据设计需求选择合适的图像形状
  5. 考虑可访问性:确保图像不会影响内容的可访问性

下一步

现在你已经掌握了 Bootstrap 图像和形状的使用方法,接下来我们将学习 Jumbotron 组件。

下一章:Bootstrap Jumbotron →

本站内容仅供学习和研究使用。