这不仅仅是做一个手机版模板那么简单,核心在于“响应式设计”,一套模板,通过CSS媒体查询等技术,自动识别并适配不同尺寸的设备(手机、平板、桌面电脑)。

下面我将从核心原理、详细步骤、代码示例和最佳实践四个方面,为你提供一份完整的指南。
核心原理:响应式设计的三大支柱
要让一个网页自适应,主要依靠以下三点:
-
流式布局
- 摒弃固定宽度:不要给容器设置固定的像素值,
width: 980px;。 - 使用百分比:使用百分比(%)来定义宽度,让容器宽度随父级容器(通常是浏览器窗口)的宽度变化而变化。
- 关键技巧:一个常用的布局技巧是“最大宽度”,即设置一个百分比宽度,但同时设置一个
max-width(1200px),这样,在大屏幕上,内容区域不会无限拉伸导致阅读困难;在小屏幕上,它会自动收缩。
- 摒弃固定宽度:不要给容器设置固定的像素值,
-
弹性图片和媒体
(图片来源网络,侵删)- 图片自适应:使用
max-width: 100%;和height: auto;,这能确保图片永远不会超出其容器的宽度,同时保持其原始比例。 - 视频自适应:同样地,将嵌入的视频(如iframe)也用
max-width: 100%;来限制。
- 图片自适应:使用
-
媒体查询
- 核心功能:这是响应式设计的“大脑”,它允许你根据设备的特定特征(如视口宽度、屏幕方向、分辨率)来应用不同的CSS样式。
- 工作方式:在CSS中,你可以使用
@media规则来定义不同的样式块,织梦模板通常会在<head>部分通过<meta>标签和JS来设置视口,并引入一个专门用于移动设备的CSS文件。
详细步骤:从零开始制作织梦响应式模板
假设你已经有一个织梦PC版的默认模板(通常是 /templets/default/ 目录下的文件),我们将在此基础上进行修改。
步骤1:修改 head.htm 文件,设置移动端适配
head.htm 是所有页面共用的头部文件,在这里设置视口和引入移动样式至关重要。
-
添加视口标签: 在
<head>标签内添加以下<meta>标签,这个标签告诉浏览器如何控制页面的尺寸和缩放。
(图片来源网络,侵删)<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
width=device-width:设置视口宽度为设备屏幕宽度。initial-scale=1.0:初始缩放比例为1.0。maximum-scale=1.0:用户最大缩放比例为1.0,防止页面被放大。user-scalable=0:禁止用户手动缩放,提升移动端体验。
-
引入移动端CSS文件: 在引入主CSS文件(如
style.css)之后,再引入一个专门为移动端设计的CSS文件(如mobile.css),我们将使用媒体查询来控制这个文件的加载时机。<!-- 引入PC端主样式 --> <link rel="stylesheet" type="text/css" href="{dede:global.cfg_templets_skin/}/style.css" /> <!-- 引入移动端样式,仅在小屏幕下生效 --> <link rel="stylesheet" type="text/css" href="{dede:global.cfg_templets_skin/}/mobile.css" media="screen and (max-width: 768px)">这里我们设定了一个断点
768px,当屏幕宽度小于等于768px时,就会加载mobile.css文件并覆盖style.css中的部分样式。
步骤2:修改 index.htm 等模板文件,重构HTML结构
为了在移动端有更好的布局(比如常见的“上中下”三栏布局变为“单栏”),我们需要对HTML结构进行一些调整。
-
使用语义化标签:推荐使用
<header>,<nav>,<main>,<article>,<aside>,<footer>等HTML5标签,它们结构清晰,利于SEO和移动端解析。 -
重构布局:将原来的复杂布局拆分成更简单的模块,将左右两栏的布局结构改为上下结构。
PC版
index.htm可能的结构示例:<div class="main-container"> <div class="sidebar">...</div> <!-- 左侧边栏 --> <div class="content">...</div> <!-- 主内容区 --> </div>
修改后的
index.htm结构(为响应式做准备):<header>...</header> <nav>...</nav> <main> <article class="content">...</article> <!-- 主内容区 --> <aside class="sidebar">...</aside> <!-- 侧边栏 --> </main> <footer>...</footer>
注意:HTML结构本身没有变,我们是通过CSS来控制它们的显示顺序和宽度。
步骤3:编写CSS样式
这是实现自适应的核心,我们通常有两种方法:
方法A:修改现有 style.css(不推荐,容易混乱)
直接在 style.css 中添加媒体查询,但这样会导致文件臃肿。
方法B:新建 mobile.css(强烈推荐)
专门为小屏幕写一套样式,清晰明了。
-
在
style.css中设置流式布局和弹性图片:/* style.css */ body { margin: 0; font-family: Arial, sans-serif; } /* 1. 流式布局容器 */ .main-container { width: 90%; /* 使用百分比宽度 */ max-width: 1200px; /* 设置最大宽度,避免在大屏上过宽 */ margin: 0 auto; /* 居中 */ } .content { float: left; width: 70%; /* PC端内容区占70% */ } .sidebar { float: right; width: 25%; /* PC端侧边栏占25% */ } /* 2. 弹性图片和媒体 */ img, video, iframe { max-width: 100%; height: auto; } -
在
mobile.css中编写媒体查询样式: 当屏幕宽度小于768px时,我们希望内容区和侧边栏变成上下排列,并且去掉浮动。/* mobile.css */ /* 这里的样式只会在屏幕宽度 <= 768px 时生效 */ /* 3. 媒体查询 */ @media screen and (max-width: 768px) { /* 重置布局:去掉浮动,变成块级元素,占满全宽 */ .content, .sidebar { float: none; /* 清除浮动 */ width: 100%; /* 宽度占满父容器 */ margin-bottom: 20px; /* 增加下边距,拉开间距 */ } /* 调整字体大小,方便手机阅读 */ body { font-size: 16px; } /* 隐藏PC端才有的元素,比如复杂的Banner */ .pc-only-banner { display: none; } /* 调整导航栏为移动端常见的汉堡菜单样式 */ .main-nav { /* ... 相关样式 ... */ } }
步骤4:织梦特定标签的优化
织梦的标签有时会生成固定宽度的表格或图片,需要额外处理。
-
处理
{dede:arclist}文章列表: 默认的arclist可能会用表格布局,为了自适应,最好使用div布局。 在后台“系统” -> “系统基本参数” -> “核心设置”中,将“文档列表默认调用图片<img>标签”的值修改为<img src='{picurl}' width='100%' height='auto' />。 -
处理
{dede:field.body}文章内容页: 文章内容里插入的图片和表格是自适应的噩梦。- 图片:确保文章内容里的图片没有设置
width和height属性,或者通过CSS覆盖它们。 - 表格:表格天生不响应式,如果必须用,可以给表格容器加一个样式,让它在小屏幕下可以横向滚动。
.article-content table { width: 100%; } .article-content .table-container { overflow-x: auto; /* 在小屏幕下出现横向滚动条 */ }然后在文章内容模板
{dede:field.body/}外面包裹一个<div class="table-container">。
- 图片:确保文章内容里的图片没有设置
最佳实践与技巧
-
设置断点:
768px:一个常见的断点,区分平板和手机。992px:区分小桌面和大桌面。1200px:区分超大桌面。 你可以根据你的设计稿来灵活设定。
-
使用相对单位: 除了 ,还可以使用
em,rem,vw(viewport width) 等相对单位,它们能让你的布局更加灵活和精细。 -
移动优先: 这是一种更现代的开发思想,先为最小的屏幕(手机)编写样式,然后通过媒体查询
@media (min-width: 768px)逐步为更大的屏幕添加和增强样式,这样可以减少大量重复的覆盖代码。 -
测试工具:
- 浏览器开发者工具:按
F12打开,使用设备模拟器功能,可以快速预览在各种手机型号下的效果。 - 真机测试:最终一定要在真实的手机上测试,使用微信内置浏览器、手机自带浏览器等。
- 浏览器开发者工具:按
-
织梦手机站独立模块(备选方案): 如果你发现响应式模板开发复杂,或者你的PC版和移动版内容差异很大,织梦CMS也提供了独立的手机站解决方案。
- 原理:创建一个独立的手机模板目录(如
/templets/mobile/),当用户通过手机访问时,织梦会自动调用这个目录下的模板。 - 优点:PC和手机完全独立,样式和内容可以完全不同,开发简单。
- 缺点:需要维护两套模板,内容同步需要手动配置或使用插件,不利于SEO(搜索引擎会认为是两套内容)。
- 原理:创建一个独立的手机模板目录(如
对于大多数网站,响应式设计是更优的选择,它维护成本低,用户体验好,也更符合现代Web开发的趋势,希望这份详细的指南能帮助你成功制作出适配手机屏幕的织梦模板!
