这是一个非常常见的需求,因为现在绝大多数网站都需要在手机、平板和电脑上都有良好的显示效果,视频是网站内容的重要组成部分,所以它的自适应和兼容性至关重要。

(图片来源网络,侵删)
我将分步为您讲解,从准备工作到具体代码实现,再到常见问题的解决。
第一步:理解核心概念
在开始之前,我们需要明确两个核心点:
-
织梦自适应模板的核心:
- 响应式网页设计:通过使用 媒体查询 和 弹性布局,让网页能够根据不同设备的屏幕尺寸自动调整布局、字体大小和图片/视频尺寸。
- 关键CSS技术:
meta viewport标签:这是移动端自适应的“灵魂”,它告诉浏览器如何控制页面的尺寸和缩放。- Flexbox (弹性布局):用于创建灵活的、可预测的布局,是现代网页布局的首选。
- 媒体查询:
@media规则,允许我们为不同的屏幕尺寸(如手机、平板、桌面)应用不同的CSS样式。
-
织梦模板中嵌入视频的最佳实践:
(图片来源网络,侵删)- 使用HTML5
<video>:这是目前最标准、最灵活的方式,可以支持多种视频格式,并提供播放控制。 - 视频源多样化:为了兼容不同浏览器,最好提供多种格式的视频文件(如
.mp4,.webm,.ogg)。 - 视频样式自适应:通过CSS设置视频的最大宽度和高度为100%,并确保其容器可以自适应缩放。
- 使用HTML5
第二步:创建一个基础的自适应模板结构
我们将从头开始构建一个简单的自适应模板,这个模板将包含头部、内容区和底部。
创建模板文件
在织梦后台的“模板管理”中,创建一个新的模板文件,index_article_video.htm。
编写模板代码
下面是一个完整的、带有视频自适应功能的模板代码,您可以直接复制并根据您的需求进行修改。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- 1. 自适应核心:设置viewport -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">{dede:global.cfg_webname/}</title>
<meta name="description" content="{dede:global.cfg_description/}">
<meta name="keywords" content="{dede:global.cfg_keywords/}">
<link rel="stylesheet" href="/templets/您的模板目录/style.css">
<!-- 引入jQuery,如果需要的话 -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<!-- 头部 -->
<header>
<div class="header-content">
<h1><a href="/">{dede:global.cfg_webname/}</a></h1>
<!-- 导航菜单 -->
<nav>
<ul>
{dede:channel type='top' currentstyle="
<li class='on'><a href='~typelink~'>~typename~</a></li>
"}
<li><a href='[field:typelink/]'>[field:typename/]</a></li>
{/dede:channel}
</ul>
</nav>
</div>
</header>
<!-- 主要内容区 -->
<main class="main-content">
<!-- 视频内容列表 -->
{dede:arclist row='5' titlelen='40' orderby='pubdate' channelid='1'}
<article class="video-item">
<!-- 视频缩略图,点击后播放 -->
<a href="javascript:;" class="video-play-btn" data-src="[field:videourl/]">
<img src="[field:litpic/]" alt="[field:title/]">
<!-- 播放图标 -->
<div class="play-icon"></div>
</a>
<h2><a href="[field:arcurl/]">[field:title/]</a></h2>
<p class="video-desc">[field:description function='cn_substr(@me, 100)'/]...</p>
</article>
{/dede:arclist}
</main>
<!-- 页脚 -->
<footer>
<p>Copyright © {dede:global.cfg_webname/} All Rights Reserved.</p>
</footer>
<!-- 2. 视频播放弹窗 -->
<div id="video-modal" class="video-modal">
<div class="modal-content">
<span class="close-btn">×</span>
<!-- 视频将在这里动态加载 -->
<video id="modal-video" controls>
您的浏览器不支持 HTML5 视频。
</video>
</div>
</div>
<!-- 引入自定义JS -->
<script src="/templets/您的模板目录/js.js"></script>
</body>
</html>
第三步:编写CSS样式文件
在与模板文件同目录下,创建一个 style.css 文件,这是实现自适应和视频样式的关键。

(图片来源网络,侵删)
/* style.css */
/* 全局基础样式 */
body {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f4;
color: #333;
}
a {
text-decoration: none;
color: #007bff;
}
/* 头部样式 */
.header-content {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
display: flex;
justify-content: space-between;
align-items: center;
}
nav ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
}
nav ul li {
margin-left: 20px;
}
区 - 使用Flexbox布局 */
.main-content {
max-width: 1200px;
margin: 20px auto;
padding: 0 20px;
}
.video-item {
background: #fff;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
margin-bottom: 20px;
overflow: hidden; /* 关键:让视频容器能正确裁剪圆角 */
}
/* 3. 视频容器样式 - 实现自适应的核心 */
.video-item .video-play-btn {
position: relative; /* 为绝对定位的播放图标提供参考 */
display: block;
width: 100%;
/* 4:3 的宽高比,你也可以用 16:9 (56.25%) */
padding-top: 56.25%;
background-color: #000;
}
.video-item .video-play-btn img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover; /* 确保图片填充容器且不变形 */
}
/* 播放图标 */
.play-icon {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 60px;
height: 60px;
background-color: rgba(0, 0, 0, 0.7);
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
}
.play-icon::after {
content: '';
border-style: solid;
border-width: 15px 0 15px 25px;
border-color: transparent transparent transparent #fff;
margin-left: 5px;
}
.video-item h2 {
padding: 15px;
margin: 0;
}
.video-desc {
padding: 0 15px 15px;
color: #666;
font-size: 14px;
}
/* 页脚样式 */
footer {
text-align: center;
padding: 20px;
background-color: #333;
color: #fff;
margin-top: 40px;
}
/* 5. 媒体查询 - 针对不同屏幕尺寸调整布局 */
@media screen and (max-width: 768px) {
/* 平板设备 */
.header-content {
flex-direction: column;
text-align: center;
}
nav ul {
margin-top: 15px;
flex-wrap: wrap; /* 允许换行 */
justify-content: center;
}
nav ul li {
margin: 5px 10px;
}
}
@media screen and (max-width: 480px) {
/* 手机设备 */
.main-content {
padding: 0 10px;
}
.video-item h2 {
padding: 10px;
font-size: 18px;
}
}
第四步:编写JavaScript文件
为了实现点击缩略图弹出视频播放器的功能,我们需要一个简单的 js.js 文件。
// js.js
document.addEventListener('DOMContentLoaded', function() {
// 获取所有带有 .video-play-btn 类的元素
const playButtons = document.querySelectorAll('.video-play-btn');
// 获取视频弹窗
const modal = document.getElementById('video-modal');
// 获取弹窗内的video元素
const modalVideo = document.getElementById('modal-video');
// 获取关闭按钮
const closeBtn = document.querySelector('.close-btn');
// 为每个播放按钮添加点击事件
playButtons.forEach(button => {
button.addEventListener('click', function() {
// 获取data-src属性中存储的视频地址
const videoSrc = this.getAttribute('data-src');
// 将视频地址设置为video元素的src
modalVideo.src = videoSrc;
// 显示弹窗
modal.style.display = 'block';
// 播放视频
modalVideo.play();
});
});
// 点击关闭按钮,关闭弹窗并暂停视频
closeBtn.addEventListener('click', function() {
modal.style.display = 'none';
modalVideo.pause();
// 清空src,下次打开重新加载,避免音视频不同步等问题
modalVideo.src = '';
});
// 点击弹窗背景(modal-content以外的区域)也可以关闭
window.addEventListener('click', function(event) {
if (event.target == modal) {
modal.style.display = 'none';
modalVideo.pause();
modalVideo.src = '';
}
});
});
第五步:在织梦后台配置
- 上传文件:将您创建的
index_article_video.htm、style.css和js.js文件上传到织梦模板目录(/templets/您的新模板目录/)。 - 设置默认模板:在织梦后台的“模板管理” -> “默认模板管理”中,将您新建的模板设置为对应栏目(如首页、文章列表页)的默认模板。
- 添加视频:
- 在发布文章时,您需要将视频文件上传到服务器。
- 方法一(推荐):使用DedeCMS的 “附件管理” 功能上传视频,然后在文章内容中通过
[vod]标签调用,或者,更直接的方式是,在文章内容中直接使用HTML5的<video>- 方法二:在文章自定义字段中添加一个“视频地址”字段,然后在模板中使用
[field:自定义字段名/]来调用,我们在上面的模板中就是用的这种方式,假设您有一个自定义字段名为videourl。 - 方法二:在文章自定义字段中添加一个“视频地址”字段,然后在模板中使用
第六步:常见问题与解决方案
-
视频在移动端无法自动播放?
- 原因:出于节省流量和提升用户体验的考虑,大部分移动浏览器(尤其是iOS Safari)禁止了视频的自动播放,除非是静音视频。
- 解决方案:在
<video>标签中添加muted和playsinline属性。<video id="modal-video" controls muted playsinline> <!-- ... --> </video>
-
视频在不同手机上播放器样式不一致?
- 原因:不同浏览器(Android Chrome, iOS Safari, 微信内置浏览器)对
<video>标签的默认样式渲染不同。 - 解决方案:使用CSS重置视频播放器的默认样式,这是一个比较复杂的话题,但通常可以通过添加一些CSS来统一外观。
video { /* 移除可能的默认边框 */ border: none; /* 确保视频在容器内正确显示 */ width: 100%; height: 100%; object-fit: contain; /* 或者 cover,取决于需求 */ } /* 可以尝试重置播放器控件样式,但效果有限 */ video::-webkit-media-controls-panel { background-image: none; /* 尝试移除背景图 */ }
- 原因:不同浏览器(Android Chrome, iOS Safari, 微信内置浏览器)对
-
如何使用第三方视频(如腾讯云、阿里云、B站)的视频?
- 原理:这些平台通常提供的是嵌入式代码(iframe)或播放器JS SDK,您不能直接将视频URL放在
<video>标签里。 - 解决方案:
- 使用iframe:将平台提供的
<iframe>代码直接复制到您的模板弹窗内容中,这最简单,但样式控制较难。 - 使用JS SDK:以B站为例,它会提供一个
<script>标签和<div id="player"></div>,您需要在js.js中,当点击播放按钮时,动态初始化这个播放器,并将其挂载到您的弹窗<div>中,这更灵活,但需要阅读官方文档。
- 使用iframe:将平台提供的
- 原理:这些平台通常提供的是嵌入式代码(iframe)或播放器JS SDK,您不能直接将视频URL放在
通过以上步骤,您已经成功创建了一个:
- 响应式的织梦模板,能完美适配PC、平板和手机。
- 视频功能完善的模板,通过列表页的缩略图点击,在弹窗中播放视频,体验良好。
- 代码结构清晰,使用了现代的Flexbox布局和媒体查询技术,易于维护和扩展。
您可以根据这个基础框架,进一步美化您的网站,添加更多功能。
