zoukankan      html  css  js  c++  java
  • Raphael.js绘制气泡墙

    这是我为一家公司做的移动端气泡墙,跟大家分享下代码。

    <html>
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="inital-scale=1.0" />
    <title>JS实现气泡从水中急速上升效果</title>
    <script type="text/javascript" src="js/pagesize.640.js" ></script>
    <script type="text/javascript" src="js/jquery.js" ></script>
    <script type="text/javascript" src="js/raphael.js" ></script>
    <style type="text/css">
    body
    {
    	640px;
    	height:1010px;
    }
    #content
    {
    	background:url("images/bg.jpg");
    	640px;
    	height:100%;
    }
    body
    {
        margin:0px;
        padding:0px;
    }
    #footer
    {
    	640px;
    	bottom:0;left:0; 
    	background:rgb(12,3,4);
    	height:10%;
    	text-align: center;
    }
    
    </style>
    
    <script type="text/javascript">
    
    var jsonData = 
    {"message":
    	[
    		{"content":"我很不爽ssssssssssssssssssss"},
    		{"content":"我很不爽sssssssssssssssssssssssssssssss1"},
    		{"content":"我很不爽ssssssssssssssssssss2"},
    		{"content":"我很不sssssssssssss爽3"},
    		{"content":"我很不sssssssssssssss爽4"},
    		{"content":"xxsssssssssssssssssssssssx5"},
    		{"content":"xxx6"},
    		{"content":"OOXXXXOO无所谓"},
    		{"content":"xxssssssssssssx"},
    		{"content":"xxx1ssssssssssssss"},
    		{"content":"xxx2"},
    		{"content":"xxsssssssssssssssssx3"},
    		{"content":"xxsssssssssssssx4"},
    		{"content":"xxsssssssssssssx5"},
    		{"content":"xxx6"},
    		{"content":"xxx"},
    		{"content":"xxx1"},
    		{"content":"xxx2"},
    		{"content":"xxx3"},
    		{"content":"xxx4"},
    		{"content":"xxx5"},
    		{"content":"xxx6"},
    		{"content":"xxx"},
    		{"content":"xxx1"},
    		{"content":"xxx2"},
    		{"content":"xxx3"},
    		{"content":"xxx4"},
    		{"content":"xxx5"},
    		{"content":"xxx6"},
    	]	
    }
    var start_y = 1010;
    var start_x = 10;
    var start_height = 550;
    var paper;
    var last;
    var left_set_array = new Array(2,100,250,330);
    var paper1 = false;
    //初始化画布
    $(function()
    {
    	paper = Raphael(0,0,640,1010,"content");
    	drawImage();
    	var href = paper.image("images/tantan.png",170,900,300,110);
    	href.click(function()
    	{
    	
    	})
    })
    //返回随机数与数组结合定义x轴坐标
    function getOfferSet()
    {
    	return parseInt(4*Math.random());	
    }
    //动画回调事件
    var reload = function()
    {
    	if(this.id == last)
    	{
    		drawImage();
    	}
    	this.remove();
    }
    var last_time = 10000;
    //绘制气泡和文字添加动画事件
    function drawImage()
    {
    	start_height = 550;
    	var time = 0;
    	for(var i = 0;i<jsonData.message.length;i++)
    	{
    		var info = jsonData.message[i].content;
    		var text_info = getImageWidth(jsonData.message[i].content);//文本内容
    		var width = 300;
    		var x = left_set_array[getOfferSet()];
    		var stop_x = left_set_array[getOfferSet()];
    		var image = paper.image("images/pao.png",x,start_height,width,width);
    		var text = paper.text(x+image.attr("width")/2,start_height+image.attr("width")/2+5,text_info);
    		text.attr({"font-familly":"Microsoft YaHei","stroke":"rgb(252,255,219)","stroke-width":"2","font-size":"30px"});
    		image.text = jsonData.message[i].content;
    		//点击查看详情信息
    		image.click(function()
    		{
    			showInfo(this.text);
    		})
    		//图片和文字动画效果
    		image.animate({x:stop_x,y:0},last_time+2000*i,{opacity:0.5},reload);
    		text.animate({x:stop_x+image.attr("width")/2,y:0+image.attr("width")/2-5},last_time+2000*i,{opacity:0.5},reload);
    		if(i==parseInt(jsonData.message.length-2))
    		{
    			last = image.id;
    		}
    		start_height = start_height + width*2;
    	}
    		
    }
    //根据文字长度定义气泡大小
    function getImageWidth(content)
    {
    	var length = content.length;
    	var content_array = content.split("");
    	
    	var content_info = "";
    	for(var i = 0;i<7;i++)
    	{
    		if(content_array[i]!=null)
    		{
    			content_info += content_array[i];
    		}
    	}
    	//超出7个字加省略号
    	if(length>7)
    	{
    		return content_info+"...";
    	}
    	else
    	{
    		return content_info;
    	}
    }
    var rect_id = "off";
    var t_id = false;
    //显示上内容条具体信息
    function showInfo(text)
    {
    	if("off"!=rect_id)
    	{
    		var re = paper.getById(rect_id);
    		re.remove();
    		var tt = paper.getById(t_id);
    		tt.remove();
    		var rect = paper.rect(0,0,640,100).attr({"fill":"block","opacity":0.4});
    		var text = paper.text(320,50,text).attr({"stroke":"white","font-size":"32px","font-familly":"Microsoft YaHei"});
    		rect_id = rect.id;
    		t_id = text.id;
    		rect.animate({x:0,y:0},2000,{"opacity":0.1},callback);
    		text.animate({x:320,y:50},2000,{"opacity":0.1},callback);
    	}
    	else
    	{
    		var rect = paper.rect(0,0,640,100).attr({"fill":"block","opacity":0.4});
    		var text = paper.text(320,50,text).attr({"stroke":"white","font-size":"32px","font-familly":"Microsoft YaHei"});
    		rect_id = rect.id;
    		t_id = text.id;
    		rect.animate({x:0,y:0},2000,{"opacity":0.1},callback);
    		text.animate({x:320,y:50},2000,{"opacity":0.1},callback);
    	}
    	
    }
    //上方内容动画回调函数
    function callback()
    {
    	rect_id = "off";
    	t_id = false;
    	this.remove();	
    }
    
    
    
    
    </script>
    </head>
    <body>
    
    <div id="content" ></div>
    
    
    
    </body>
    </html>

    代码免费下载地址:https://github.com/medivhQ/bubble

    本来想上传到CSDN上,可惜晚上资源站崩溃了。

    http://download.csdn.net/detail/wow4464/7937213(补上)

    效果图如下:


  • 相关阅读:
    tp5中的一些小方法
    jquery 中的一写常用方法
    tp5文件上传
    使用json格式输出
    第十六篇:泛型算法结构
    第十五篇:流迭代器 + 算法灵活控制IO流
    第十四篇:一个文本查询程序的实现
    第十三篇:multimap容器和multiset容器中的find操作
    poj 2516(拆点+最小权匹配)
    poj 3686(拆点+最小权匹配)
  • 原文地址:https://www.cnblogs.com/MedivhQ/p/4074919.html
Copyright © 2011-2022 走看看