HTML5实现对话气泡点击动画


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章给大家介绍一下使用HTML5实现对话气泡点击动画的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

需求

还是要先把需求拿出来。 要求:

  1. 对话气泡要有动画,动画总共4秒
  2. 在没有点击的时候,气泡每隔8秒出现一次
  3. 在点击的时候,如果动画没有播放完毕就不执行,如果动画播放完毕,立即出现气泡

然后还是把完成图拿出来,就是做成下面这个样子:

bubble.gif

思路

  1. 首先要制作气泡
  2. 其次使用css制作动画
  3. 添加计时器完成点击动画和计时动画

实现

半透明气泡制作

1.png

html结构

1

<p class="select-toast" id="select-toast">闭上眼睛,用心祈祷,努力的人有回报</p>

less(rem规则自己换算,也可以使用px)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

.select-toast{

    position: absolute;   //确定对话的位置

    top: 3.4rem;

    right: 0.2rem;

    width: 1.45rem;   //确定宽度,高度由文字撑开

    padding: 0.18rem;  //确定文字距离对话框外部的距离

    line-height: 0.4rem;  //确定文字的行高

    color: #d06e5a;  //文字颜色

    background-color: rgba(255,255,255,0.85);  //背景色,半透明

    border-radius: 0.2rem;  //对话框圆角

    opacity: 0;  //初始情况透明度为0

    &::before{    //三角的制作

        content:"";   //伪元素必需

        width: 0;    //本身的宽高为0

        height: 0;

        border-width: 0.2rem;  //三角形的高

        border-color:transparent rgba(255,255,255,0.85) transparent transparent;   //角朝左的三角形

        border-style: solid;  //边框为实心的

        position: absolute;  //三角的位置

        left: -0.4rem;

        top: 0.4rem;

    }

}

对话框css动画

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

.select-toast.toastAni{

     -webkit-animation: toast 4s;   //对话框的动画

     animation: toast 4s;

}

 

//对话框的动画定义

@-webkit-keyframes toast { 

    8%{

        opacity: 0.8;

        -webkit-transform: scale(0.8);

        transform: scale(0.8);

    }

    16%{

        opacity: 1;

        -webkit-transform: scale(1.1);

        transform: scale(1.1);

    }

    24%{

        opacity: 1;

        -webkit-transform: scale(0.95);

        transform: scale(0.95);

    }

    32%{

        opacity: 1;

        -webkit-transform: scale(1);

        transform: scale(1);

    }

    82.5%{

        opacity: 1;

        -webkit-transform: scale(1);

        transform: scale(1);

    }

    100%{

        opacity: 0;

    }

}

 

@keyframes toast {

    8%{

        opacity: 0.8;

        -webkit-transform: scale(0.8);

        transform: scale(0.8);

    }

    16%{

        opacity: 1;

        -webkit-transform: scale(1.1);

        transform: scale(1.1);

    }

    24%{

        opacity: 1;

        -webkit-transform: scale(0.95);

        transform: scale(0.95);

    }

    32%{

        opacity: 1;

        -webkit-transform: scale(1);

        transform: scale(1);

    }

    82.5%{

        opacity: 1;

        -webkit-transform: scale(1);

        transform: scale(1);

    }

    100%{

        opacity: 0;

    }

}

添加计时器完成点击动画和计时动画

首先要确定一个点击的区域,这个区域一点击,就会触发气泡出现

1

2

<!--点击<?)))><|出气泡-->

<div class="fish-click" id="fish-click"></div>

封装功能函数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

//随机出现的话术数组

var toastText = [

   "哈哈,早安",

   "早上吃饭了吗?",

   "好好学习,天天向上",

   "闭上眼睛,用心祈祷,努力的人有回报",

   "记得早点睡觉",

]

 

//计时器变量

var fishAlert;

//弹出功能函数

function textShow(aniTime,spaceTime){

    //清空计时器

    clearInterval(fishAlert);

    //解绑事件

    $("#fish-click").off("tap");

    //设置显示的文本,随机生成0-4的整数

    var random = Math.floor(Math.random() * 5);

    //展示随机生成的文本

    $("#select-toast").html(toastText[random]).addClass("toastAni");

    //4000秒后去掉动画

    setTimeout(function(){

        //去掉动画样式

        $("#select-toast").removeClass("toastAni");

        //重新绑定事件

        $("#fish-click").off("tap").on("tap",function(){

            textShow(4000,8000);

        })

        //添加8秒计时器

        fishAlert = setInterval(function(){

            //随机生成0-4的整数

            var random = Math.floor(Math.random() * 5);

            //添加动画

            $("#select-toast").html(toastText[random]).addClass("toastAni");

            setTimeout(function(){

                //动画结束后移除动画

                $("#select-toast").removeClass("toastAni");

            },aniTime)

        },spaceTime);

    },aniTime);

}

函数调用

1

2

3

4

$(document).ready(function(){

    //动画时间4000ms,间隔时间8000ms

    textShow(4000,8000);

})

整体还是比较简单的,所以这里做一下记录。

更多炫酷特效,推荐访问:javascript特效大全!

以上就是HTML5实现对话气泡点击动画的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

HTML5和html4的区别有哪些

HTML5页面调起app功能的方法试验

HTML5实践-在非响应式设计中如何使用viewport meta标签的方法介绍

HTML5 main标签是什么意思?HTML5 main标签作用的详细介绍

详细介绍websocket api HTML5规范翻译

HTML5 canvas实现绘制一个像素宽的细线

HTML5怎么实现拖拽

h5移动端各种各样的列表的制作方法(二)

HTML5实现一个简单的在线画板

HTML5中创建和返回新的文本轨道的方法

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...