html5视频自动横过来自适应页面且点击播放功能的实现


Posted in HTML / CSS onJune 03, 2020

前言

本代码适用于1920*1080的视频,如果是其他尺寸的视频,需要更改js代码里的几个数字,重新计算视频宽高

效果图

如图所示,

在长屏手机里,横过来的视频高度充满,宽度自适应后居中;
在短屏手机里,横过来的视频宽度充满,高度自适应后居中;

html5视频自动横过来自适应页面且点击播放功能的实现
html5视频自动横过来自适应页面且点击播放功能的实现

代码HTML

<!-- 跳过视频按钮 -->
	<img src="next.png" alt="" class="btn_video vertical_middle">
	<!-- 视频页 -->
	<div class="page page_video">
		<!-- 视频开始按钮 -->
		<img src="start_video.png" alt="" class="start_video">
		<div class="video_info">横屏观看效果更佳</div>
		<!-- 视频 -->
		<video id="video" style="object-fit:fill;" playsinline="true" webkit-playsinline="true" x-webkit-airplay="allow"
   airplay="allow" x5-video-player-type="h5" x5-video-player-fullscreen="true" x5-video-orientation="portrait" poster="./images/video1.png" src="./video/1.mp4">
		</video>

下面是video里面属性的注释:

style="object-fit:fill;" /*视频在微信里全屏*/
		
		playsinline="true" /*支持小窗播放*/

		airplay="allow"/*支持Airplay的设备*/

		x5-video-player-type="h5" /*启用H5播放器*/

		x5-video-player-fullscreen="true" /*全屏设置,防止横屏*/

		x5-video-orientation="portrait" /*播放器横竖屏方向, landscape横屏,portraint竖屏,默认值为竖屏*/

CSS

/*页面全屏*/
	.page {
	    position: absolute;
	    top: 0px;
	    left: 0px;
	    width: 100%;
	    height: 100%;
	    /*background-size: 100% 100%;*/
	}
	/*垂直居中*/
	.vertical_middle{
		top: 50%;
		transform: translateY(-50%);
	}
	/* 视频 */
	.page_video{
		width: 100%;
		background: #000000;
		position: absolute;
		left: 0;
		top: 0;
		text-align: center;
	}
	/*视频是以(0,0)为中心旋转的90度,所以left为100%*/
	#video{
		position: absolute;
		/* margin-left: 4px; */
		left: 100%;
		z-index: 1;
	}
	.btn_video{
		width: 10%;
		position: absolute;
		left: 5%;
		z-index: 10;
		/*display:none;*/
	}
	/*视频播放按钮*/
	.start_video{
		width: 100px;
		height: 100px;
		position: absolute;
		left: 10%;
		right: 0;
		top: 0;
		bottom: 0;
		margin: auto;
		z-index: 100;
		
	}
	/*横屏观看更佳的提示文字*/
	.video_info{
		height: 30px;
		font-size: 30px;
		position: absolute;
		top: 0%;
		bottom: 0;
		margin: auto;
		left: 30%;
		z-index: 100;
		color: #fff;
		transform:rotate(90deg);
		-ms-transform:rotate(90deg); /* Internet Explorer */
		-moz-transform:rotate(90deg); /* Firefox */
		-webkit-transform:rotate(90deg); /* Safari 和 Chrome */
		-o-transform:rotate(90deg); /* Opera */
	}

JS

