HTML5 心形文字墙 鼠标悬停放大图片 变换背景颜色

   由jquery和HTML5技术共同实现的文字墙效果,并且背景是夜空中的流星雨O(∩_∩)O~,鼠标悬停文字上面可以进行旋转放大的效果,且文字会变色,带动画效果。在支持HTML5的Chrome或火狐浏览器中,运行效果极佳。

  注意:文字可以自己进行书写,中英文都可以

1 <!DOCTYPE html>  2 <html>  3     <head>  4         <meta charset="utf-8" />  5         <title>canvas流星雨星星动画</title>  6           7         <script>  8   9             var context; 10          11             var arr = new Array(); 12             var starCount = 900; 13          14             var rains = new Array(); 15             var rainCount =20; 16          17             //初始化画布及context 18             function init(){ 19                 //获取canvas 20                 var stars = document.getElementById("stars"); 21                 windowWidth = window.innerWidth; //当前的窗口的高度 22                 stars.width=windowWidth; 23                 stars.height=window.innerHeight; 24                 //获取context 25                 context = stars.getContext("2d"); 26             } 27          28             //创建一个星星对象 29             var Star = function (){ 30                 this.x = windowWidth * Math.random();//横坐标 31                 this.y = 5000 * Math.random();//纵坐标 32                 this.text=".";//文本 33                 this.color = "white";//颜色 34                35                 //产生随机颜色 36                 this.getColor=function(){ 37          38                     var _r = Math.random(); 39          40                     if(_r<0.5){ 41                         this.color = "#333"; 42                     }else{ 43                         this.color = "white"; 44                     } 45          46                 } 47          48                 //初始化 49                 this.init=function(){ 50                     this.getColor(); 51                 } 52                 //绘制 53                 this.draw=function(){ 54                     context.fillStyle=this.color; 55                     context.fillText(this.text,this.x,this.y); 56                 } 57                  58             } 59          60              //画月亮 61             function drawMoon(){ 62                  var moon = new Image(); 63                      moon.src = "images/moon.jpg" 64                      context.drawImage(moon,-5,-10); 65             } 66          67            68          69             //页面加载的时候 70             window.onload = function() { 71          72                 init(); 73                 //画星星 74                 for (var i=0;i<starCount;i++) { 75                     var star = new Star(); 76                     star.init(); 77                     star.draw(); 78                     arr.push(star); 79                 } 80          81                 //画流星 82                 for (var i=0;i<rainCount;i++) { 83                     var rain = new MeteorRain(); 84                     rain.init(); 85                     rain.draw(); 86                     rains.push(rain); 87                 } 88          89                 drawMoon();//绘制月亮 90                 playStars();//绘制闪动的星星 91                 playRains();//绘制流星 92          93             } 94          95              //星星闪起来 96             function playStars(){ 97                 for (var n = 0; n < starCount; n++){
 98                     arr[n].getColor();
 99                     arr[n].draw();
100                 }
101         102                 setTimeout("playStars()",100);103             }104         105         106         /*流星雨开始*/107         108           var MeteorRain = function(){109                     this.x = -1;110                     this.y = -1;111                     this.length = -1;//长度112                     this.angle = 30; //倾斜角度113                     this.width = -1;//宽度114                     this.height = -1;//高度115                     this.speed = 1;//速度116                     this.offset_x = -1;//横轴移动偏移量117                     this.offset_y = -1;//纵轴移动偏移量118                     this.alpha = 1; //透明度119                     this.color1 = "";//流星的色彩120                     this.color2 = "";  //流星的色彩121             /****************初始化函数********************/122             this.init = function () //初始化123             {124                 this.getPos();125                 this.alpha = 1;//透明度126                 this.getRandomColor();127                 //最小长度,最大长度128                 var x = Math.random() * 80 + 150;129                 this.length = Math.ceil(x);130         //                  x = Math.random()*10+30;131                 this.angle = 30; //流星倾斜角132                 x = Math.random()+0.5;133                 this.speed = Math.ceil(x); //流星的速度134                 var cos = Math.cos(this.angle*3.14/180);135                 var sin = Math.sin(this.angle*3.14/180) ;136                 this.width = this.length*cos ;  //流星所占宽度137                 this.height = this.length*sin ;//流星所占高度138                 this.offset_x = this.speed*cos ;139                 this.offset_y = this.speed*sin;140             }141         142             /**************获取随机颜色函数*****************/143             this.getRandomColor = function (){144                 var a = Math.ceil(255-240* Math.random());
145                 //中段颜色146                 this.color1 = "rgba("+a+","+a+","+a+",1)";147                 //结束颜色148                 this.color2 = "black";149             }150         151         152              /***************重新计算流星坐标的函数******************/153             this.countPos = function ()//154             {155                 //往左下移动,x减少,y增加156                 this.x = this.x - this.offset_x;157                 this.y = this.y + this.offset_y;158             }159         160             /*****************获取随机坐标的函数*****************/161             this.getPos = function () //162             {163                 //横坐标200--1200164                165                 this.x = Math.random() * window.innerWidth; //窗口高度166                 //纵坐标小于600167                 this.y = Math.random() * window.innerHeight;  //窗口宽度168             }169              /****绘制流星***************************/170             this.draw = function () //绘制一个流星的函数171             {172                 context.save();173                 context.beginPath();174                 context.lineWidth = 1; //宽度175                 context.globalAlpha = this.alpha; //设置透明度176                 //创建横向渐变颜色,起点坐标至终点坐标177                 var line = context.createLinearGradient(this.x, this.y,
178                     this.x + this.width,
179                     this.y - this.height);180         181                 182         183                 //分段设置颜色184                 line.addColorStop(0, "white");185                 line.addColorStop(0.3, this.color1);186                 line.addColorStop(0.6, this.color2);187                 context.strokeStyle = line;188                 //起点189                 context.moveTo(this.x, this.y);190                 //终点191                 context.lineTo(this.x + this.width, this.y - this.height);192                 context.closePath();193                 context.stroke();194                 context.restore();195             }196             this.move = function(){197                 //清空流星像素198                 var x = this.x+this.width-this.offset_x;199                 var y = this.y-this.height;200                 context.clearRect(x-3,y-3,this.offset_x+5,this.offset_y+5);
201         //                  context.strokeStyle="red";202         //                  context.strokeRect(x,y-1,this.offset_x+1,this.offset_y+1);203                 //重新计算位置,往左下移动204                 this.countPos();205                 //透明度增加206                 this.alpha -= 0.002;207                 //重绘208                 this.draw();
209             }210             211         }212         213         //绘制流星214         function playRains(){215             216             for (var n = 0; n < rainCount; n++){
217                 var rain = rains[n];218                 rain.move();//移动219                 if(rain.y>window.innerHeight){//超出界限后重来220                     context.clearRect(rain.x,rain.y-rain.height,rain.width,rain.height);221                     rains[n] = new MeteorRain();222                     rains[n].init();223                 }224             }
225             setTimeout("playRains()",2);226         }227         228         229           /*流星雨结束*/230         </script>231         232         <style type="text/css">233             body{234                 background-color: black;235             }236             body,html{237                 width:100%;238                 height:100%;239                 /*overflow:hidden;*/240             }241             242              #box {243                 width: 300px;244                 height: 300px;245                 padding: 10px;246                 /*border: 2px solid red;*/247                    /*left: 370px;*/248                 left: 30%;249                 top: 10%;250                 position: absolute;251             }252     253             a {254                 width: 70px;255                 height: 70px;256                 background: red;257                 display: block;258                 text-decoration: none;259                 text-align: center;260                 line-height: 70px;261                 color: #FFFFFF;262             }263             a span{264                 font-size:40px ;265                 font-weight: bolder;266             }267             a:hover {268                 background: #0099ff;269                 transform: rotate(360deg) scale(1.2);270                 transition: all 1s ease-in-out 0.1s; 271                 /*animation: speed 4s linear infinite ;*/272             }273  274 /*             @keyframes speed{275                 0%{276                     width: 20px;277                     transform: translate(100px,0);278                 }279                 25%{280                     width: 20px;281                     transform: translate(200px,0);282                 }283                 50%{284                     width: 20px;285                     transform: translate(300px,0);286                 }287                 75%{288                     width: 20px;289                     transform: translate(400px,0);290                 }291                 100%{292                     width: 20px;293                     transform: translate(500px,0);294                 }295             }296  */297             ul,li{298                 list-style:none;299                 } 300             body{301                 font:18px/20px "Microsoft302             Yahei","SimSun",Arial,sans-serif;             /*background:#CCC;*/303             }             304             .heartPic{305                 width:749px;306                 height:630px;307                 margin:60px308             auto 0 auto;309             } 310             .heartPic ul{311                 float:left;312                 width:749px;313             } 314             .heartPic ul li{315                 float:left;316                 width:70px;317                 height:70px;318                 padding:2px;319                 cursor:pointer;320             }321             .heartPic ul li.on{322                 z-index:99;323             } 324             .heartPic ul li.on .in{325                 position:relative;326                 left:-50px;327                 top:-50px;328                 padding:5px 5px 20px 5px;329                 background:#666;330             } 331             .heartPic ul li .pTxt{                   display:none;332                 width:100px;333                 height:15px;334                 text-align:center;335                 color:#fff;336                 overflow:hidden;337             }338             .heartPic .showDiv{display:block;}339             .in{340                 border: 1px solid red;341                 height: 70px;342             }343   344         </style>345     </head>346     <body>347         <div>348             <canvas id="stars"></canvas>349         350             <div class="heartPic" id="box">351                 <ul>352                     <li></li>353                     <li>354                         <div class="in" >355                             <a class="a1" href="#"><span>你</span></a>356                         </div>357                     </li>358                     <li>359                         <div class="in">360                             <a class="a1" href="#"><span>见</span></a>361                         </div>362                     </li>363                     <li>364                     </li>365                     <li>366                         <div class="in">367                             <a class="a1" href="#"><span>或</span></a>368                         </div>369                     </li>370                     <li>371                         <div class="in">372                             <a class="a1" href="#"><span>者</span></a>373                         </div>374                     </li>375                     <li>376                     </li>377                 </ul>378                 <ul>379                     <li>380                         <div class="in">381                             <a class="a1" href="#"><span>不</span></a>382                         </div>383                     </li>384                     <li>385                         <div class="in">386                            <a class="a1" href="#"><span>见</span></a>387                         </div>388                     </li>389                     <li>390                         <div class="in">391 <a class="a1" href="#"><span>我</span></a>392                         </div>393                     </li>394                     <li>395                         <div class="in">396                            <a class="a1" href="#"><span>就</span></a>397                         </div>398                     </li>399                     <li>400                         <div class="in">401                           <a class="a1" href="#"><span>在</span></a>402                         </div>403                     </li>404                     <li>405                         <div class="in">406                            <a class="a1" href="#"><span>那</span></a>407                         </div>408                     </li>409                     <li>410                         <div class="in">411                             <a class="a1" href="#"><span>里</span></a>412                         </div>413                     </li>414                 </ul>415                 <ul>416                     <li>417                         <div class="in">418                            <a class="a1" href="#"><span>不</span></a>419                         </div>420                     </li>421                     <li>422                         <div class="in">423                             <a class="a1" href="#"><span>悲</span></a>424                         </div>425                     </li>426                     <li>427                         <div class="in">428                            <a class="a1" href="#"><span>不</span></a>429                         </div>430                     </li>431                     <li>432                         <div class="in">433                             <a class="a1" href="#"><span>喜</span></a>434                         </div>435                     </li>436                     <li>437                         <div class="in">438                             <a class="a1" href="#"><span>你</span></a>439                         </div>440                     </li>441                     <li>442                         <div class="in">443                             <a class="a1" href="#"><span>念</span></a>444                         </div>445                     </li>446                     <li>447                         <div class="in">448                            <a class="a1" href="#"><span>或</span></a>449                         </div>450                     </li>451                 </ul>452                 <ul>453                     <li>454                     </li>455                     <li>456                         <div class="in">457                             <a class="a1" href="#"><span>者</span></a>458                         </div>459                     </li>460                     <li>461                         <div class="in">462                            <a class="a1" href="#"><span>不</span></a>463                         </div>464                     </li>465                     <li>466                         <div class="in">467                             <a class="a1" href="#"><span>念</span></a>468                         </div>469                     </li>470                     <li>471                         <div class="in">472                             <a class="a1" href="#"><span>情</span></a>473                         </div>474                     </li>475                     <li>476                         <div class="in">477                            <a class="a1" href="#"><span>就</span></a>478                         </div>479                     </li>480                     <li>481                     </li>482                 </ul>483                 <ul>484                     <li>485                     </li>486                     <li>487                     </li>488                     <li>489                         <div class="in">490                            <a class="a1" href="#"><span>在</span></a>491                         </div>492                     </li>493                     <li>494                         <div class="in">495                            <a class="a1" href="#"><span>那</span></a>496                         </div>497                     </li>498                     <li>499                         <div class="in">500                            <a class="a1" href="#"><span>里</span></a>501                         </div>502                     </li>503                     <li>504                     </li>505                     <li>506                     </li>507                 </ul>508                 <ul>509                     <li>510                     </li>511                     <li>512                     </li>513                     <li>514                     </li>515                     <li>516                         <div class="in">517                            <a class="a1" href="#"><span>爱</span></a>518                         </div>519                     </li>520                     <li>521                     </li>522                     <li>523                     </li>524                     <li>525                     </li>526                 </ul>527                528     </div>529             530         </div>    531     </body>532 </html>
(0)

相关推荐