目录

  1. 基础篇:HTML5 <video>
    • 基本结构
    • 常用属性
  2. 美化篇:CSS 视频样式
    • 基础样式(宽高、边框、圆角)
    • 自定义播放控件
    • 响应式视频
  3. 交互篇:CSS & JavaScript 进阶效果
    • 悬停显示播放按钮
    • 自定义进度条
    • 视频封面图
  4. 高级篇:现代 CSS 技巧
    • 视频作为背景
    • 视频滤镜效果
    • 视频遮罩效果
  5. 资源篇:免费视频素材与播放器库
    • 免费视频网站
    • 视频播放器库

基础篇:HTML5 <video>

这是在网页中嵌入视频最核心、最标准的方法。

css网页免费视频代码大全
(图片来源网络,侵删)

基本结构

直接使用 <video> 标签,并指定视频文件的 src

<video src="my-video.mp4" controls></video>

常用属性

  • controls: 显示浏览器默认的播放控件(播放/暂停、音量、进度条等)。
  • autoplay: 视频在就绪后自动播放。注意:现代浏览器通常要求视频必须静音 (muted) 才能自动播放。
  • muted: 视频静音。
  • loop: 视频播放结束后循环播放。
  • width / height: 设置视频的宽度和高度(单位:像素)。
  • poster: 指定视频加载时显示的封面图片路径。

示例:

<!-- 带控件、自动播放、静音、循环、有封面的视频 -->
<video 
    src="path/to/your/video.mp4" 
    controls 
    autoplay 
    muted 
    loop 
    poster="path/to/your/poster.jpg"
    width="600">
    <!-- 如果浏览器不支持 video 标签,这里的内容会显示 -->
    您的浏览器不支持 HTML5 视频。
</video>

美化篇:CSS 视频样式

使用CSS可以轻松改变视频的外观,使其与你的网页设计融为一体。

基础样式

设置视频的宽高、边框、圆角等。

css网页免费视频代码大全
(图片来源网络,侵删)
.video-container {
    max-width: 800px;
    margin: 0 auto;
}
.video-wrapper video {
    width: 100%; /* 视频宽度自适应容器 */
    height: auto; /* 视频高度自适应,保持比例 */
    border: 2px solid #333;
    border-radius: 8px; /* 圆角 */
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* 阴影效果 */
}

HTML:

<div class="video-container">
    <div class="video-wrapper">
        <video src="my-video.mp4" controls></video>
    </div>
</div>

自定义播放控件

隐藏默认控件,然后用HTML和CSS/JS创建自己的控件。

HTML:

<div class="custom-player">
    <video id="myVideo" src="my-video.mp4"></video>
    <div class="custom-controls">
        <button id="playPauseBtn">▶️</button>
        <input type="range" id="progressBar" min="0" max="100" value="0">
        <span id="timeDisplay">0:00 / 0:00</span>
    </div>
</div>

CSS:

css网页免费视频代码大全
(图片来源网络,侵删)
.custom-player {
    max-width: 800px;
    margin: 0 auto;
    position: relative; /* 为绝对定位的控件提供参考 */
}
.custom-player video {
    width: 100%;
    display: block; /* 移除视频下方的空隙 */
}
.custom-controls {
    background: rgba(0, 0, 0, 0.7);
    color: white;
    padding: 10px;
    border-radius: 0 0 8px 8px;
    display: flex;
    align-items: center;
    gap: 10px;
}
#playPauseBtn {
    background: none;
    border: none;
    color: white;
    font-size: 1.2em;
    cursor: pointer;
}
#progressBar {
    flex-grow: 1; /* 进度条占据剩余空间 */
}

JavaScript (控制逻辑):