/* 获取屏幕高度 */
	var phone_height = document.documentElement.clientHeight;
	if(phone_height<1496){
		// console.log('屏幕高度<1496');
		var back_up = (1496-phone_height)/2;
		$(".page_video").css("backgroundPosition","0 -"+back_up+"px");
		if( phone_height >= 1360 ){
			//华为手机&&苹果x
		}
	}else{
		 // console.log('屏幕高度>1496');
		$(".page_video").css("backgroundSize","100% 100%");
	}

	//视频横屏
	var width = document.documentElement.clientWidth;
	var height = document.documentElement.clientHeight;
	$(".page_video").height(height+"px");
	
	var video_width;
	var video_height;
	var video_top = 0;
	var video_left = 0;
	// 设置视频倒过来
	if( width < height ){
		//一个1920*1080的视频,到手机上高750时,宽度是1333.333
		if( height < 1334 ){
			console.log("手机分辨率高度 < 1333.33,视频横过来后宽度铺满,高度自适应后铺不满屏幕,所以向左平移一些居中");
			$("#video").width(height);
			video_width = $("#video").width();
			
			// 等比例自适应数值不是正好的,那就手动定高度
			video_height = video_width/1920*1080;
			$("#video").height(video_height);
			
			//设置视频水平居中
			video_left = -(width - video_height)/2;
		}else{
			console.log("手机分辨率高度 > 1333.33,视频横过来后高度铺满,宽度自适应后铺不满屏幕,所以向下平移一些居中");
			$("#video").height(width);
			video_height = $("#video").height();
		
			// 等比例自适应数值不是正好的,那就手动定宽度
			video_width = (1920/1080)*$("#video").height();
			$("#video").width(video_width);
			
			//设置视频垂直居中
			video_top = (height - video_width)/2;
		}
		
		//把调整好的数值赋给视频
		$("#video").css({'left': "100%","top":video_top+"px","marginLeft":video_left+"px",'transform':'rotate(90deg)','transformOrigin':'0 0'} ); 
	}
	//视频页
	var myVideo = document.getElementById('video');
	//点击播放按钮
	$(".start_video").click(function(){
		$(".start_video").hide();
		$(".video_info").hide();
		myVideo.play();
	})
	//监听视频被点击
	myVideo.addEventListener('touchstart', function () {
		$(".start_video").hide();
		$(".video_info").hide();
		myVideo.play();
	});
	//点击跳过按钮
	$(".btn_video").click(function(){
		video_end();
	})
	//视频播放结束
	myVideo.addEventListener('ended', function () { 
        video_end();
    }, false);
	//视频播放结束的函数
	function video_end(){
		myVideo.pause();
		console.log("视频播放结束");
	}

总结

到此这篇关于h5视频自动横过来自适应页面且点击播放的文章就介绍到这了,更多相关H5视频自适应页面内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
CSS3实现简易版的刮刮乐效果
Sep 27 HTML / CSS
css3绘制百度的小度熊
Oct 29 HTML / CSS
css3实现一款模仿iphone样式的注册表单
Mar 20 HTML / CSS
纯css3实现的鼠标悬停动画按钮
Dec 23 HTML / CSS
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
Jul 08 HTML / CSS
纯CSS3单页切换导航菜单界面设计的简单实现
Aug 16 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
Apr 19 HTML / CSS
推荐10个HTML5响应式框架
Feb 25 HTML / CSS
HTML5 input新增type属性color颜色拾取器的实例代码
Aug 27 HTML / CSS
html5用video标签流式加载的实现
May 20 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
Nov 19 HTML / CSS
Canvas在超级玛丽游戏中的应用详解
Feb 06 HTML / CSS
使用Html5 Stream开发实时监控系统
Jun 02 #HTML / CSS
Html5 canvas画图白板踩坑
Jun 01 #HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
May 28 #HTML / CSS
HTML5实现直播间评论滚动效果的代码
May 27 #HTML / CSS
html5拖拽应用记录及注意点
May 27 #HTML / CSS
recorder.js 基于Html5录音功能的实现
May 26 #HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
May 26 #HTML / CSS
You might like
融入意大利的咖啡文化
2021/03/03 咖啡文化
两种php调用Java对象的方法
2006/10/09 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
PHP代码审核的详细介绍
2013/06/13 PHP
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js日期联动示例
2014/05/02 Javascript
Javascript中replace()小结
2015/09/30 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
angularJS之$http:与服务器交互示例
2017/03/17 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
python中Switch/Case实现的示例代码
2017/11/09 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
python按照多个条件排序的方法
2019/02/08 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
普通党员个人对照检查材料
2014/09/18 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers