整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          源碼分享 HTML 愛心

          lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

          <HTML>

          <HEAD>

          <TITLE> New Document </TITLE>

          <META NAME="Generator" CONTENT="EditPlus">

          <META NAME="Author" CONTENT="">

          <META NAME="Keywords" CONTENT="">

          <META NAME="Description" CONTENT="">

          <style>

          html, body {

          height: 100%;

          padding: 0;

          margin: 0;

          background: #000;

          }

          canvas {

          position: absolute;

          width: 100%;

          height: 100%;

          }

          </style>

          </HEAD>

          <BODY>

          </style>

          <canvas id="pinkboard"></canvas>

          <script>

          /*

          * Settings

          */

          var settings = {

          particles: {

          length: 500, // maximum amount of particles

          duration: 2, // particle duration in sec

          velocity: 100, // particle velocity in pixels/sec

          effect: -0.75, // play with this for a nice effect

          size: 30, // particle size in pixels

          },

          };

          /*

          * RequestAnimationFrame polyfill by Erik M?ller

          */

          (function(){var b=0;var c=["ms","moz","webkit","o"];for(var a=0;a<c.length&&!window.requestAnimationFrame;++a){window.requestAnimationFrame=window[c[a]+"RequestAnimationFrame"];window.cancelAnimationFrame=window[c[a]+"CancelAnimationFrame"]||window[c[a]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame){window.requestAnimationFrame=function(h,e){var d=new Date().getTime();var f=Math.max(0,16-(d-b));var g=window.setTimeout(function(){h(d+f)},f);b=d+f;return g}}if(!window.cancelAnimationFrame){window.cancelAnimationFrame=function(d){clearTimeout(d)}}}());


          /*

          * Point class

          */

          var Point = (function() {

          function Point(x, y) {

          this.x = (typeof x !== 'undefined') ? x : 0;

          this.y = (typeof y !== 'undefined') ? y : 0;

          }

          Point.prototype.clone = function() {

          return new Point(this.x, this.y);

          };

          Point.prototype.length = function(length) {

          if (typeof length == 'undefined')

          return Math.sqrt(this.x * this.x + this.y * this.y);

          this.normalize();

          this.x *= length;

          this.y *= length;

          return this;

          };

          Point.prototype.normalize = function() {

          var length = this.length();

          this.x /= length;

          this.y /= length;

          return this;

          };

          return Point;

          })();

          /*

          * Particle class

          */

          var Particle = (function() {

          function Particle() {

          this.position = new Point();

          this.velocity = new Point();

          this.acceleration = new Point();

          this.age = 0;

          }

          Particle.prototype.initialize = function(x, y, dx, dy) {

          this.position.x = x;

          this.position.y = y;

          this.velocity.x = dx;

          this.velocity.y = dy;

          this.acceleration.x = dx * settings.particles.effect;

          this.acceleration.y = dy * settings.particles.effect;

          this.age = 0;

          };

          Particle.prototype.update = function(deltaTime) {

          this.position.x += this.velocity.x * deltaTime;

          this.position.y += this.velocity.y * deltaTime;

          this.velocity.x += this.acceleration.x * deltaTime;

          this.velocity.y += this.acceleration.y * deltaTime;

          this.age += deltaTime;

          };

          Particle.prototype.draw = function(context, image) {

          function ease(t) {

          return (--t) * t * t + 1;

          }

          var size = image.width * ease(this.age / settings.particles.duration);

          context.globalAlpha = 1 - this.age / settings.particles.duration;

          context.drawImage(image, this.position.x - size / 2, this.position.y - size / 2, size, size);

          };

          return Particle;

          })();

          /*

          * ParticlePool class

          */

          var ParticlePool = (function() {

          var particles,

          firstActive = 0,

          firstFree = 0,

          duration = settings.particles.duration;

          function ParticlePool(length) {

          // create and populate particle pool

          particles = new Array(length);

          for (var i = 0; i < particles.length; i++)

          particles[i] = new Particle();

          }

          ParticlePool.prototype.add = function(x, y, dx, dy) {

          particles[firstFree].initialize(x, y, dx, dy);

          // handle circular queue

          firstFree++;

          if (firstFree == particles.length) firstFree = 0;

          if (firstActive == firstFree ) firstActive++;

          if (firstActive == particles.length) firstActive = 0;

          };

          ParticlePool.prototype.update = function(deltaTime) {

          var i;

          // update active particles

          if (firstActive < firstFree) {

          for (i = firstActive; i < firstFree; i++)

          particles[i].update(deltaTime);

          }

          if (firstFree < firstActive) {

          for (i = firstActive; i < particles.length; i++)

          particles[i].update(deltaTime);

          for (i = 0; i < firstFree; i++)

          particles[i].update(deltaTime);

          }

          // remove inactive particles

          while (particles[firstActive].age >= duration && firstActive != firstFree) {

          firstActive++;

          if (firstActive == particles.length) firstActive = 0;

          }

          };

          ParticlePool.prototype.draw = function(context, image) {

          // draw active particles

          if (firstActive < firstFree) {

          for (i = firstActive; i < firstFree; i++)

          particles[i].draw(context, image);

          }

          if (firstFree < firstActive) {

          for (i = firstActive; i < particles.length; i++)

          particles[i].draw(context, image);

          for (i = 0; i < firstFree; i++)

          particles[i].draw(context, image);

          }

          };

          return ParticlePool;

          })();

          /*

          * Putting it all together

          */

          (function(canvas) {

          var context = canvas.getContext('2d'),

          particles = new ParticlePool(settings.particles.length),

          particleRate = settings.particles.length / settings.particles.duration, // particles/sec

          time;

          // get point on heart with -PI <= t <= PI

          function pointOnHeart(t) {

          return new Point(

          160 * Math.pow(Math.sin(t), 3),

          130 * Math.cos(t) - 50 * Math.cos(2 * t) - 20 * Math.cos(3 * t) - 10 * Math.cos(4 * t) + 25

          );

          }

          // creating the particle image using a dummy canvas

          var image = (function() {

          var canvas = document.createElement('canvas'),

          context = canvas.getContext('2d');

          canvas.width = settings.particles.size;

          canvas.height = settings.particles.size;

          // helper function to create the path

          function to(t) {

          var point = pointOnHeart(t);

          point.x = settings.particles.size / 2 + point.x * settings.particles.size / 350;

          point.y = settings.particles.size / 2 - point.y * settings.particles.size / 350;

          return point;

          }

          // create the path

          context.beginPath();

          var t = -Math.PI;

          var point = to(t);

          context.moveTo(point.x, point.y);

          while (t < Math.PI) {

          t += 0.01; // baby steps!

          point = to(t);

          context.lineTo(point.x, point.y);

          }

          context.closePath();

          // create the fill

          context.fillStyle = '#ea80b0';

          context.fill();

          // create the image

          var image = new Image();

          image.src = canvas.toDataURL();

          return image;

          })();

          // render that thing!

          function render() {

          // next animation frame

          requestAnimationFrame(render);

          // update time

          var newTime = new Date().getTime() / 1000,

          deltaTime = newTime - (time || newTime);

          time = newTime;

          // clear canvas

          context.clearRect(0, 0, canvas.width, canvas.height);

          // create new particles

          var amount = particleRate * deltaTime;

          for (var i = 0; i < amount; i++) {

          var pos = pointOnHeart(Math.PI - 2 * Math.PI * Math.random());

          var dir = pos.clone().length(settings.particles.velocity);

          particles.add(canvas.width / 2 + pos.x, canvas.height / 2 - pos.y, dir.x, -dir.y);

          }

          // update and draw particles

          particles.update(deltaTime);

          particles.draw(context, image);

          }

          // handle (re-)sizing of the canvas

          function onResize() {

          canvas.width = canvas.clientWidth;

          canvas.height = canvas.clientHeight;

          }

          window.onresize = onResize;

          // delay rendering bootstrap

          setTimeout(function() {

          onResize();

          render();

          }, 10);

          })(document.getElementById('pinkboard'));

          </script>

          </BODY>

          </HTML>

          說程序員是大大的直男,但是一旦程序員浪漫起來,他們會用他們狂拽酷炫吊的技能展現自己的羅曼蒂克實力,那時候就真的沒文科男什么事啦!下面我就跟大家分享如何用簡單的html制作一個網頁版的愛心表白,不管你是不是程序員都能用,手機就可展示。

          先來看下效果:

          后面會提供給大家源代碼,在這里先交大家怎么去根據自己的實際情況去改這個文件。

          復制源代碼

          首先大家將我后面的源代碼復制下來并且粘貼進一個txt文件就可以。

          jquery.js下載

          不要看到下載就害怕,這個大家只要搜索jquery就能下載了,下載完是一個jquery.js文件,將文件改名為jquery.txt,雙擊打開將內容復制到下圖所示位置。(如果有人不會下,可以私信我索要)

          更改表白信息

          大家根據自己的實際請款更改頁面的一些信息,比如姓名,日期、或者是表白內容都可以

          源碼

          最后奉上源碼,這里是沒有jquery.js的,已經預留空,需要大家復制粘貼進來就行了,最后將txt文件的后綴改為.html就可以了,不管是電腦還是手機都能用哦。

          天雷雨交加,燥熱有所緩解。今晨空氣清新,再加上馬上三天小長假,心情很不錯,祝各位小長假玩的開心。那么,今天就用CSS3做些“不正緊”的事:畫八卦和愛心。

          CSS3我們一般都是用來進行布局,在工作中很少會刻意去用它畫畫,畢竟這有點耗時間。

          一、八卦

          css3繪制八卦

          分析:它就是多個圓疊加的效果。

          1、給body加個背景色,否則看不清八卦的白色部分:

          body{background:#efefef;}
          

          2、畫一個圓,漸變是由白到黑的激烈漸變:

          .wrap{width: 300px;
           height: 300px;
           background: linear-gradient(to right,#fff 50%,#000 50%);
           border-radius: 50%
          }
          <div class="wrap"></div>
          

          效果圖如下:

          css3繪制八卦

          3、在上下各畫一黑一白兩個圓,圓的直徑剛好是剛才大圓的半徑,同時水平居中,然后讓它倆里面的內容水平和垂直居中(方便畫里面更小的圓):

          .inner{
           width: 150px;
           height:150px;
           border-radius: 50%;
           margin: auto
          }
          .white{
           background-color: #fff;
          }
          .black{
           background-color:#000;
          }
          <div class="wrap">
           <div class="inner white"></div>
           <div class="inner black"></div>
          </div>
          

          效果圖如下:

          css3繪制八卦

          4、利用剛才的兩個圓的 after 偽元素,各畫一個更小的圓,背景色和這兩個大圓正好相反,這樣就畫好了,最終代碼如下:

          <style type="text/css">
          body{background:#efefef;}
          .wrap{
           width: 300px;
           height: 300px;
           background: linear-gradient(to right,#fff 50%,#000 50%);
           border-radius: 50%;
          }
          .inner{
           width: 150px;
           height:150px;
           border-radius: 50%;
           margin: auto;
           display: flex;
           justify-content: center;
           align-items: center;
          }
          .inner:after{
           content:'';
           width: 50px;
           height: 50px;
           border-radius: 50%
          }
          .white{
           background-color: #fff;
          }
          .white:after{
           background-color: #000;
          }
          .black{
           background-color:#000;
          }
          .black:after{
           background-color:#fff;
          }
          </style>
          <div class="wrap">
           <div class="inner white"></div>
           <div class="inner black"></div>
          </div>
          

          最終八卦的效果圖:

          二、愛心

          分析:愛心其實就是兩個圓+一個旋轉45°的正方形。

          1、先定義一個紅色旋轉45°的外框,同時相對定位,方便圓的各個組成部分定位:

          <style type="text/css">
          .heart{
           position: relative;
           background: red;
           width: 300px;
           height: 300px;
           transform:rotate(45deg);
          }
          </style>
          <div class="heart"></div>
          

          2、利用heart的before和after偽元素,在它的左右各加一個直徑和它寬度一樣的圓,同時調整兩個圓和heart的邊相切,最終代碼:

          <style type="text/css">
          .heart{
           position: relative;
           background: red;
           width: 300px;
           height: 300px;
           transform:rotate(45deg);
           margin:auto;
           top:100px;
          }
          .heart:before,.heart:after{
           content: '';
           position: absolute;
           top: 0;
           left: -150px;
           width: 300px;
           height: 300px;
           border-radius: 50%;
           background: red;
          }
          .heart:after{
           top: -150px;
           left: 0;
          }
          </style>
          <div class="heart"></div>
          

          最終效果圖:

          三、CSS畫圖的好處:

          CSS畫圖雖然比直接切成圖片引用要耗時間,但是也有很多好處,例如減少請求次數、顯示速度快,減少網頁大小等,并且畫出來的圖都是矢量的。簡單的圖,用CSS畫還是比較劃算的。

          當然,不建議復雜的圖用CSS畫,耗時耗力,兼容性還差。

          四、結束語:

          上面的圖都非常簡單,如果用上陰影(CSS3的陰影非常強大)、漸變,效果會更好,畫面會更加豐滿,立體感更強。嘗試下下面的圖用CSS畫出來:

          關注IT學堂,下次我們來畫下上面的LOGO吧。


          主站蜘蛛池模板: 精品日韩一区二区三区视频| 国产在线观看一区二区三区精品| 日本福利一区二区| 日本精品一区二区在线播放| 亚洲一区精品无码| 国产一区二区三区不卡在线看| 亚洲av鲁丝一区二区三区 | 亚洲色偷精品一区二区三区| 一区二区三区四区无限乱码 | 无码人妻精品一区二区蜜桃百度| 蜜桃无码一区二区三区| 精品视频一区二区| 无码精品一区二区三区| 99在线精品一区二区三区| 国产激情无码一区二区app| 香蕉在线精品一区二区| 成人免费视频一区二区| 日韩精品一区二区午夜成人版| 韩国精品福利一区二区三区| 亚洲AV日韩AV一区二区三曲| 亚洲精品国产suv一区88| 亚洲乱码一区二区三区国产精品 | 中文字幕人妻AV一区二区| 日韩精品一区二区三区中文精品| 一夲道无码人妻精品一区二区| 国产精品免费大片一区二区| 精品国产亚洲一区二区在线观看| jazzjazz国产精品一区二区| 一区二区三区四区在线播放| 久99精品视频在线观看婷亚洲片国产一区一级在线| 成人免费一区二区无码视频| 国内精品视频一区二区三区八戒| 国模极品一区二区三区| 国产激情一区二区三区在线观看 | 八戒久久精品一区二区三区| 亚洲福利视频一区| 免费视频一区二区| 国产一区二区三区影院| 日本一区二区三区在线观看视频| 日本精品一区二区久久久| 亚洲日韩精品一区二区三区 |