H5竖屏模板

2021-01-28  本文已影响0人  0清婉0

【html-头部】

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no">

<meta content="yes" name="app-mobile-web-app-capable">

<meta content="black" name="app-mobile-web-app-status-bar-style">

<meta content="telephone=no" name="format-detection">

<meta name="msapplication-tap-highlight" content="no">

<link rel="stylesheet" type="text/css" href="css/style.css" />

<link rel="stylesheet" type="text/css" href="css/swiper.min.css" />

<link rel="stylesheet" type="text/css" href="css/animate.min.css" />

<script src="http://tools.people.com.cn/libs/jquery/1.11.1/jquery-1.11.1.min.js" type="text/javascript" charset="utf-8"></script>

</head>

<body>

【html-内容区】

<!--禁止横屏-->

<div id="page-landscape" class="page-landscape">

    <img src="imgs/phone.png" alt=""/>

    <h3>为了更好的体验,请使用竖屏浏览</h3>

</div>

<!--竖屏-->

<div id="page-portrait" class="page-portrait">

    <!--预加载-->

    <div class="load-page" id="loadingPage">

        <div class="img-load-now">

            <!--加载动画-->

            <img src="imgs/loading.gif" alt="" class="loading-img">

            <p id="loadTxt">0%</p>

        </div>

    </div>

    <!--内容-->

    <div class="swiper-container page-box" id="pageContainer">

        <div class="swiper-wrapper">

            <!--首页-->

            <div class="swiper-slide pageOne">

                <h1>第一页</h1>

                <p class="ani" swiper-animate-effect="fadeIn" swiper-animate-duration="0.3s">

                    内容内容

                </p>

                <img src="imgs/arrow.png" alt="" class="arrow ani" swiper-animate-effect="up" swiper-animate-delay="1s">

            </div>

            <!--第二页-->

            <div class="swiper-slide pageTwo">

                <h1>第二页</h1>

                <h4 class="ani" swiper-animate-effect="fadeIn" swiper-animate-duration="0.3s" swiper-animate-delay="0.3s">标题内容</h4>

                <img src="imgs/arrow.png" class="arrow ani" swiper-animate-effect=" up"  swiper-animate-delay="1s" alt="" />

            </div>

            <!--第三页面-->

            <div class="swiper-slide pageThree" >

                <h1>第三页</h1>

                <h4 class="ani" swiper-animate-effect="fadeIn" swiper-animate-duration="0.3s" swiper-animate-delay="0.3s">标题内容</h4>

                <img src="imgs/arrow.png" class="arrow ani" swiper-animate-effect=" up"  swiper-animate-delay="1s"  alt="" />

            </div>

            <!--第四页面-->

            <div class="swiper-slide pageFour" >

                <h1>第四页</h1>

                <h4 class="ani" swiper-animate-effect="fadeIn" swiper-animate-duration="0.3s" swiper-animate-delay="0.3s">标题内容</h4>

                <img src="imgs/arrow.png" class="arrow ani" swiper-animate-effect=" up"  swiper-animate-delay="1s"  alt="" />

            </div>

        </div>

    </div>

</div>

【html-尾部】

</body>

<script src="js/swiper.min.js" type="text/javascript" charset="utf-8"></script>

<script src="js/swiper.animate.min.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript">

var swiper;

</script>

<script src="js/main.js" type="text/javascript" charset="utf-8"></script>

</html>

【css】

/*reset*/

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,

header,menu,nav,output,ruby,section,summary,time,mark,audio,video{

margin: 0;padding: 0;border: 0;font: inherit;}

