网站

CSS 图像

CSS 图片 | MDN

引入

图片是网页中最常见的元素之一,用来展示产品、配图、头像、图标等内容。

CSS 可以控制图片的显示效果,例如大小、边框、圆角、阴影、滤镜等,让图片更好地融入页面设计。

正文

定义

定义

CSS 图像样式用于控制 <img> 元素及其他图片元素的显示效果,包括尺寸、边框、圆角、阴影、对齐方式和滤镜等。

通过 CSS,可以让图片不只是简单地显示在页面上,还能根据设计需求调整显示效果。

常见属性

尺寸控制

使用 widthheight 控制图片大小。

img {
  width: 300px;
  height: auto; /* 自动保持宽高比 */
}

通常只设置 widthheight 其中一个,另一个设为 auto,这样可以保持图片的原始宽高比,避免变形。

边框

使用 border 为图片添加边框。

img {
  border: 2px solid #ddd;
}

边框可以分别设置四个方向:

  • border-top:顶部边框
  • border-right:右侧边框
  • border-bottom:底部边框
  • border-left:左侧边框

也可以单独设置边框的宽度、样式和颜色:

  • border-width:边框宽度
  • border-style:边框样式(soliddasheddotted 等)
  • border-color:边框颜色

圆角

使用 border-radius 让图片显示圆角。

img {
  border-radius: 8px; /* 圆角半径 */
}
 
/* 圆形图片 */
img.avatar {
  width: 100px;
  height: 100px;
  border-radius: 50%; /* 圆形 */
  object-fit: cover; /* 裁剪图片以填充容器 */
}

border-radius: 50% 可以让图片显示为圆形,常用于头像。

阴影

使用 box-shadow 为图片添加阴影。

img {
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

阴影参数:水平偏移 垂直偏移 模糊半径 扩展半径 颜色

轮廓

使用 outline 为图片添加轮廓,和 border 类似但不占用布局空间。

img:hover {
  outline: 3px solid #2563eb;
  outline-offset: 2px; /* 轮廓和图片的间距 */
}

轮廓属性:

  • outline-width:轮廓宽度
  • outline-style:轮廓样式
  • outline-color:轮廓颜色
  • outline-offset:轮廓偏移距离

对齐方式

使用 displaymargin 控制图片的对齐方式。

/* 图片居中 */
img {
  display: block;
  margin: 0 auto;
}
 
/* 图片左对齐 */
img {
  display: block;
  margin-left: 0;
}
 
/* 图片右对齐 */
img {
  display: block;
  margin-right: 0;
  margin-left: auto;
}

裁剪和填充

使用 object-fit 控制图片在容器中的裁剪和填充方式。

img {
  width: 200px;
  height: 200px;
  object-fit: cover; /* 裁剪图片以填充容器 */
}

object-fit 的值:

  • fill:拉伸图片以填充容器(可能变形)
  • contain:缩放图片以适应容器(保持宽高比,可能有空白)
  • cover:裁剪图片以填充容器(保持宽高比,可能裁掉部分内容)
  • none:不缩放,保持原始大小
  • scale-down:取 nonecontain 中较小的那个

滤镜效果

使用 filter 为图片添加滤镜效果。

/* 灰度 */
img {
  filter: grayscale(100%);
}
 
/* 模糊 */
img {
  filter: blur(5px);
}
 
/* 亮度 */
img {
  filter: brightness(1.2);
}
 
/* 对比度 */
img {
  filter: contrast(1.5);
}
 
/* 饱和度 */
img {
  filter: saturate(2);
}

可以组合多个滤镜:

img:hover {
  filter: brightness(1.1) contrast(1.2) saturate(1.3);
}

例子

圆形头像

<img src="avatar.jpg" alt="用户头像" class="avatar">
.avatar {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  border: 2px solid #e5e7eb;
  object-fit: cover;
}

这个例子让头像显示为圆形,并带有浅灰色边框。

卡片图片

<div class="card">
  <img src="product.jpg" alt="产品图片">
  <h3>产品名称</h3>
  <p>产品描述</p>
</div>
.card img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  border-radius: 8px 8px 0 0; /* 只圆角上边 */
}
 
.card img:hover {
  filter: brightness(1.1);
  transition: filter 0.3s;
}

这个例子让卡片图片填充容器宽度,保持固定高度,顶部显示圆角,鼠标移上去时图片变亮。

图片画廊

<div class="gallery">
  <img src="photo1.jpg" alt="照片1">
  <img src="photo2.jpg" alt="照片2">
  <img src="photo3.jpg" alt="照片3">
</div>
.gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
 
.gallery img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  transition: transform 0.3s, box-shadow 0.3s;
}
 
.gallery img:hover {
  transform: translateY(-4px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

这个例子创建一个响应式图片画廊,图片带有圆角和阴影,鼠标移上去时图片上浮并增强阴影。

特点

  • widthheight 控制图片尺寸
  • 通常只设置 widthheight 其中一个,另一个设为 auto 保持宽高比
  • border 添加边框,border-radius 添加圆角
  • box-shadow 添加阴影,outline 添加轮廓
  • object-fit 控制图片在容器中的裁剪和填充方式
  • filter 可以添加多种视觉效果,例如灰度、模糊、亮度调节等
  • 使用 display: blockmargin: 0 auto 可以让图片居中显示
  • 图片默认是内联元素,可以用 display: block 改为块级元素

注意事项

  • 图片尺寸不要只设置 widthheight 一个固定值,另一个也固定,这样会导致图片变形
  • 使用 object-fit: cover 时,图片可能会被裁剪,注意图片的重要内容是否被裁掉
  • border-radius: 50% 要配合相同的 widthheight 使用,才能显示正圆
  • 滤镜效果可能影响性能,不要在大量图片上同时使用复杂滤镜
  • 图片应该设置 alt 属性,提升可访问性和 SEO
  • 响应式图片可以使用 max-width: 100% 让图片自适应容器宽度
  • outline 不占用布局空间,不会影响其他元素位置

理解

可以把 CSS 图像样式理解为”图片的装饰和适配工具”。

它让图片不只是简单地显示原始尺寸和样式,而是可以根据设计需求调整大小、添加边框和圆角、设置阴影和滤镜,让图片更好地融入页面整体风格。

例如,头像通常需要圆形显示,卡片图片需要圆角和阴影,画廊图片需要统一尺寸和悬停效果。

CSS 图像样式的核心价值是让图片的显示效果更灵活、更符合设计需求,同时通过 object-fit 等属性解决不同宽高比图片的适配问题。

引出

理解了图像样式之后,可以继续学习:

也可以学习响应式图片的处理方式,例如使用 <picture> 标签和 srcset 属性。