CSS技巧系列--使用视频作为背景

视频背景

有一些官方网站为了弘扬他们的企业文化,往往会拍一些记录短片。如果能把这些记录短片放在公司的官方网站上,既能体现公司的企业文化又能给网站提供更加绚丽的视觉享受

预览效果

接下来请看下我制作的一个demo:

预览效果:视频全屏背景案例
下载源码:http://chengqige.com/bg/video/index.rar

大家可以下载源码进行阅读,关键的部分我都做了详细的注释

核心代码展示

css部分

* {
    margin: 0;
    padding: 0;
}

.video-box {
    position: relative;
    height: 100vh;
    background-color: #C1CFF7;
    /*进行视频裁剪*/
    overflow: hidden;
}

.video-box .video-background {
    position: absolute;
    left: 50%;
    top: 50%;
    /*保证视频内容始终居中*/
    transform: translate(-50%, -50%);
    width: 100%;
    height: 100%;
    /*保证视频充满屏幕*/
    object-fit: cover;
    min-height: 800px;
}

html部分:

<div class="video-box">
   <video class="video-background" preload="auto" loop playsinline autoplay src="https://lf3-cdn-tos.bytescm.com/obj/eden-cn/lmeh7pfuho/campus/campus_intro_20200522.mp4" tabindex="-1" muted="muted"></video>
</div>

上述css+html代码可以完美的运行出效果,关于object-fill属性大家可以百度一下可以学到不同的属性值

核心模块解读

关键点1:如何使视频铺满屏幕

其实使得视频铺满屏幕,原则上来讲是不可能实现的任务。因为video组件我们不能像图片一样对视频进行拉伸,所以直接设置宽高是行不通的。

小实验:(验证直接设置宽高对video无效)

<!--设置video组件宽300px、高度300px,但是video播放视频的区域并非为正方形-->
<video width="300" height="300" loop playsinline autoplay
       src="https://lf3-cdn-tos.bytescm.com/obj/eden-cn/lmeh7pfuho/campus/campus_intro_20200522.mp4" tabindex="-1"
       muted="muted"></video>

实验效果:正方形

原因:视频流不可扭曲拉伸,若同时对视频设置宽高以宽度为基准

其实这个问题在css2.0之前只能依靠js去解决,但是现在css3有新的属性值:object-fill:cover
这个属性值能够让我们的视频充满屏幕,并且不变形

实验代码:

* {
    margin: 0;
    padding: 0;
}

video {
    width: 100%;
    height: 100vh;
    object-fit:cover;
}
div{
	background:red;
	height:100vh
}
<video src="https://lf3-cdn-tos.bytescm.com/obj/eden-cn/lmeh7pfuho/campus/campus_intro_20200522.mp4" muted="muted" autoplay="autoplay"></video>
<div></div>

显示效果:

我们发现有一条白色的细缝,这个细缝导致拥有垂直滚动条

解决方案:
对video标签设置display:block

细缝完美解决!

如果有溢出的问题,我们可以使用overflow-hidden就可以解决问题

关键点2:如何使视频适配手机

接下来展示不同设备我的适配效果:

大屏幕:

在这里插入图片描述
平板电脑:

手机:

那么如何实现适配呢?

玄机在这里

.video-box .video-background {
    position: absolute;
    left: 50%;
    top: 50%;
    /*保证视频内容始终居中*/
    transform: translate(-50%, -50%);
    width:100%;
    height: 100vh;
    object-fill:cover;
    min-height: 800px;
}

我们保证视频是居中的,也就是说屏幕再小我们只显示居中的部分,两边裁剪掉

以上就是所有技术关键之处

使用postcss-px-to-viewport插件,需要首先安装postcss、postcss-loader和postcss-px-to-viewport模块。你可以使用以下命令进行安装: npm i postcss postcss-loader postcss-px-to-viewport -D 安装完成后,你需要配置webpack来使用postcss-loader。在webpack的配置文件中,添加以下代码: ```javascript module: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader', 'postcss-loader' // 添加postcss-loader ] } ] } ``` 接下来,在项目根目录下创建一个postcss.config.js文件,并添加以下代码: ```javascript module.exports = { plugins: { 'postcss-px-to-viewport': { viewportWidth: 750, // 设计稿宽度 viewportHeight: 1334, // 设计稿高度 unitPrecision: 3, // 转换精度,保留小数位数 viewportUnit: 'vw', // 转换的单位 selectorBlackList: ['.ignore', '.hairlines'], // 不转换的类名 minPixelValue: 1, // 小于或等于1px不转换 mediaQuery: false // 允许在媒体查询中转换px } } } ``` 配置完成后,postcss-px-to-viewport插件就可以在项目中使用了。它会将CSS中的像素单位自动转换为视口单位,使得页面能够自适应不同的设备屏幕大小。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [移动端适配 rem、postcss-pxtorem、postcss-px-to-viewport、vw vh](https://blog.csdn.net/xuyanl/article/details/129499800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值