“Template:乳包”与“Widget:网站维护时间线”:页面之间的差异

H萌娘,万物皆可H的百科全书!
(页面间差异)
跳到导航 跳到搜索
imported>Lee2020
无编辑摘要
 
imported>=海豚=
无编辑摘要
 
第1行: 第1行:
<noinclude>
<style>
{{info old
* {
|backgroundColor=rgba(251,251,251,0.5)
  margin: 0;
|这个模板列举了与乳包文化相关的条目,以包语录最多,相信随着时间发展内容会越来越多,而且可能永远也更新不完,如果发现了新的料子<del> (无限连任)</del> 欢迎补充。}}
}
.timeline {
  height: 100%;
  position: relative;
}
.timeline canvas {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 46px;
}
.timeline figcaption {
  font-weight: 400;
   font-size: 24px;
  text-transform: uppercase;
  -webkit-text-stroke: .25px;
}
.timeline h2 {
  font-weight: 400;
   font-size: 30px;
  padding-bottom: 20px;
  color: #b2cde9!important;
  text-transform: uppercase;
  line-height: 1.2 !important;
}
.timeline h6 {
  color: #0090F5!important;
   font-size: 17px;
   font-weight: 400;
}
.timeline p,
.timeline ol {
  font-weight: 400;
  padding: 3px 0 20px 0;
  color: #575757!important;
  text-align: justify;
  width: 70%;
}
.timeline ol {
  list-style: disc;
  margin-top: -20px;
  padding-left: 40px;
}
.timeline figure {
  float: right;
  width: 100%;
}
.timeline article {
  position: relative;
  width: 38%;
  overflow: hidden;
}
.timeline article:first-of-type {
  float: left;
  text-align: right;
}
.timeline article:first-of-type p,
.timeline article:first-of-type figure {
  float: right;
}
.timeline article:last-of-type {
  float: right;
}
.timeline article:last-of-type h2 {
  color: #c6e0aa!important;
}
.timeline article:last-of-type h6,
.timeline article:last-of-type a {
  color: #40aa00!important;
}
.timeline article:last-of-type a:hover {
  color: #95D40D!important;
}
</style>
</head>
<body>
   <section id="timeline">


{{背景图片|url=76933987_1.png|position=center}}
   <div class="timeline">
</noinclude>
     <canvas id="cvs3"></canvas>
     <article>
       <h2>新增功能</h2>     
       <figure>
         <figcaption>Web Development</figcaption>
         <h6>With modern technologies</h6>
         <p>
           Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.
         </p>
       </figure>
       <figure>
         <figcaption>Search Engine Op.</figcaption>
         <h6>With Free & Paid Plugin</h6>
         <p>
           Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.
         </p>
       </figure>
       <figure>
         <figcaption>Web Development</figcaption>
         <h6>With modern technologies</h6>
         <p>
           Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.
         </p>
       </figure>
       <figure>
         <figcaption>Search Engine Op.</figcaption>
         <h6>With Free & Paid Plugin</h6>
         <p>
           Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.
         </p>
       </figure>
       <figure>
         <figcaption>Graphics Design</figcaption>
         <h6>using ps and all</h6>
         <p>          
           Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.
         </p>
       </figure>
     </article>