const video = document.getElementById('myVideo');
const playPauseBtn = document.getElementById('playPauseBtn');
const progressBar = document.getElementById('progressBar');
const timeDisplay = document.getElementById('timeDisplay');
// 播放/暂停
playPauseBtn.addEventListener('click', () => {
    if (video.paused) {
        video.play();
        playPauseBtn.textContent = '⏸️';
    } else {
        video.pause();
        playPauseBtn.textContent = '▶️';
    }
});
// 更新进度条
video.addEventListener('timeupdate', () => {
    const value = (video.currentTime / video.duration) * 100;
    progressBar.value = value;
    // 更新时间显示
    const currentMinutes = Math.floor(video.currentTime / 60);
    const currentSeconds = Math.floor(video.currentTime % 60).toString().padStart(2, '0');
    const durationMinutes = Math.floor(video.duration / 60);
    const durationSeconds = Math.floor(video.duration % 60).toString().padStart(2, '0');
    timeDisplay.textContent = `${currentMinutes}:${currentSeconds} / ${durationMinutes}:${durationSeconds}`;
});
// 点击进度条跳转
progressBar.addEventListener('input', () => {
    const time = (progressBar.value / 100) * video.duration;
    video.currentTime = time;
});

响应式视频

使用 max-width: 100%height: auto 确保视频在不同屏幕尺寸下都能正确缩放。

video {
    max-width: 100%;
    height: auto;
}

交互篇:CSS & JavaScript 进阶效果

通过CSS和JavaScript结合,可以实现更丰富的用户体验。

悬停显示播放按钮

当用户鼠标悬停在视频上时,显示一个半透明的播放按钮。

HTML:

<div class="video-hover-container">
    <video src="my-video.mp4" controls></video>
    <div class="play-overlay">▶️</div>
</div>

CSS:

.video-hover-container {
    position: relative;
    max-width: 800px;
    margin: 0 auto;
}
.video-hover-container video {
    width: 100%;
    display: block;
}
.play-overlay {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 4em;
    color: rgba(255, 255, 255, 0.8);
    opacity: 0; /* 默认隐藏 */
    transition: opacity 0.3s ease;
    pointer-events: none; /* 鼠标可以穿透点击视频 */
}
.video-hover-container:hover .play-overlay {
    opacity: 1; /* 悬停时显示 */
}

自定义进度条(更高级版)

隐藏默认进度条,用CSS完全自定义一个。

HTML (与“自定义播放控件”部分类似):

<div class="custom-player">
    <video id="myVideo" src="my-video.mp4"></video>
    <div class="custom-controls">
        <div class="progress-container">
            <div class="progress-bar">
                <div class="progress-filled"></div>
            </div>
        </div>
    </div>
</div>

CSS:

.custom-player {
    position: relative;
}
.custom-controls {
    background: rgba(0, 0, 0, 0.7);
    padding: 5px;
}
.progress-container {
    width: 100%;
    height: 8px;
    background: #555;
    cursor: pointer;
    border-radius: 4px;
}
.progress-bar {
    width: 100%;
    height: 100%;
    position: relative;
}
.progress-filled {
    height: 100%;
    background: #007bff;
    width: 0%; /* 初始宽度为0 */
    border-radius: 4px;
}

JavaScript (更新 progress-filled 的宽度):

// ... (前面的JS代码) ...
const progressFilled = document.querySelector('.progress-filled');
// 更新进度条
video.addEventListener('timeupdate', () => {
    const value = (video.currentTime / video.duration) * 100;
    progressFilled.style.width = value + '%';
});
// 点击进度条跳转
document.querySelector('.progress-container').addEventListener('click', (e) => {
    const rect = e.currentTarget.getBoundingClientRect();
    const x = e.clientX - rect.left;
    const percentage = x / rect.width;
    video.currentTime = percentage * video.duration;
});

视频封面图

封面图在视频加载或暂停时显示,点击后开始播放。

HTML:

<div class="video-thumbnail-container">
    <video id="myVideo" src="my-video.mp4"></video>
    <img src="poster.jpg" alt="Video Thumbnail" class="thumbnail">
    <div class="play-button-overlay">▶️</div>
</div>

CSS:

