资讯专栏INFORMATION COLUMN

郑方方打怪升级日记 — 初识HTML5与CSS3

spademan / 363人阅读

摘要:任务名称响应式砸蛋页面任务背景前辈方方啊最近项目也没什么事情你看这个砸蛋页面不是很好看要不你做一个响应式砸蛋页面吧系统郑方方接下前辈的任务郑方方自动解析任务步骤任务响应式砸蛋页面与入门阅读秘籍响应式布局制作层搭配搭配控制器完成任务人物背

任务名称:响应式砸蛋页面 任务背景

前辈:方方啊,最近项目也没什么事情,你看这个砸蛋页面不是很好看,要不你做一个响应式砸蛋页面吧?

系统:郑方方接下前辈的任务 - 郑方方自动解析任务步骤

任务:响应式砸蛋页面

HTML5与CSS3入门 - 阅读《HTML5秘籍》(0/1)

响应式布局(0/1)

制作Canvas层(0/1)

搭配Javascript(0/1)

搭配PHP控制器 (0/1)

完成任务(0/1)

人物背景介绍:郑方方

主职:小白PHP码畜;副职:Acer

技能:吃饭、睡觉

特征:单身狗

学习正文和代码

响应式布局 Begin

因为我不是前端,所以使用Bootstrap的visible-xshidden-xs,对于一些特殊的要求就是用 @media 来进行调节.
我使用的是不知道从哪里介绍的几种尺寸范围,如下:

@media (min-width: 970.1px) and (max-width: 1170px)

@media (min-width: 700.1px) and (max-width: 970px)

@media (min-width: 600px) and (max-width: 700px)

@media (min-width: 400px) and (max-width: 599.99px)

@media (max-width: 399.99px)

对于页面布局,我借助了 http://www.ibootstrap.cn/ 这个网站,之后再把代码下载下来自己进行修改.

Tip:垂直居中(主要是用于蛋一直在页面中间)

    position: absolute;
    margin: auto;
    top: 0; left: 0; bottom: 0; right: 0;

响应式布局(1/1)Over

制作Canvas层 Begin

制作Canvas层时我把动画分为三个

EggCanvas - 蛋(无其他CSS3效果)

HammerCanvas - 锤子(animation、rotate):锤子砸下去后锤子会复位

BoomCanvas - 爆炸特效(animation、transform、opacity):Ajax查询后爆炸变大并消失

Tip:为了让这些效果能兼容更多浏览器,我要这几个效果就会像下面代码,比如我的锤子效果

.AniHammer {
animation: AniHammer 0.5s;
-moz-animation: AniHammer 0.5s; /* Firefox */
-webkit-animation: AniHammer 0.5s; /* Safari and Chrome */
-o-animation: AniHammer 0.5s; /* Opera */
}

@keyframes AniHammer {
    /*25% {*/
        /*transform: rotate(45deg);*/
    /*}*/
    50% {
        transform: rotate(-135deg);
    }
    100% {
        transform: rotate(0deg);
    }
}

@-moz-keyframes AniHammer /* Firefox */
    {
    /*25% {*/
        /*-moz-transform: rotate(45deg);*/
    /*}*/
    50% {
        -moz-transform: rotate(-135deg);
    }
    100% {
        -moz-transform: rotate(0deg);
    }
}

@-webkit-keyframes AniHammer /* Safari and Chrome */
    {
    /*25% {*/
        /*-webkit-transform: rotate(45deg);*/
    /*}*/
    50% {
        -webkit-transform: rotate(-135deg);
    }
    100% {
        -webkit-transform: rotate(0deg);
    }
}

@-o-keyframes AniHammer /* Opera */
{
    /*25% {*/
        /*-o-transform: rotate(45deg);*/
    /*}*/
    50% {
        -o-transform: rotate(-135deg);
    }
    100% {
        -o-transform: rotate(0deg);
    }
}

这一段样式就是在0.5秒内,把动画效果分两步,第一步旋转到-135度,第二步就是旋转回0度.其中的-o-,-webkit-,-moz-就是为了兼容.

搭配Javascript Begin

我不知道刚接触的人会怎么想Javascript 和 CSS3 的关系,我最开始的时候还以为JS能控制CSS3的动画行为呢,现在我感觉JS只能通过控制元素的Class的attr( )或者removeclass( ),来完成我们想要的CSS3的一系列动画行为. (可能我现在还理解不够深,有谁理解的,麻烦给我科普科普)