{{Navbox
     <article>
|style = width:100%; margin-top:1em;
       <h2>修复BUG</h2>
     border:3px white #000;
       <figure>
     font-size:85%;
         <figcaption>Graphic & WEB</figcaption>
     font-size: 90%;
         <h6>Learn Today</h6>
     width: 100%;
         <p>
     background-color: white;
           Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.
     text-shadow: 0 0 50px white;
       </figure>
     border-radius:10px 10px 10px 10px;
       <figure>
|image=[[文件:Xi xin ping.jpg|250px|link=习妡萍]]
         <figcaption>Mobile Friendly</figcaption>
|titlestyle = border-radius:8px 8px 0px 0px; background:#FF0000; color:yellow; -webkit-text-fill-color:yellow;
         <h6>with touch screen</h6>
|groupstyle = background:#FF0000;
         <p>
|evenstyle  = background:#F7F7F7;
           Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.
|liststyle = line-height:1.4em;
           Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.
         </p>
       </figure>
       <figure>
         <figcaption>Retina Ready Display</figcaption>
         <h6>Supported all devices</h6>
         <p>
           Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto, molestiae, perferendis. Iusto nam libero doloribus veritatis magnam sequi error, obcaecati, porro atque quo unde iure voluptate officiis eos nostrum, sint. Corporis ipsam necessitatibus repudiandae, beatae odio perferendis provident consequuntur inventore natus deleniti asperiores animi ducimus assumenda possimus eos, cum sunt.
         </p>
       </figure>
       <figure>
         <figcaption>Retina Ready Display</figcaption>
         <h6>Supported all devices</h6>
         <p>
           Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto, molestiae, perferendis. Iusto nam libero doloribus veritatis magnam sequi error, obcaecati, porro atque quo unde iure voluptate officiis eos nostrum, sint. Corporis ipsam necessitatibus repudiandae, beatae odio perferendis provident consequuntur inventore natus deleniti asperiores animi ducimus assumenda possimus eos, cum sunt.
         </p>
       </figure>
     </article>
     <br style="clear:both" />
   </div>


|name= 乳包
</section>
|title= {{coloredlink|yellow|乳包}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
   function Timeline(cvs) {


  |group1 = {{color|yellow|称号}}
   var self = this,
  |list1 = {{links|乳包{{!}}习大大|乳包{{!}}羽|习包子|小熊维尼|乳包{{!}}习特勒|乳包{{!}}习皇帝|乳包{{!}}刁大犬|乳包{{!}}庆丰帝|吸精瓶|禁评|没想到文化程度那么低{{!}}恶习|乳包{{!}}翠|乳包{{!}}Hsi|小熊维尼{{!}}熊|小熊维尼{{!}}黄红黄|加速主义{{!}}总加速师|彩色哥}}
     paused = true,
     rafid = 0,
     mouse = { x: 0, y: 0 },
     canvas = cvs,
     ctx = null;


  |group2 = {{coloredlink|yellow|习妡萍/习妡萍语录|语录}}
   self.lines = [];
  |list2 =
  {{Navbox|child
  |groupstyle = background:#FF3535;
    |group1 = {{coloredlink|yellow|习妡萍/习妡萍语录#上台前|上台前}}
    |list1 = [[ 声乐分几种唱法]] • <!--
       -->[[扛200斤麦子十里山路不换肩]] • <!--
       -->[[满脸喷粪]] • <!--
       -->[[绿水青山就是金山银山]] • <!--
       -->[[习妡萍/习妡萍语录#基础不牢,地动山摇|基础不牢,地动山摇]] • <!--
       -->[[吃饱了没事干]]
    |group2 = {{coloredlink|yellow|习妡萍/习妡萍语录#第一任期|第一任期}}
    |list2 = [[报书名]] • <!--
       -->[[PM二百五]] • <!--
       -->[[一天游泳一千米]] • <!--
       -->[[拉清单]] • <!--
       -->[[头上三尺有神明]] • <!--
       -->[[习妡萍/习妡萍语录#血型对人格有影响|血型对人格有影响]] • <!--
       -->[[习妡萍/习妡萍语录#肆无忌惮胆大妄为|肆无忌惮胆大妄为]] • <!--
       -->[[奇怪建筑]] • <!--
       -->[[春种一粒粟,秋收万颗子]] • <!--
       -->[[习妡萍/习妡萍语录#迟早要完蛋、被老婆拉下水、你咧过嘴没有、不做了睡大觉|迟早要完蛋]] • <!--
       -->[[习妡萍/习妡萍语录#迟早要完蛋、被老婆拉下水、你咧过嘴没有、不做了睡大觉|被老婆拉下水]] • <!--
       -->[[习妡萍/习妡萍语录#迟早要完蛋、被老婆拉下水、你咧过嘴没有、不做了睡大觉|你咧过嘴没有]] • <!--
       -->[[习妡萍/习妡萍语录#迟早要完蛋、被老婆拉下水、你咧过嘴没有、不做了睡大觉|不做了睡大觉]] • <!--
       -->[[习妡萍/习妡萍语录#人类命运共同体|人类命运共同体]] • <!--
       -->[[习妡萍/习妡萍语录#网络不是法外之地|网络不是法外之地]] • <!--
       -->[[习妡萍/习妡萍语录#青山遮不住,毕竟东流去|青山遮不住,毕竟东流去]] • <!--
       -->[[通商宽衣]] • <!--
       -->[[八千万美元]] • <!--
       -->[[习妡萍/习妡萍语录#我们怀念他、遨游星汉、我最牵挂的还是困难群众|我们怀念他]] • <!-- 
       -->[[习妡萍/习妡萍语录#我们怀念他、遨游星汉、我最牵挂的还是困难群众|遨游星汉]] • <!--
       -->[[习妡萍/习妡萍语录#我们怀念他、遨游星汉、我最牵挂的还是困难群众|我最牵挂的还是困难群众]] • <!--
       -->[[撸起袖子加油干]] • <!--
       -->[[岿然不动]] • <!--
       -->[[合作之道]] • <!--
       -->[[习妡萍/习妡萍语录#艰难困艰艰困难艰苦|艰难困艰艰困难艰苦]]
    |group3 = {{coloredlink|yellow|习妡萍/习妡萍语录#第二任期|第二任期}}
    |list3 = [[不同意的请举手]] • <!--
       -->[[习妡萍/习妡萍语录#共产党的家业|共产党的家业]] • <!--
       -->[[萨格尔王]] • <!--
       -->[[贸易逆差]] • <!--
       -->[[习妡萍/习妡萍语录#室无贿落|室无贿落]] • <!--
       -->[[疯狂宇宙]] • <!--
       -->[[习妡萍/习妡萍语录#金科律玉、颐使气指、君子以不强自自强不息|金科律玉]] • <!--
       -->[[习妡萍/习妡萍语录#金科律玉、颐使气指、君子以不强自自强不息|颐使气指]] • <!--
       -->[[习妡萍/习妡萍语录#金科律玉、颐使气指、君子以不强自自强不息|君子以不强自自强不息]] • <!--
       -->[[习妡萍/习妡萍语录#岁月不居,时节如流|岁月不居,时节如流]] • <!--
       -->[[习妡萍/习妡萍语录#我将无我|我将无我]] • <!--
       -->[[习妡萍/习妡萍语录#提防、发孝|提防]] • <!--
       -->[[习妡萍/习妡萍语录#提防、发孝|发孝]] • <!--
       -->[[精甚细腻]] • <!--
       -->[[习妡萍/习妡萍语录#聚沙成傻|聚沙成傻]] • <!--
       -->[[习妡萍/习妡萍语录#老人瞻仰、并发|老人瞻仰]] • <!--
       -->[[习妡萍/习妡萍语录#老人瞻仰、并发|并发]] • <!--
       -->[[冰棒外交]] • <!--
       -->[[习妡萍/习妡萍语录#这是个硬菜|这是个硬菜]] • <!--
       -->[[亲自]] • <!--
       -->[[习妡萍/习妡萍语录#赤序|赤序]] • <!--
       -->[[习妡萍/习妡萍语录#千灭战、特出形式、混肴黑白、世上没有从天而降的英雄,只有挺身而出的凡人、为热干面加油|千灭战]] • <!--
       -->[[习妡萍/习妡萍语录#千灭战、特出形式、混肴黑白、世上没有从天而降的英雄,只有挺身而出的凡人、为热干面加油|特出形式]] • <!--
       -->[[习妡萍/习妡萍语录#千灭战、特出形式、混肴黑白、世上没有从天而降的英雄,只有挺身而出的凡人、为热干面加油|混肴黑白]] • <!--
       -->[[习妡萍/习妡萍语录#千灭战、特出形式、混肴黑白、世上没有从天而降的英雄,只有挺身而出的凡人、为热干面加油|世上没有从天而降的英雄,只有挺身而出的凡人]] • <!--
       -->[[习妡萍/习妡萍语录#千灭战、特出形式、混肴黑白、世上没有从天而降的英雄,只有挺身而出的凡人、为热干面加油|为热干面加油]] • <!--
       -->[[习妡萍/习妡萍语录#单纵|单纵]]
  }}


  |group3 = {{color|yellow|经历}}
   self.isOK = false;
  |list3 =
   self.options = {
  {{Navbox|child
     speed: 0.1,
  |groupstyle = background:#FF3535;
     density: 8,
    |group1 = {{color|yellow|早年经历}}
     radius: 600,
    |list1 = {{links|三平打群架|高考志愿|工农兵大学生}}
   };
    |group2 = {{color|yellow|步入政坛}}
   self.targets = [
    |list2 = {{links|在职研究生}}
     [29, 32, 48, 68],
    |group3 = {{color|yellow|第一任期}}
     [29, 33, 38]
    |list3 = {{links|庆丰包子|拉弓|左手敬礼|微博发布|孤独战士|习马会}}
   ];
    |group4 = {{color|yellow|第二任期}}
   self.dotColors = [
    |list4 = {{links|修宪|矮嘴酱瓶茅台|港澳不分}}
     ['#13669b', 'rgba(19, 102, 155, 0.3)', 'rgba(19, 102, 155, 0.08)'],
  }}
     ['#7dd317', 'rgba(113, 222, 15, 0.3)', 'rgba(91, 164, 22, 0.12)'],
   ];


  |group4 = {{color|yellow|事件}}
   self.isPaused = function () {
  |list4 = {{links|小熊维尼|泼墨|彩色哥|巴拿马文件|习包子案|Mr.Shithole}}
     return paused;
   };


  |group5 = {{color|yellow|周边}}
   function InitDots() {
  |list5 =
     var tl = $('.timeline');
  {{Navbox|child
     var top = tl.find('h2').outerHeight();
  |groupstyle = background:#FF3535;
    |group1 = {{color|yellow|作品}}
    |list1 = {{links|中国农村市场化研究|习近平谈治国理政|之江新语}}
    |group2 = {{color|yellow|衣饰}}
    |list2 = {{links|安踏羽绒服|欧米茄星座系列}}
    |group3 = {{color|yellow|歌曲}}
    |list3 = {{links|习大大爱着彭麻麻|要嫁就嫁习大大这样的人|包子铺|堂堂正正一辈子|习大大,人人夸|不知该怎么称呼你}}
    |group4 = {{color|yellow|评价}}
    |list4 = {{links|没想到文化程度那么低|剥光了衣服也要坚持当皇帝的小丑|贵族气质|爷爷的温暖}}
    |group5 = {{color|yellow|其他}}
    |list5 = {{links|平语近人|学习强国|历史选择了习近平}}
  }}


  |group6 = {{color|yellow|其他}}
     self.lines[0].dots = [];
  |list6 =
     var y = top;
  {{Navbox|child
     tl.find('article:first figure').each(function () {
  |groupstyle = background:#FF3535;
    |group1 = {{color|yellow|风评被害}}
    |list1 = {{links|庆丰包子{{!}}茨木华扇|庆丰包子{{!}}维多利加|袁世凯|张勋|拿破仑|凯撒|齐奥塞斯库|小熊维尼{{!}}维尼修斯|习酒|齐心文具|乳包#其他事件{{!}}细颈瓶|大大行,我也行|为你写诗}}
    |group2 = {{color|yellow|俗语成句}}
    |list2 = {{links|你敢跟他作对|大撒币|倒车|长得跟包子似的|毛病不改,积恶成习}}
    |group3 = {{color|yellow|恶搞作品}}
    |list3 = {{links|念诗之王|习包子的葬礼|习大大佢坚似维尼|重生之我是习近平}}
   }}
   {{links|全票当选更危险|咱包上就特别棒}}
}}


[[ 分类: 政治]]
       self.lines[0].dots.push([$(this).outerWidth() + 20, y + 20]);
[[ 分类: 乳包]]
 
       y += $(this).outerHeight();
     });
 
     self.lines[1].dots = [];
     var y = top;
     tl.find('article:last figure').each(function () {
 
       self.lines[1].dots.push([canvas.width - $(this).outerWidth() - 20, y + 20]);
 
       y += $(this).outerHeight();
     });
   }
 
   function OnResize() {
     canvas.width = canvas.offsetWidth;
     canvas.height = canvas.offsetHeight;
 
     var wasPaused = paused;
     self.toggle(false);
     // Init lines
     self.lines[0].reset(canvas.offsetWidth / 2 - 15);
     self.lines[1].reset(canvas.offsetWidth / 2 + 15);
 
     InitDots();
 
     self.toggle(!wasPaused);
   }
 
   function init() {
     var result = false;
     try {
       result = !!(canvas.getContext && (ctx = canvas.getContext('2d')));
 
       self.lines[0] = new Line(0, canvas.offsetHeight - 100, '#4789a3', self.options, mouse);
       self.lines[1] = new Line(0, canvas.offsetHeight - 100, '#a0d59c', self.options, mouse);
 
     } catch (e) {
       return false;
     }
 
     $(canvas).mousemove(function (e) {
 
       if (e.offsetX) {
         mouse.x = e.offsetX;
         mouse.y = e.offsetY;
       }
       else if (e.layerX) {
         mouse.x = e.layerX;
         mouse.y = e.layerY;
       }
       else {
         mouse.x = e.pageX - $(canvas).offset().left;
         mouse.y = e.pageY - $(canvas).offset().top;
       }
     });
 
     $(window).resize(OnResize);
 
     OnResize();
 
     return result;
   }
 
   function Line(y, height, color, options, mouse) {
     var self = this;
 
     self.color = color;
     self.options = options;
     self.mouse = mouse;
     self.height = height;
     self.dots = [];
     self.y = y;
 
     self.points = [];
 
     self.reset = function (x, f) {
       self.points = [];
       for (var y = self.y; y < self.height; y += self.options.density)
         self.points.push(new Point(x, y, self.color));
     }
 
     self.update = function () {
       for (var i = 0; i < self.points.length; i++)
         self.points[i].update(self.mouse, self.options);
     }
 
     function Point(x, y) {
       this.y = y;
       this.x = x;
       this.base = { x: x, y: y };
 
       this.update = function (mouse, options) {
         var dx = this.x - mouse.x,
           dy = this.y - mouse.y,
           alpha = Math.atan2(dx, dy),
           alpha = (alpha > 0 ? alpha : 2 * Math.PI + alpha),
           d = options.radius / Math.sqrt(dx * dx + dy * dy);
 
         this.y += Math.cos(alpha) * d + (this.base.y - this.y) * options.speed;
         this.x += Math.sin(alpha) * d + (this.base.x - this.x) * options.speed;
       }
     }
   }
 
   function drawCircle(p, r, color) {
     ctx.fillStyle = color;
     ctx.beginPath();
     ctx.arc(p.x, p.y, r, 0, 2 * Math.PI, true);
     ctx.closePath();
     ctx.fill();
   }
 
   function drawLine(p1, p2) {
     ctx.beginPath();
     ctx.moveTo(p1.x, p1.y);
     ctx.lineTo(p2.x, p2.y);
     ctx.stroke();
     ctx.closePath();
   }
 
   function redraw() {
     ctx.clearRect(0, 0, canvas.width, canvas.height);
 
     for (var i = 0; i < 2; i++) {
       var points = self.lines[i].points;
 
       ctx.beginPath();
       ctx.lineWidth = 2;
       ctx.strokeStyle = self.lines[i].color;
       ctx.moveTo(points[15].x, points[15].y);
 
       for (var j = 15; j < points.length - 2; j++) {
         var point = points[j];
 
         var xc = (points[j + 1].x + point.x) / 2;
         var yc = (points[j + 1].y + point.y) / 2;
 
 
         ctx.quadraticCurveTo(point.x, point.y, xc, yc);
       }
       ctx.stroke();
       ctx.closePath();
 
 
       // Dots
       ctx.lineWidth = 1.2;
       ctx.strokeStyle = self.dotColors[i][2];
       for (var j = 0; j < self.lines[i].dots.length; j++) {
         var dot = self.lines[i].dots[j],
           id = self.targets[i][j];
           dot2 = [
             (self.lines[i].points[id].x + self.lines[i].points[id + 1].x) / 2,
             (self.lines[i].points[id].y + self.lines[i].points[id + 1].y) / 2,
           ];
 
         var p1 = { x: dot[0], y: dot[1] };
         var p2 = { x: dot2[0], y: dot2[1] };
 
 
         drawLine(p1, p2);
         drawCircle(p1, 4, self.dotColors[i][0]);
 
         drawCircle(p2, 11, self.dotColors[i][1]);
         drawCircle(p2, 5.5, self.dotColors[i][0]);
       }
     }
   }
 
   function animate() {
     rafid = requestAnimationFrame(animate);
 
     self.lines[0].update();
     self.lines[1].update();
 
     redraw();
   }
 
   self.toggle = function (run) {
     if (!self.isOK) return false;
 
     if (run === undefined)
       self.toggle(!paused);
 
     else if (!!run && paused) {
       paused = false;
       animate();
     }
     else if (!!!run) {
       paused = true;
       cancelAnimationFrame(rafid);
     }
     return true;
   }
 
 
   self.isOK = init();
}
new Timeline($('#cvs3').get(0)).toggle(true);
</script>

2021年8月13日 (五) 18:49的版本

<style>

  • {
 margin: 0;

} .timeline {

 height: 100%;
 position: relative;

} .timeline canvas {

 position: absolute;
 width: 100%;
 height: 100%;
 left: 0;
 top: 46px;

} .timeline figcaption {

 font-weight: 400;
   font-size: 24px;
 text-transform: uppercase;
 -webkit-text-stroke: .25px;

} .timeline h2 {

 font-weight: 400;
   font-size: 30px;
 padding-bottom: 20px;
 color: #b2cde9!important;
  text-transform: uppercase;
  line-height: 1.2 !important;

} .timeline h6 {

 color: #0090F5!important;
   font-size: 17px;
   font-weight: 400;

} .timeline p, .timeline ol {

 font-weight: 400;
 padding: 3px 0 20px 0;
 color: #575757!important;
 text-align: justify;
 width: 70%;

} .timeline ol {

 list-style: disc;
 margin-top: -20px;
 padding-left: 40px;

} .timeline figure {

 float: right;
 width: 100%;

} .timeline article {

 position: relative;
 width: 38%;
 overflow: hidden;

} .timeline article:first-of-type {

 float: left;
 text-align: right;

} .timeline article:first-of-type p, .timeline article:first-of-type figure {

 float: right;

} .timeline article:last-of-type {

 float: right;

} .timeline article:last-of-type h2 {

 color: #c6e0aa!important;

} .timeline article:last-of-type h6, .timeline article:last-of-type a {

 color: #40aa00!important;

} .timeline article:last-of-type a:hover {

 color: #95D40D!important;

} </style> </head> <body>

   <section id="timeline">
       <canvas id="cvs3"></canvas>
       <article>

新增功能

           <figure>
               <figcaption>Web Development</figcaption>
With modern technologies

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.

           </figure>
           <figure>
               <figcaption>Search Engine Op.</figcaption>
With Free & Paid Plugin

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.

           </figure>
            <figure>
               <figcaption>Web Development</figcaption>
With modern technologies

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.

           </figure>
           <figure>
               <figcaption>Search Engine Op.</figcaption>
With Free & Paid Plugin

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.

           </figure>
           <figure>
               <figcaption>Graphics Design</figcaption>
using ps and all

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.

           </figure>
       </article>
       <article>

修复BUG

           <figure>
               <figcaption>Graphic & WEB</figcaption>
Learn Today

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero. </figure> <figure> <figcaption>Mobile Friendly</figcaption>

with touch screen

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et ipsum pulvinar, blandit neque in, ornare libero.

           </figure>
           <figure>
               <figcaption>Retina Ready Display</figcaption>
Supported all devices

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto, molestiae, perferendis. Iusto nam libero doloribus veritatis magnam sequi error, obcaecati, porro atque quo unde iure voluptate officiis eos nostrum, sint. Corporis ipsam necessitatibus repudiandae, beatae odio perferendis provident consequuntur inventore natus deleniti asperiores animi ducimus assumenda possimus eos, cum sunt.

           </figure>
           <figure>
               <figcaption>Retina Ready Display</figcaption>
Supported all devices

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto, molestiae, perferendis. Iusto nam libero doloribus veritatis magnam sequi error, obcaecati, porro atque quo unde iure voluptate officiis eos nostrum, sint. Corporis ipsam necessitatibus repudiandae, beatae odio perferendis provident consequuntur inventore natus deleniti asperiores animi ducimus assumenda possimus eos, cum sunt.

           </figure>
       </article>
       

</section> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script>

   function Timeline(cvs) {
   var self = this,
       paused = true,
       rafid = 0,
       mouse = { x: 0, y: 0 },
       canvas = cvs,
       ctx = null;
   self.lines = [];
   self.isOK = false;
   self.options = {
       speed: 0.1,
       density: 8,
       radius: 600,
   };
   self.targets = [
       [29, 32, 48, 68],
       [29, 33, 38]
   ];
   self.dotColors = [
       ['#13669b', 'rgba(19, 102, 155, 0.3)', 'rgba(19, 102, 155, 0.08)'],
       ['#7dd317', 'rgba(113, 222, 15, 0.3)', 'rgba(91, 164, 22, 0.12)'],
   ];
   self.isPaused = function () {
       return paused;
   };
   function InitDots() {
       var tl = $('.timeline');
       var top = tl.find('h2').outerHeight();
       self.lines[0].dots = [];
       var y = top;
       tl.find('article:first figure').each(function () {
           self.lines[0].dots.push([$(this).outerWidth() + 20, y + 20]);
           y += $(this).outerHeight();
       });
       self.lines[1].dots = [];
       var y = top;
       tl.find('article:last figure').each(function () {
           self.lines[1].dots.push([canvas.width - $(this).outerWidth() - 20, y + 20]);
           y += $(this).outerHeight();
       });
   }
   function OnResize() {
       canvas.width = canvas.offsetWidth;
       canvas.height = canvas.offsetHeight;
       var wasPaused = paused;
       self.toggle(false);
       // Init lines
       self.lines[0].reset(canvas.offsetWidth / 2 - 15);
       self.lines[1].reset(canvas.offsetWidth / 2 + 15);
       InitDots();
       self.toggle(!wasPaused);
   }
   function init() {
       var result = false;
       try {
           result = !!(canvas.getContext && (ctx = canvas.getContext('2d')));
           self.lines[0] = new Line(0, canvas.offsetHeight - 100, '#4789a3', self.options, mouse);
           self.lines[1] = new Line(0, canvas.offsetHeight - 100, '#a0d59c', self.options, mouse);
       } catch (e) {
           return false;
       }
       $(canvas).mousemove(function (e) {
           if (e.offsetX) {
               mouse.x = e.offsetX;
               mouse.y = e.offsetY;
           }
           else if (e.layerX) {
               mouse.x = e.layerX;
               mouse.y = e.layerY;
           }
           else {
               mouse.x = e.pageX - $(canvas).offset().left;
               mouse.y = e.pageY - $(canvas).offset().top;
           }
       });
       $(window).resize(OnResize);
       OnResize();
       return result;
   }
   function Line(y, height, color, options, mouse) {
       var self = this;
       self.color = color;
       self.options = options;
       self.mouse = mouse;
       self.height = height;
       self.dots = [];
       self.y = y;
       self.points = [];
       self.reset = function (x, f) {
           self.points = [];
           for (var y = self.y; y < self.height; y += self.options.density)
               self.points.push(new Point(x, y, self.color));
       }
       self.update = function () {
           for (var i = 0; i < self.points.length; i++)
               self.points[i].update(self.mouse, self.options);
       }
       function Point(x, y) {
           this.y = y;
           this.x = x;
           this.base = { x: x, y: y };
           this.update = function (mouse, options) {
               var dx = this.x - mouse.x,
                   dy = this.y - mouse.y,
                   alpha = Math.atan2(dx, dy),
                   alpha = (alpha > 0 ? alpha : 2 * Math.PI + alpha),
                   d = options.radius / Math.sqrt(dx * dx + dy * dy);
               this.y += Math.cos(alpha) * d + (this.base.y - this.y) * options.speed;
               this.x += Math.sin(alpha) * d + (this.base.x - this.x) * options.speed;
           }
       }
   }
   function drawCircle(p, r, color) {
       ctx.fillStyle = color;
       ctx.beginPath();
       ctx.arc(p.x, p.y, r, 0, 2 * Math.PI, true);
       ctx.closePath();
       ctx.fill();
   }
   function drawLine(p1, p2) {
       ctx.beginPath();
       ctx.moveTo(p1.x, p1.y);
       ctx.lineTo(p2.x, p2.y);
       ctx.stroke();
       ctx.closePath();
   }
   function redraw() {
       ctx.clearRect(0, 0, canvas.width, canvas.height);
       for (var i = 0; i < 2; i++) {
           var points = self.lines[i].points;
           ctx.beginPath();
           ctx.lineWidth = 2;
           ctx.strokeStyle = self.lines[i].color;
           ctx.moveTo(points[15].x, points[15].y);
           for (var j = 15; j < points.length - 2; j++) {
               var point = points[j];
               var xc = (points[j + 1].x + point.x) / 2;
               var yc = (points[j + 1].y + point.y) / 2;


               ctx.quadraticCurveTo(point.x, point.y, xc, yc);
           }
           ctx.stroke();
           ctx.closePath();


           // Dots
           ctx.lineWidth = 1.2;
           ctx.strokeStyle = self.dotColors[i][2];
           for (var j = 0; j < self.lines[i].dots.length; j++) {
               var dot = self.lines[i].dots[j],
                   id = self.targets[i][j];
                   dot2 = [
                       (self.lines[i].points[id].x + self.lines[i].points[id + 1].x) / 2,
                       (self.lines[i].points[id].y + self.lines[i].points[id + 1].y) / 2,
                   ];
               var p1 = { x: dot[0], y: dot[1] };
               var p2 = { x: dot2[0], y: dot2[1] };


               drawLine(p1, p2);
               drawCircle(p1, 4, self.dotColors[i][0]);
               drawCircle(p2, 11, self.dotColors[i][1]);
               drawCircle(p2, 5.5, self.dotColors[i][0]);
           }
       }
   }
   function animate() {
       rafid = requestAnimationFrame(animate);
       self.lines[0].update();
       self.lines[1].update();
       redraw();
   }
   self.toggle = function (run) {
       if (!self.isOK) return false;
       if (run === undefined)
           self.toggle(!paused);
       else if (!!run && paused) {
           paused = false;
           animate();
       }
       else if (!!!run) {
           paused = true;
           cancelAnimationFrame(rafid);
       }
       return true;
   }


   self.isOK = init();

} new Timeline($('#cvs3').get(0)).toggle(true); </script>