html5视頻全自动横过来自融入网页页面且点一下播

2020-10-09 10:14 jianzhan

序言

本编码可用于1920*1080的视頻,假如是别的规格的视頻,必须变更js编码里的几个数据,再次测算视頻宽高

实际效果图

如图所示,

在长屏手机上里,横过来的视頻高宽比填满,宽度自融入后垂直居中;
在短屏手机上里,横过来的视頻宽度填满,高宽比自融入后垂直居中;


编码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(⑸0%);
	}
	/* 视頻 */
	.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 ){
			//华为手机上&&iPhonex
		}
	}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 ){
		//1个1920*1080的视頻,得手机上高750时,宽度是1333.333
		if( height < 1334 ){
			console.log("手机上辨别率高宽比 < 1333.33,视頻横过来后宽度铺满,高宽比自融入后铺不满显示屏,因此向左平移1些垂直居中");
			$("#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,视頻横过来后高宽比铺满,宽度自融入后铺不满显示屏,因此向下平移1些垂直居中");
			$("#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视頻自融入网页页面內容请检索脚本制作之家之前的文章内容或再次访问下面的有关文章内容,期待大伙儿之后多多适用脚本制作之家!