目录

上一篇博客动画练习

触屏事件

什么是触屏事件:

分类以及触发的时机

跟踪触屏的特性

Touch对象属性

分类以及触发时机


上一篇博客动画练习

HTML

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <link rel="stylesheet" type="text/css" href="css/style2.css"/>
    <body>
        <div class="contain">
            <div class="box">
                <div class="clock"></div>
                <p>clock</p>
            </div>
            <div class="box">
                <div class="hourglass"></div>
                <p>hourglass</p>
            </div>
            <div class="box">
                <div class="loader1"></div>
                <p>loader1</p>
            </div>
            <div class="box">
                <div class="loader2"></div>
                <p>loader2</p>
            </div>
            <div class="box">
                <div class="loader3"></div>
                <p>loader3</p>
            </div>
            <div class="box">
                <div class="loader4"></div>
                <p>loader4</p>
            </div>        
        </div>
    </body>
</html>

CSS


.contain{
    text-align: center;
    background-color: #e74c3c;
    overflow: hidden;
}

.box:nth-child(2n-1){
    background-color: rgba(0,0,0,0.05);
}

.box{
    display: inline-block;
    height: 200px;
    width: 33.3%;
    float: left;
    position: relative;
    transition: all .2s ease;
}

.box p{
    color: #777;
    font-weight: 300;
    position: absolute;
    font-size: 20px;
    width: 100%;
    height: 25px;
    text-align: center;
    bottom: 0px;
    margin: 0;
    top: 160px;
    background-color: #fff;
    opacity: 0;
    text-transform: uppercase;
    transition: all .2s ease;
}

.box:hover p{
    bottom: 0px;
    top: 175px;
    opacity: 1;
    transition: all .2s ease;
    z-index: 2;
}

/* media queries 媒体查询:当屏幕小于某一个值时会改变排数*/
@media (max-width: 700px){
    .box{
        width: 50%;
    }
    .box:nth-child(2n-1){
        background-color: inherit;
    }
    .box:nth-child(4n),.box:nth-child(4n-3){
        background-color: rgba(0,0,0,0.05);
    }
}

@media (max-width:420px){
    .box{
        width: 100%;
    }
    .box:nth-child(2n-1){
        background-color: rgba(0,0,0,0.05);
    }
    .box:nth-child(4n),.box:nth-child(4n-3){
        background-color: inherit;
    }
}

/*clock*/
.clock{
    border-radius: 60px;
    border: 3px solid #fff;
    height: 80px;
    width: 80px;
    position: relative;

    /*top: 20%;*/
    top: -webkit-calc(50% - 43px);
    top: calc(50% - 43px);
    /*left: 35%;*/
    left: -webkit-calc(50% - 43px);
    left: calc(50% - 43px);
}
.clock:after{
    content: "";
    position: absolute;
    background-color: #fff;
    top: 2px;
    left: 48%;
    height: 38px;
    width: 4px;
    border-radius: 5px;
    /*-webkit-transform-origin: 50% 97%;*/
    transform-origin: 50% 97%;
    animation: grdAiguille 2s linear infinite;
}
@keyframes grdAiguille{
    0%{transform: rotate(0deg);}
    100%{transform: rotate(360deg);}
}
.clock:before{
    content: "";
    position: absolute;
    background-color: #fff;
    top: 6px;
    left: 48%;
    height: 35px;
    width: 4px;
    border-radius: 5px;
    /*-webkit-transform-origin: 50% 97%;*/
    transform-origin: 50% 94%;
    animation: ptAiguille 12s linear infinite;
}
@keyframes ptAiguille{
    0%{transform: rotate(0deg);}
    100%{transform: rotate(360deg);}
}

/*    hourglass       */
.hourglass{
    border-radius: 80px;
    border: 3px solid #fff;
    height: 80px;
    width: 80px;
    position: relative;

    top: calc(50% - 43px);
    left: calc(50% - 43px);
    transform-origin: 50% 50%;
    animation: hourglass 2s linear infinite;
}
.hourglass:before{
    content: "";
    position: absolute;
    background-color: #fff;
    top: 6px;
    left: 18px;
    height: 0px;
    width: 0px;
    border-style: solid;
    border-width:35px 22px 0 22px;
    border-color: #fff #e74c3c; 
}
.hourglass:after{
    content: "";
    position: absolute;
    background-color: #fff;
    top: 40px;
    left: 18px;
    height: 0px;
    width: 0px;
    border-style: solid;
    border-width:0 22px 35px 22px;
    border-color: #fff #e74c3c; 
}
@keyframes hourglass{
    0%{transform: rotate(0deg);}
    100%{transform: rotate(360deg);}
}