body{font-family: Arial, "STHeiti", Helvetica Neue, Helvetica, sans-serif;

background: #fff;font-size: 14px;height: 100%;line-height: 1.5;

-webkit-tap-highlight-color: transparent;margin: 0;padding: 0;color:#000}

/*

STHeiti 苹果黑体

-webkit-tap-highlight-color: transparent;只用于iOS (iPhone和iPad)。

当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背景。

*/

button,input {line-height: normal;}

button,select {text-transform: none;}  /*定义带有小写字母和大写字母的标准的文本*/

button,html input[type="button"],input[type="reset"],input[type="submit"] {

-webkit-appearance: button;  /*将按钮设置成iOS中默认原生控件的样式*/

cursor: pointer;

}

button[disabled],html input[disabled] {cursor: default;}

input[type="checkbox"],input[type="radio"] {

box-sizing: border-box;  /*减去边框和内边距才能得到内容的宽度和高度*/

padding: 0;}

input[type="search"] {

-webkit-appearance: textfield;  /*将元素呈现为文本字段*/

-moz-box-sizing: content-box;  /*在宽度和高度之外绘制元素的内边距和边框,即padding和border不能算在内*/

-webkit-box-sizing: content-box;

box-sizing: content-box;

}

input[type="search"]::-webkit-search-cancel-button,

input[type="search"]::-webkit-search-decoration {-webkit-appearance: none;} /*去除浏览器默认样式*/

button::-moz-focus-inner,input::-moz-focus-inner {

border: 0;padding: 0;}

textarea {overflow: auto;vertical-align: top;}

table {border-collapse: collapse;  /*边框会合并为一个单一的边框*/

border-spacing: 0; /*相邻单元格的边框间的距离*/}

ul li {list-style: none;}

html,body {position: relative;height: 100%;}

/********横竖屏*******/

.page-landscape {width: 100vw;height: 100vh;background: #333;position: relative;

z-index: 999;display: none;}

.page-landscape img {width: 1.11666667rem;height: 1.81666667rem;position: absolute;

left: 4.58333333rem;top: 0.83333333rem;

-webkit-animation: rotateImg infinite 1.5s ease-in-out;

animation: rotateImg infinite 1.5s ease-in-out;}

.page-landscape h3 {font-size: 16px;position: absolute;color: #fff;left: 50%;

top: 3.5rem;transform: translate(-50%, -50%);/*实现水平垂直居中*/}

@keyframes rotateImg {

    0% {transform: rotate(0deg);}

    35% {transform: rotate(90deg);}

    65% {transform: rotate(90deg);}

    100% {transform: rotate(0deg);}

}

.page-portrait {

    width: 100vw;

    height: 100vh;

    position: absolute;

    left: 0;

    top: 0;

    overflow: hidden;

    -webkit-overflow: hidden;

    background-image: url(../img/bg.png);

    background-size: contain;

  }

  .load-page {

    width: 100%;

    height: 100%;

    position: absolute;

    left: 0;

    top: 0;

  }

  .load-page .img-load-now {

    width: 100%;

    text-align: center;

    position: absolute;

    left: 0;

    top: 50%;

    transform: translate(0, -50%);

  }

  .load-page .img-load-now .loading-img {

    width: 0.32rem;

    height: 0.32rem;

    margin-bottom: 0.53333333rem;

  }

  .load-page .img-load-now p {

    width: 100%;

    text-align: center;

  }

  /*************************正文************************/

  .page-box {

    width: 100vw;

    height: 100vh;

    position: relative;

    display: none;

  }

  .swiper-slide {

    text-align: center;

    font-size: 18px;

    background: #fff;

    /* Center slide text vertically */

    -webkit-box-pack: center;

    -ms-flex-pack: center;

    -webkit-justify-content: center;

    justify-content: center;

    -webkit-box-align: center;

    -ms-flex-align: center;

    -webkit-align-items: center;

    align-items: center;

  }

  .swiper-slide h1 {

    width: 100%;

    text-align: center;

    font-size: 0.64rem;

    margin: 0.26666667rem;

  }

  .pageOne {

    background: #50abe9;

  }

  .pageTwo {

    background: #888;

  }

  .pageThree {

    background: #990;

  }

  .pageFour {

    background: #808;

  }

  .arrow {

    width: 0.84rem;

    height: 0.64rem;

    position: absolute;

    bottom: 0.8rem;

    left: 4.58rem;

  }

  .up {

    animation: up 1.5s  linear infinite;

    -webkit-animation: up 1.5s  linear infinite;

  }

  @keyframes up {

    0% {

      opacity: 0;

      transform: translateY(0);

      -webkit-transform: translateY(0);

    }

    10% {

      opacity: 1;

      transform: translateY(0);

      -webkit-transform: translateY(0);

    }

    100% {

      opacity: 1;

      transform: translateY(6px);

      -webkit-transform: translateY(6px);

    }

  }

  @-webkit-keyframes up {

    0% {

      opacity: 0;

      transform: translateY(0);

      -webkit-transform: translateY(0);

    }

    10% {

      opacity: 1;

      transform: translateY(0);

      -webkit-transform: translateY(0);

    }

    100% {

      opacity: 1;

      transform: translateY(6px);

      -webkit-transform: translateY(6px);

    }

  }

【js】

/******rem *******/

(function(win){

    var remCalc = {};

    var docEl = win.document.documentElement,

        tid,

        hasRem = true;

    hasZoom = true;

    designWidth = 750;

    function refresh(){

        var width = docEl.getBoundingClientRect().width;  //获取移动设备的宽度

        if(hasRem){

            var rem = width/10;  //将屏幕宽度分成10份

            docEl.style.fontSize = rem + "px";  //设置html的字号为第二行的值

            remCalc.rem = rem;

            var actualSize = parseFloat(window.getComputedStyle(document.documentElement)["font-size"]);

            if(actualSize!== rem && actualSize>0 && Math.abs(actualSize-rem)>1){

                var remScaled = rem*rem/actualSize;

                docEl.style.fontSize = remScaled + "px";

            }

        }

        if(hasZoom){

            var style = document.getElementById('y_style');

            if(!style){

                style = document.createElement('style');

                style.id = 'y_style';

            }

            style.innerHTML = '._z{zoom:'+ width/designWidth + '}';

            document.getElementsByTagName('head')[0].appendChild(style);

        }

    }

    function dbcRefresh(){

        clearTimeout(tid);

        tid = setTimeout(refresh,100);

    }

    win.addEventListener("resize",function(){

        dbcRefresh()

    },false);

    win.addEventListener("pageshow",function(e){

        if(e.persisted){

            dbcRefresh()

        }

    },false);

    refresh();

    if(hasRem){

        remCalc.refresh = refresh;

        remCalc.rem2px = function(d){

            var val = parseFloat(d)/this.rem;

            if(typeof d==="string" && d.match(/px$/)){

                val+="rem";

            }

            return val

        };

        win.remCalc = remCalc;

    }

})(window);

function ImgLoadingByFile(imgArray,loadPageID,loadTxtID,showpageID){

    function complete(long){

        var timer = setTimeout(function(){

            $('#'+loadPageID).hide();

            $('#'+showpageID).show();

            swiper = new Swiper('.swiper-container', {

                pagination: '.swiper-pagination',

                paginationClickable: true,

                direction: 'vertical',

                onInit: function(swiper){ //Swiper2.x的初始化是onFirstInit

                    swiperAnimateCache(swiper); //隐藏动画元素

                    swiperAnimate(swiper); //初始化完成开始动画

                },

                onSlideChangeEnd: function(swiper){

                    //console.log(333);

                    swiperAnimate(swiper); //每个slide切换结束时也运行当前slide动画

                }

            });

            $('.arrow').click(function(){

                swiper.slideNext();

            });

            clearTimeout(timer);

        },long);

    }

    if(sessionStorage.getItem("pageloaded")){

        $('#'+loadTxtID).html('100%');

        complete(1300);

    }else{

        var imgLoad = 0;

        var btime = new Date();

        if(imgArray.length>0){

            var imgTotal = imgArray.length;

            var percent = 0;

            var img = [];

            for(var i = 0;i<imgArray.length;i++){

                img[i] = new Image();

                img[i].src=imgArray[i];

                img[i].onload = function(){

                    imgLoad++;

                    percent = parseInt(imgLoad/imgTotal*100);

                    $('#'+loadTxtID).html(percent+'%');

                    console.log(percent);

                    if(percent>=100){

                        var etime = new Date();

                        console.log(etime-btime);

                        if(etime-1000>btime){

                            complete(100);

                        }else{

                            complete(200);

                        }

                        //alert(etime-btime);

                        sessionStorage.setItem("pageloaded", "true");

                    }

                }

            }

        }

    }

}

//横屏

function landscape(){

    //var w = window.innerWidth;

    //var h = window.innerHeight;

    var w = window.Utils.windowW();

    var h = window.Utils.windowH();

    $("body").css({"width":w,"height":h});

    $('#page-landscape').css({"width":w,"height":h}).show();

    $('#page-portrait').css({"width":w,"height":h});

    //$('#page-landscape').show();

}

var firstInit = true;

//竖屏

function portrait(){

    var w = window.Utils.windowW();

    var h = window.Utils.windowH();

    //初始化加载

    if(firstInit){

        $("body").css({"width":w,"height":h});

        $('#page-portrait').css({"width":w,'height':h}).show();

        $('#page-portrait').show();

        $('#page-landscape').hide();

        var imgFile = [

            "imgs/music-close.png",

            "imgs/music-open.png"

        ];

        ImgLoadingByFile(imgFile,'loadingPage','loadTxt','pageContainer');

        firstInit = false;

    }else {

        //$('#page-portrait').show();

        //$('#page-landscape').hide();

        $("body").css({"width":w,"height":h});

        $('#page-portrait').css({"width":w,'height':h}).show();

        $('#page-landscape').hide();

    }

}

(function() {

    "use strict";

    function Utils() {

    }

    Utils.isWeiXin = function(){

        return navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/);

        //判断是否在微信浏览器内

    };

    Utils.isQQ = function(){

        return navigator.userAgent.ua.match(/QQ\/([\d\.]+)/);

    };

    Utils.isQZone = function(){

        return navigator.userAgent.ua.indexOf("Qzone/") !== -1;

    };

    Utils.isIos = function() {

        return !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);

    };

    Utils.isIPhone = function() {

        return navigator.userAgent.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1;

    };

    Utils.isIpad = function() {

        return navigator.userAgent.indexOf('iPad') > -1;

    };

    Utils.isAndroid = function() {

        var u = navigator.userAgent;

        return navigator.userAgent.indexOf('Android') > -1 || u.indexOf('Linux') > -1;

    };

    Utils.isMobile = function() {

        // var u = navigator.userAgent;

        return navigator.userAgent.match(/(iPhone|iPod|Android|ios|SymbianOS)/i) != null;

    };

    // ## 屏幕方向

    Utils.isPortrait = function() {

        if (!Utils.isMobile()) {

            //alert(111);

            return true;

        }

        // 安卓版 微信里面 只用判断 width 和 height

        if (Utils.isAndroid() && Utils.isWeiXin()) {

            if (Utils.windowW() < Utils.windowH()) {

                //alert(22);

                return true;

            } else {

                //alert(331);

                return false;

            }

        }

        var orientation = window['orientation'];

        if (orientation||orientation==0) {

            if (orientation == 90 || orientation == -90) {

                return false;

            }else{

                return true;

            }

        } else {

            if (Utils.windowW() < Utils.windowH()) {

                return true;

            } else {

                return false;

            }

        }

    };

    // ## jquery 获取 window 的宽度

    Utils.windowW = function() {

        // var width = (window.innerWidth > 0) ? window.innerWidth : screen.width;

        return $(window).width();

    };

    // ## jquery 获取 window 的高度

    Utils.windowH = function() {

        return $(window).height();

    };

    window.Utils = Utils;

}());

$(function(){

    onResize();

    if (!!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {

        window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", onResize, false);

    }else{

        window.addEventListener( "resize", onResize, false);

    }

});

function  onResize() {

    if(Utils.isPortrait()){

        if(!!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)){

            var timer = setTimeout(function(){

                portrait();

                clearTimeout(timer);

            },100);

        }else{

            portrait();

        }

    } else {

        if(!!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)){

            var timer = setTimeout(function(){

                landscape();

                clearTimeout(timer);

            },100);

        }else{

            landscape();

        }

    }

}

上一篇下一篇

猜你喜欢

热点阅读