Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产精品黄网站免费观看,一区在线播放,日本在线视频网

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          如何使用 CSS 代碼制作一個(gè)簡(jiǎn)易愛(ài)心,編程獅教你

          么使用 CSS 繪制一個(gè)愛(ài)心【附愛(ài)心代碼】

          分析:

          • 愛(ài)心可以通過(guò)一個(gè)正方形+兩個(gè)圓形組合成。
          1. 先畫(huà)一個(gè)正方形+圓形, 擺放位置如下:

          1. 再添加上一個(gè)圓形。

          1. 最后再將整個(gè)圖形順時(shí)針旋轉(zhuǎn)45度即可。

          初步實(shí)現(xiàn)

          1. 先畫(huà)一個(gè)正方形:
             <body>
                 <div id="heart"></div>
             </body>
             #heart{
                    height: 300px;
                    width: 300px;
                    border: 2px solid black;
                 }
          1. 給這個(gè)正方形的左邊加行一個(gè)圓形.這里使用偽類:before來(lái)實(shí)現(xiàn):
                  #heart{
                         height: 200px;
                         width: 200px;
                         border: 2px solid black;
                         position: relative;
                     }
                 #heart:before{
                     content: '';
                     width: 200px;
                     height: 200px;
                     border: 2px solid black;
                     border-radius: 50%; // 正方形加圓角變成圓
                     position: absolute;
                     left: -100px;  // 向左位移正方形一半的長(zhǎng)度
                 }

          此時(shí)圖形長(zhǎng)這樣:

          1. 再添加一個(gè)圓形, 這里使用after偽類來(lái)實(shí)現(xiàn)。
                #heart{
                         height: 200px;
                         width: 200px;
                         border: 2px solid black;
                         position: relative;
                     }
                     // 這里偷個(gè)懶.直接寫(xiě)一塊了
                 #heart:before,#heart:after{
                     content: '';
                     width: 200px;
                     height: 200px;
                     border: 2px solid black;
                     border-radius: 50%;
                     position: absolute;
                     left: -100px;
                 }
                 // 第二個(gè)圓, 只需要向上位移正方形一半的高度
                 #heart:after{
                     left: 0;
                     top: -100px;
                 }

          1. 最后一步, 旋轉(zhuǎn)一下, 然后上個(gè)顏色.去掉之前為了看清楚加的邊框。
                /*給heart進(jìn)行旋轉(zhuǎn)并加上顏色*/
               transform: rotate(45deg);
               background-color: red;

          完整代碼:

          注頭條號(hào),專注做前端

          誰(shuí)說(shuō)程序員不浪漫,其實(shí)有些程序還是很浪漫的好嘛,懂得學(xué)以致用,下面是一個(gè)前端開(kāi)發(fā)利用所學(xué)html5制作的html5愛(ài)心+表白 ,附源碼

          如果你是一個(gè)單身程序員,那么趕緊的拿下這個(gè)資源吧

          源碼下載

          http://zjdx1.sc.chinaz.com/Files/DownLoad/webjs1/201401/jiaoben1892.rar

          ////

          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>


          主站蜘蛛池模板: 国产成人欧美一区二区三区 | 无码人妻精品一区二区三区东京热| 国产一区二区女内射| 日本一区二区三区在线看| 日韩精品人妻一区二区中文八零 | 亲子乱av一区区三区40岁| 大伊香蕉精品一区视频在线| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲色偷精品一区二区三区| 变态拳头交视频一区二区| 亚洲综合无码一区二区痴汉| 一本AV高清一区二区三区| 国产在线观看精品一区二区三区91| 亚洲AV无码一区二区大桥未久| 交换国产精品视频一区| 国产在线视频一区二区三区98| 国产激情无码一区二区| 免费人妻精品一区二区三区| 亚无码乱人伦一区二区| 国产三级一区二区三区| 亚洲国产精品成人一区| 女同一区二区在线观看| 一区二区在线视频观看| 日本v片免费一区二区三区| 麻豆精品一区二区综合av| 久久国产香蕉一区精品| 杨幂AV污网站在线一区二区| 国产精品一区二区av不卡| 日本一区二区三区高清| 精品国产香蕉伊思人在线在线亚洲一区二区| 亚洲国产成人久久一区WWW | 色狠狠AV一区二区三区| 人妻免费一区二区三区最新| 无码人妻视频一区二区三区| 在线精品亚洲一区二区| 麻豆高清免费国产一区| 2021国产精品一区二区在线| 精品无码人妻一区二区三区品| 国精产品999一区二区三区有限 | 亚洲视频一区网站| 久热国产精品视频一区二区三区|