1 Star 1 Fork 0

BingoHello/mobile_banner

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
video.html 6.74 KB
一键复制 编辑 原始数据 按行查看 历史
BingoHello 提交于 2018-01-26 12:58 . 代码优化
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Title</title>
<style>
html{overflow:hidden;}
#container a{overflow:hidden; display:block;position:absolute;color: #f8fffd;width:100%;font-size:0px;top:0px;}
#container a img{width:100%; overflow: hidden;}
#container a video{display: none;}
#container a video.active{display: block;}
.video:before{display: block; content: ''; width: 50px; height: 50px; background: url("img/play.png") no-repeat; background-size: 100%; position: absolute; left: 45%; top: 45%; z-index: 9}
#container a p{position:absolute; transform:translateY(30px); transition:all .8s; left: 20%; text-align:center;font-size:16px; width: 60%; z-index: 10}
#container a p.active{transition:all .8s; transform:translateY(200px);}
#container a h1{position:absolute;bottom:80px;left: 20%; text-align:center;font-size:28px; width: 60%; transform: scale(0, 0); transition:all 1.2s; z-index: 10}
#container a h1.active{transition:all 1.2s; transform: scale(1, 1);}
#container .ant{transition:all 0.2s ease-in-out;}
</style>
</head>
<body>
<div id="container">
<a href="javascript:" data-index="0" style="z-index:0; clear: both">
<p>发布会</p>
<h1>3D随心定制</h1>
<img src="img/1.png" />
<!--<video src="img/video.mp4" controls="controls"></video>-->
</a>
<a href="javascript:" data-index="1" style="z-index:1">
<p>发布会</p>
<h1>3D随心定制</h1>
<img src="img/2.png" />
<div class="video">
<!--<video src="//wq.360buyimg.com/data/ppms/movie/justice_league_trailer_2_h480p_2.mp4" preload x5-playsinline playsinline webkit-playsinline="true" controls="controls"></video>-->
<video src="//wq.360buyimg.com/data/ppms/movie/justice_league_trailer_2_h480p_2.mp4" controls="controls"></video>
</div>
</a>
<a href="javascript:" data-index="2" style="z-index:2">
<p>发布会</p>
<h1>3D随心定制</h1>
<img src="img/3.png" />
</a>
<a href="javascript:" data-index="3" style="z-index:3">
<p>发布会</p>
<h1>3D随心定制</h1>
<img src="img/4.png" />
</a>
<a href="javascript:" data-index="4" style="z-index:4">
<p>发布会</p>
<h1>3D随心定制</h1>
<img src="img/5.png" />
</a>
<a href="javascript:" data-index="5" style="z-index:5">
<img src="img/6.png" />
</a>
</div>
<script src="jquery-2.1.1.min.js"></script>
<script>
var height = (801 * $(window).width()) / 751;
var currentIndex = 0;
var dir = "up";
var dirs = "up";
var step = 1;
var move_Height = 0;
function move_event(_y, moveHeight, _end) {
$("#container a").each(function (i) {
if (currentIndex == i) {
$(this).css("transform", "translateY("+(_end ? 0 : _y)+"px)");
$(this).find("h1, p").addClass("active");
} else if (currentIndex + 1 == i) {
if (dirs == "up")
$(this).css("transform", "translateY("+(_end ? height : height + _y)+"px)");
else
$(this).css("transform", "translateY("+(_end ? height : height + moveHeight)+"px)");
$(this).find("h1, p").removeClass("active");
} else if (i < currentIndex) {
$(this).css("transform", "translateY("+(- height * (currentIndex - i) + _y)+"px)");
$(this).find("h1, p").removeClass("active");
} else if (i > currentIndex) {
if(currentIndex+2==i && Math.abs(_y) > height && dir=="up")
$(this).css("transform", "translateY("+(height + (height / 4) * (i - currentIndex - 1) + moveHeight*1.5)+"px)");
else
$(this).css("transform", "translateY("+(height + (height / 4) * (i - currentIndex - 1) + moveHeight)+"px)");
$(this).find("h1, p").removeClass("active");
}
});
}
move_event(0, 0);
var startY = 0;
function touchStart(event) {
event.preventDefault();
var touchEvent = event.touches[0];
startY = touchEvent.pageY;
step = Math.ceil((startY - height)/(height/4));
if(step >= 1){
step = getStep(step);
}else{
step = 0;
}
$("#container a").removeClass("ant");
}
function getStep(step) {
if(currentIndex + step <= $("#container a").length-1) return step;
return getStep(step-1);
}
document.addEventListener("touchstart", touchStart, true);
function touchMove(event) {
var touchEvent = event.touches[0];
var moveY = touchEvent.pageY - startY;
// console.log(moveY);
if(moveY >= 0){
move_Height = (Math.abs(moveY)>(height/4)?(height/4):moveY);
}else{
move_Height = (Math.abs(moveY)>(height/4)?(height/4)*(-1):moveY);
if(Math.abs(moveY) > height){
move_Height -= (Math.abs(moveY) - height);
}
}
move_event(moveY, move_Height);
if (moveY < -50)
dir = "up";
else
dir = "down";
if (moveY < 0)
dirs = "up";
else
dirs = "down";
}
document.addEventListener("touchmove", touchMove, true);
var endY = 0
function touchEnd(event) {
event.preventDefault();
var touchEvent = event.changedTouches[0];
var $aLen = $("#container a").length;
endY = touchEvent.pageY;
if(step==0 && startY-endY>5){
step = 1;
}else if(step==0 && Math.abs(startY-endY)<1){
var $video = $('a[data-index='+currentIndex+']').find('video');
if($video.length == 0){
console.log("当前是点击事件!");
}else{
// $video.addClass("active");
var $vObject = $video[0];
$vObject.play();
}
}
if ((dir == "up" || startY-endY >= 0) && currentIndex < $aLen-1){
if(startY-endY < 1) currentIndex += step;
else if(startY-endY <= height) currentIndex++;
else if(startY-endY > height) {currentIndex += 2; if(currentIndex >= $aLen-1) currentIndex = $aLen-1;};
}else if (dir == "down" && currentIndex>0){
if(endY-startY > 20){
currentIndex--;
}
}
$("#container a").addClass("ant");
move_event(0, 0, true)
}
document.addEventListener("touchend", touchEnd, true);
</script>
</body>
</html>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/bingohello/mobile_banner.git
git@gitee.com:bingohello/mobile_banner.git
bingohello
mobile_banner
mobile_banner
master

搜索帮助