移动端和PC端分别对应两个事件:Touch事件和Click事件,Touch事件如下:

var EggTouch = function (){console.log("Hi")};
document.getElementById("LuckEgg").addEventListener("touchstart", EggTouch, false);

但是Canvas层产生的图片,了解过的人都知道需要用JS去生成图像

// 1.加载蛋的图片
var EggCanvas = document.getElementById("LuckEgg");
var EggContext = EggCanvas.getContext("2d");
var EggImg = new Image();

EggImg.src = "./egg.png";

// 特别注意 - 要图片加载完才会出现图片
EggImg.onload = function () {

    // 还要在这里判断屏幕大小 --- 用于确定生成的蛋的位置和大小
    EggContext.drawImage(EggImg, 30, 20, 240, 120);
};

Tip:

每一次JS控制带有自动执行的动画效果的元素,使其display:block,就会自动执行动画效果;

使用setTimeout( )来完成某些效果,比如我的Boom效果爆炸持续时间是0.5秒,那么我就要在Boom后0.5秒再去执行其他函数.,这样就能得到我们想要的效果.

制作Canvas层(1/1)Over
搭配Javascript(1/1)Over

搭配PHP控制器 Begin

如果你们跟我一样同时使用了Touch和Click这两个事件,那么可能会出现在浏览器测试的时候,鼠标点击模拟手机状态下的touch行为,就会有两次POST传到后台,这就可能出现客户投诉说:我砸蛋砸了一次,怎么次数就没了.之类的话语.所以在后台我会用redis做一个很简单的锁,防止上面的情况的发生.

/** 防止touch 和 click 同时触发 */
        self::$lock .= $user["uid"];
        self::$luckValue = CommonCommonMyRedis::getInstance()->get(self::$lock);
        if (self::$luckValue && time() - self::$luckValue <= 1) {
            exit;
        } else {
            CommonCommonMyRedis::getInstance()->set(self::$lock, time(), 2);
        }

搭配PHP控制器 (1/1)

完成任务(1/1)

到此,任务也就做完了,其中一些比如什么字体大小,怎么查数据库,怎么控制JS的一些业务细节我就不多说了.
毕竟我也只是第一次写博客,文中有什么错误,或者思路有问题,还希望各位看客能指点指点.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86221.html

相关文章

  • 方方打怪升级日记初识HTML5CSS3

    摘要:任务名称响应式砸蛋页面任务背景前辈方方啊最近项目也没什么事情你看这个砸蛋页面不是很好看要不你做一个响应式砸蛋页面吧系统郑方方接下前辈的任务郑方方自动解析任务步骤任务响应式砸蛋页面与入门阅读秘籍响应式布局制作层搭配搭配控制器完成任务人物背 任务名称:响应式砸蛋页面 任务背景 前辈:方方啊,最近项目也没什么事情,你看这个砸蛋页面不是很好看,要不你做一个响应式砸蛋页面吧? 系统:郑方方接下前...

    justCoding 评论0 收藏0
  • 方方打怪升级日记初识HTML5CSS3

    摘要:任务名称响应式砸蛋页面任务背景前辈方方啊最近项目也没什么事情你看这个砸蛋页面不是很好看要不你做一个响应式砸蛋页面吧系统郑方方接下前辈的任务郑方方自动解析任务步骤任务响应式砸蛋页面与入门阅读秘籍响应式布局制作层搭配搭配控制器完成任务人物背 任务名称:响应式砸蛋页面 任务背景 前辈:方方啊,最近项目也没什么事情,你看这个砸蛋页面不是很好看,要不你做一个响应式砸蛋页面吧? 系统:郑方方接下前...

    jemygraw 评论0 收藏0
  • 【连载】前端个人文章整理-从基础到入门

    摘要:个人前端文章整理从最开始萌生写文章的想法,到着手开始写,再到现在已经一年的时间了,由于工作比较忙,更新缓慢,后面还是会继更新,现将已经写好的文章整理一个目录,方便更多的小伙伴去学习。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 个人前端文章整理 从最开始萌生写文章的想法,到着手...

    madthumb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<