/*loader1*/
.loader1{
    position: relative;
    width: 150px;
    height: 20px;
    top: calc(50%-10px);
    left: calc(50%-75px);
    margin: 90px auto;

    background-color: rgba(255,255,255,0.2);
}
.loader1:before{
    content: "";
    position: absolute;
    background-color: #fff;
    top: 0px;
    left: 0px;
    height: 20px;
    width: 0px;
    z-index: 0;
    opacity: 1;
    transform: 100% 0%;
    animation: loader1 6s ease-in-out infinite;
}
.loader1:after{
    content: "LOADING......";
    color: #fff;
    font-weight: 200;
    font-size: 16px;
    position: absolute;
    width: 100%;
    height: 20px;
    line-height: 20px;
    left: 0;
    top: 0;
}
@keyframes loader1{
    0%{width: 0px;}
    85%{width: 100%;opacity: 1;}
    90%{opacity: 1;width: 100%;}
    100%{opacity: 0;width: 0px;}
}

/*loader2*/
.loader2{
    position: relative;
    width: 40px;
    height: 40px;
    top: calc(50%-20px);
    left: calc(50%-20px);
    margin: 90px auto;

    background-color: rgba(255,255,255,0.2);
}
.loader2:before{
    content: "";
    position: absolute;
    background-color: #fff;
    height: 10px;
    width: 10px;
    border-radius: 10px;
    animation: loader2 2s ease-in-out infinite;
}
.loader2:after{
    content: "";
    position: absolute;
    background-color: #fff;
    top: 0px;
    left: 0px;
    width: 0px;
    height: 40px;
    z-index: 0;
    opacity: 1;
    animation: loader22 5s ease-in-out infinite;
}
@keyframes loader2{
    0%{left: -12px;top: -12px;}
    25%{left: 42px;top: -12px;}
    50%{left: 42px;top: 42px;}
    75%{left: -12px;top: 42px;}
    100%{left: -12px;top: -12px;}
}
@keyframes loader22{
    0%{width: 0px;}
    80%{width: 100%;opacity: 1;}
    90%{opacity: 1;width: 100%;}
    100%{opacity: 0;width: 0px;}
}

运行结果:

触屏事件

什么是触屏事件:

  • 手指在屏幕上滑动带来的一些效果
  • 方便我们的操作
  • 指尖上的行动

分类以及触发的时机

  • touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。
  • touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。
  • touchend事件:当手指从屏幕上离开的时候触发。
  • touchcancel事件:当系统停止跟踪触摸的时候触发

跟踪触屏的特性

  • touches :表示当前跟踪的触摸操作的touch对象的数组。
  • targetTouches:特定于事件目标的Touch对象的数组。
  • changeTouches:表示自,上次触摸以来发生了什么改变的Touch对象的数组。

Touch对象属性

  • clientX:触摸目标在视口中的x坐标。
  • clientY:触摸目标在视口中的y坐标。
  • identifier:标识触摸的唯一-ID。
  • pageX:触摸目标在页面中的x坐标。
  • pageY:触摸目标在页面中的y坐标。
  • screenX:触摸目标在屏幕中的x坐标。
  • screenY:触摸目标在屏幕中的y坐标。
  • target:触摸的DOM节点目标。

分类以及触发时机

  • touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。
  • touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。
  • touchend事件:当手指从屏幕上离开的时候触发。
  • touchcancel事件:当系统停止跟踪触摸的时候触发。

例子:将页面切换成手机模式,点击在控制台打印事件

<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <link rel="stylesheet" type="text/css" href="css/style.css"/>
    </head>    
    <body>
        <div id="box"></div>

        <script type="text/javascript">
            var box = document.getElementById("box")

            box.addEventListener("touchstart",function(e){
                console.log(e)
            })

            document.addEventListener("touchend",function(){
                console.log("点击产生屏幕")
            })
        </script>
    </body>
</html>

CSS:

*{
    padding: 0;
    margin: 0;
}

#box{
    width: 200px;
    height: 200px;
    background-color: red;
}

运行结果:

一起学习,一起进步 -.- ,如有错误,可以发评论