.video-thumbnail-container {
    position: relative;
    max-width: 800px;
    margin: 0 auto;
}
.video-thumbnail-container video,
.video-thumbnail-container .thumbnail {
    width: 100%;
    display: block;
}
.thumbnail {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1; /* 位于视频之上 */
}
.play-button-overlay {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 4em;
    color: rgba(255, 255, 255, 0.8);
    z-index: 2; /* 位于封面图之上 */
    cursor: pointer;
}

JavaScript:

const video = document.getElementById('myVideo');
const thumbnail = document.querySelector('.thumbnail');
const playButton = document.querySelector('.play-button-overlay');
// 点击播放按钮或封面图开始播放
playButton.addEventListener('click', () => {
    video.play();
    thumbnail.style.display = 'none'; // 播放时隐藏封面
    playButton.style.display = 'none'; // 隐藏播放按钮
});
// 视频结束时重新显示封面
video.addEventListener('ended', () => {
    thumbnail.style.display = 'block';
    playButton.style.display = 'block';
});

高级篇:现代 CSS 技巧

视频作为背景

使用 object-fitposition 属性创建全屏视频背景。

HTML:

<div class="video-background">
    <video autoplay muted loop playsinline>
        <source src="background-video.mp4" type="video/mp4">
    </video>
    <div class="content">
        <h1>欢迎访问</h1>
        <p>这是一个带有视频背景的页面</p>
    </div>
</div>

CSS:

.video-background {
    position: relative;
    width: 100vw;
    height: 100vh;
    overflow: hidden;
}
.video-background video {
    position: absolute;
    top: 50%;
    left: 50%;
    min-width: 100%;
    min-height: 100%;
    width: auto;
    height: auto;
    transform: translate(-50%, -50%);
    z-index: -1; /* 将视频置于内容之下 */
    object-fit: cover; /* 确保视频覆盖整个区域,可能会裁剪 */
}
.content {
    position: relative;
    z-index: 1;
    color: white;
    text-align: center;
    padding-top: 20vh;
}
  • object-fit: cover 是关键,它让视频像背景图片一样填充整个容器。
  • playsinline 是移动端播放内联视频的必要属性。

视频滤镜效果

使用 filter 属性为视频添加各种视觉效果。

/* 灰度效果 */
.grayscale-filter video {
    filter: grayscale(100%);
}
/* 模糊效果 */
.blur-filter video {
    filter: blur(5px);
}
/* 褐色怀旧效果 */
.sepia-filter video {
    filter: sepia(100%);
}
/* 亮度/对比度调整 */
.brightness-contrast-filter video {
    filter: brightness(1.2) contrast(1.1);
}

HTML:

<div class="grayscale-filter">
    <video src="my-video.mp4" controls></video>
</div>

视频遮罩效果

使用 clip-path 属性创建独特的视频形状。

/* 圆形遮罩 */
.circle-mask video {
    clip-path: circle(50% at 50% 50%);
}
/* 多边形遮罩(例如六边形) */
.hexagon-mask video {
    clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
}
/* 不规则波浪遮罩 */
.wavy-mask video {
    clip-path: polygon(
        0% 15%, 15% 0%, 85% 0%, 100% 15%,
        100% 85%, 85% 100%, 15% 100%, 0% 85%
    );
}

HTML:

<div class="circle-mask">
    <video src="my-video.mp4" controls></video>
</div>

资源篇:免费视频素材与播放器库

免费视频素材网站

视频播放器库

如果你不想从头开始写,可以使用这些成熟的库,它们提供了丰富的功能和自定义选项。

  • Video.js: https://videojs.com/ - 非常流行、功能强大、可扩展性强的视频播放器,支持广告、插件等。
  • Plyr: https://plyr.io/ - 现代化、轻量级、易于使用的播放器,对移动端支持很好。
  • Clappr: https://clappr.io/ - 由大公司(Globo)开源的模块化播放器。

希望这份“CSS网页免费视频代码大全”能帮助你从入门到精通,轻松地在你的网页中嵌入和控制视频!