核心思想
解决图片拉伸问题的核心思想是:让图片的容器(div 或其他块级元素)决定图片的显示方式,而不是让图片撑破容器。

这主要通过 CSS 的三个属性来实现:
max-width: 100%: 图片的最大宽度不能超过其父容器的宽度,这是最关键的一步,可以防止图片溢出容器。height: auto: 高度自动调整,以保持图片原始的宽高比,防止变形。width: 100%: (可选) 在某些布局中,让图片宽度填满容器,高度按比例自适应,通常和max-width一起使用,以确保灵活性。
解决方案
下面提供几种从简单到复杂的解决方案,你可以根据你的网站结构和需求选择最适合的一种。
全局 CSS 解决方案(最推荐,最彻底)
这种方法通过修改网站的全局 CSS 文件,让所有 <img> 标签都遵循自适应规则,一劳永逸。
操作步骤:

-
找到 CSS 文件 登录你的 DedeCMS 后台,进入【模板】->【默认模板管理】,找到你当前正在使用的模板,点击“修改”。 在模板文件列表中,找到主要的 CSS 文件,通常是
style.css或main.css。 -
添加 CSS 代码 在 CSS 文件的末尾,添加以下代码:
/* 全局图片自适应,防止拉伸 */ img { max-width: 100%; /* 图片最大宽度为父容器宽度 */ height: auto; /* 高度自动,保持宽高比 */ display: block; /* 防止图片下方出现多余空隙 */ margin: 0 auto; /* 图片居中显示 */ } /* 针对某些特定情况,比如图片在表格里,可能需要额外处理 */ table img { max-width: 100%; height: auto; } -
保存并更新缓存 保存 CSS 文件后,回到 DedeCMS 后台,点击【系统】->【一键更新网站】->【更新所有】或【更新CSS文件】,然后刷新你的网站前端页面,看看效果。
优点:

- 简单高效:只需修改一个文件,一劳永逸。
- 全局生效:网站里所有的
<img>标签都会自动适应,无需手动修改内容。
区域设置自适应
如果你的网站某些区域(比如文章内容区)的图片需要特殊处理,而其他区域(比如广告位)不需要,可以使用这种方法。
操作步骤:
-
找到 CSS 文件 同方案一,找到你的模板 CSS 文件(如
style.css)。 -
添加针对特定选择器的 CSS 代码 假设你想让文章内容区(class 或 id 是
article-content)的图片自适应,你可以这样写:/* 只让文章内容区的图片自适应 */ .article-content img { max-width: 100%; height: auto; display: block; margin: 0 auto; } /* 或者使用 ID 选择器,如果文章内容区的 ID 是 'article-content' */ /* #article-content img { ... } */ -
保存并更新缓存 保存文件,并更新网站缓存。
优点:
- 精确控制:只对指定的区域生效,不影响其他地方的图片布局。
使用织梦标签 {dede:img} 的附加属性
在编写文章或模板时,如果你使用的是织梦的自定义图片标签 {dede:img},可以在标签内直接添加样式。
示例代码:
{dede:img imgfile='uploads/images/2025/10/your-image.jpg' width='600' height='400'}
<a href='[field:linkurl/]'><img src='[field:imgsrc/]' alt='[field:alttext/]' style="max-width:100%; height:auto;" /></a>
{/dede:img}
说明:
- 这里我们把
width和height属性作为图片的原始尺寸参考,但实际显示由内联的style控制。 - 这种方法比较灵活,但需要手动为每张图片添加样式,不适合批量修改。
进阶方案:响应式图片(最佳实践)
为了在高清屏(Retina)和不同尺寸的设备上都能获得最佳效果,我们不仅要让图片自适应,还要根据设备加载不同尺寸的图片,这需要结合 HTML5 的 <picture> 标签或 srcset 属性。
虽然 DedeCMS 本身不直接支持,但我们可以通过修改模板和利用织梦的变量来实现。
使用 srcset 属性(推荐)
srcset 允许你为一幅图片提供多个尺寸版本,浏览器会根据屏幕尺寸和分辨率自动选择最合适的图片。
修改方法:
在你的模板文件中,找到文章内容循环标签 假设你已经上传了不同尺寸的图片(如 修改方法: 如果设置了以上方法,图片仍然拉伸,请检查: 对于绝大多数 DedeCMS 方案一(全局 CSS) 是最简单、最有效的解决图片拉伸问题的方法,如果你追求极致的性能和用户体验,再考虑方案四(响应式图片)。{dede:field.body/} 或自定义图片标签,修改 <img>
small.jpg, medium.jpg, large.jpg):<!-- 在文章内容模板中,找到 img 标签进行修改 -->
<img
src="/uploads/images/2025/10/medium.jpg" <!-- 默认显示的图片 -->
srcset="/uploads/images/2025/10/small.jpg 480w,
/uploads/images/2025/10/medium.jpg 800w,
/uploads/images/2025/10/large.jpg 1200w"
alt="文章配图"
style="max-width: 100%; height: auto;"
/>
480w, 800w, 1200w 表示图片的原始宽度(以像素为单位),浏览器会选择宽度最接近但不超过当前屏幕可用宽度的图片加载,这样既保证了清晰度,又节省了移动流量。使用
<picture> 标签(更灵活)<picture> 标签可以让你根据不同的屏幕尺寸或特性(如横屏/竖屏)来提供完全不同的图片,甚至可以是不同格式的图片(如 WebP)。<picture>
<!-- 默认情况下,使用 medium.jpg -->
<source srcset="/uploads/images/2025/10/medium.jpg">
<!-- 如果屏幕宽度小于 768px (例如手机),使用 small.jpg -->
<source media="(max-width: 768px)" srcset="/uploads/images/2025/10/small.jpg">
<!-- 如果支持 WebP 格式,优先使用 WebP 图片(更小更清晰) -->
<source type="image/webp" srcset="/uploads/images/2025/10/medium.webp">
<!-- 不支持 <picture> 标签的浏览器,回退到 img 标签 -->
<img src="/uploads/images/2025/10/medium.jpg" alt="文章配图" style="max-width: 100%; height: auto;">
</picture>
常见问题排查
div.article-content img p img)覆盖了你设置的样式?可以使用浏览器开发者工具(按 F12)检查元素,看看最终应用的样式是什么。div 或 td)本身是自适应的,如果父容器设置了固定的 width,max-width: 100% 也就失效了。<img> 标签上是否有内联的 width 和 height 属性,它们会直接覆盖 CSS 的 max-width 和 height。<img width="600" height="400"> 就会强制图片拉伸。
方案
适用场景
优点
缺点
全局 CSS
大多数网站,快速解决问题
简单、彻底、一劳永逸
无法针对特定区域做特殊处理
区域 CSS
需要对特定区域(如文章内容)进行控制
精确控制,不影响其他部分
需要知道具体的 CSS 选择器
标签属性
手动编写内容,单张图片处理
灵活,针对性强
效率低,不适合大量内容
响应式图片
对网站性能和体验要求高的专业网站
性能最佳,体验最好
实现复杂,需要准备多尺寸图片
