目录

  • 一、常见网页特效
  • 1. 案例:网页轮播图
    • 1.1 案例分析
      • 1.1.1 左右按钮的显示与隐藏
      • 1.1.2 动态生成小圆圈
      • 1.1.3 小圆圈的排他思想
      • 1.1.4 点击小圆圈滚动图片
      • 1.1.5 点击右侧按钮一次,就让图片滚动一张
      • 1.1.6 克隆第一张图片
      • 1.1.7 点击右侧按钮,小圆圈跟随变化
      • 小bug
      • 1.1.8 左侧按钮功能实现
      • 1.1.9 自动播放功能
    • 1.2 节流阀
    • 1.3 代码展示
      • html
      • css
      • js
      • animate.js
  • 2. 案例:返回顶部
    • js
  • 3. 案例:筋斗云
    • 3.1 案例分析
    • 3.2 代码实现

一、常见网页特效

1. 案例:网页轮播图

轮播图也称为焦点图,是网页中比较常见的网页特效。
功能需求:

  1. 鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮。
  2. 点击右侧按钮一次,图片往左播放一张,以此类推,左侧按钮同理。
  3. 图片播放的同时,下面小圆圈模块跟随一起变化。
  4. 点击小圆圈,可以播放相应图片。
  5. 鼠标不经过轮播图,轮播图也会自动播放图片。
  6. 鼠标经过,轮播图模块,自动播放停止。

1.1 案例分析

1.1.1 左右按钮的显示与隐藏


// 等页面所有元素加载完后再执行js
window.addEventListener('load', function () {//this.alert('1');  // 测试// 1. 获取元素var arrow_l = this.document.querySelector('.arrow-l');var arrow_r = this.document.querySelector('.arrow-r');var focus = document.querySelector('.focus');// 2. 鼠标经过focus 就显示隐藏的左右按钮focus.addEventListener('mouseenter', function () {arrow_l.style.display = 'block';arrow_r.style.display = 'block';})// 鼠标离开focus 就隐藏左右按钮focus.addEventListener('mouseleave', function () {arrow_l.style.display = 'none';arrow_r.style.display = 'none';})})

1.1.2 动态生成小圆圈

// 3. 动态生成小圆圈,有几张图片我们就生成几个小圆圈var ul = focus.querySelector('ul');var ol = focus.querySelector('.circle');// console.log(ul.children.length);   testfor (var i = 0; i < ul.children.length; i++) {// 创建一个小livar li = this.document.createElement('li');// 把小li插入到ol里面ol.appendChild(li);}// 把ol的第一个小li设置类名为 currentol.children[0].className = 'current';

1.1.3 小圆圈的排他思想


排他思想的口诀: 干掉所有人,留下我自己

// 4. 小圆圈的排他思想 我们可以直接生成小圆圈的同时直接绑定点击事件li.addEventListener('click', function () {// 干掉所有人 把所有的小li 清除 current 类名for (var i = 0; i < ol.children.length; i++) {ol.children[i].className = ' ';}// 留下我自己 当前的小li 设置current 类名this.className = 'current';})

把这段代码写到上一段代码的for循环里面

1.1.4 点击小圆圈滚动图片

html

css

js

for (var i = 0; i < ul.children.length; i++) {// 创建一个小livar li = this.document.createElement('li');//记录当前小圆圈的索引号 通过自定义属性来做li.setAttribute('index', i);// 把小li插入到ol里面ol.appendChild(li);// 4. 小圆圈的排他思想 我们可以直接生成小圆圈的同时直接绑定点击事件li.addEventListener('click', function () {// 干掉所有人 把所有的小li 清除 current 类名for (var i = 0; i < ol.children.length; i++) {ol.children[i].className = ' ';}// 留下我自己 当前的小li 设置current 类名this.className = 'current';// 5. 点击小圆圈,移动图片 当然移动的是 ul// ul 的移动距离 小圆圈的索引号 乘以 图片的宽度 注意是往左走,所以是负值// 当我们点击了某个小li 就拿到当前小li 的索引号var index = this.getAttribute('index');//console.log(index); testvar focusWidth = focus.offsetWidth;//console.log(focusWidth); testanimate(ul, -index * focusWidth);})}

1.1.5 点击右侧按钮一次,就让图片滚动一张


将href的值 “#” 改写成 “javascript:;” ,使其被点击后不会跳到页面最顶端

将之前在for循环内部定义的focusWidth提到外面去定义,这样在外面也可以使用了。

将第一张的图片复制一份放到最后面

// 6. 点击右侧按钮一次,就让图片滚动一张var num = 0;arrow_r.addEventListener('click', function () {// alert('1'); test// 如果走到了最后复制的一张图片,此时,我们的ul 要快速复原 left 改为 0if (num == ul.children.length - 1) {ul.style.left = 0;num = 0;}num++;animate(ul, -num * focusWidth);})

1.1.6 克隆第一张图片

虽然右侧按钮的功能实现了,但我们还有代码改进的空间。
问题1: 我们的小li是直接在结构里面复制了一份,这样动态生成的小圆点也会随之增加。
问题2: 我们不知道里面到底有几张图片,在结构复制一份就写死了,能不能再自动化一些。

把之前在HTML文件里复制的第一张图片删掉。

// 6. 克隆第一张图片(li)放到ul 最后面var first = ul.children[0].cloneNode(true);ul.appendChild(first);

把该段代码写到上一段代码的前面。
因为在动态生成小圆圈之后再克隆了一份图片,所以小圆圈不会多一个。

1.1.7 点击右侧按钮,小圆圈跟随变化

// 7. 点击右侧按钮一次,就让图片滚动一张var num = 0;// circle 控制小圆圈的播放var circle = 0;arrow_r.addEventListener('click', function () {// alert('1'); test// 如果走到了最后复制的一张图片,此时,我们的ul 要快速复原 left 改为 0if (num == ul.children.length - 1) {ul.style.left = 0;num = 0;}num++;animate(ul, -num * focusWidth);// 8. 点击右侧按钮,小圆圈跟随一起变化,可以再声明一个变量控制小圆圈的播放circle++;// 如果circle == 4 说明走到最后我们克隆的这张图片了 我们就复原为0if (circle == ol.children.length) {circle = 0;}// 先清除其余小圆圈的current类名for (var i = 0; i < ol.children.length; i++) {ol.children[i].className = '';}// 留下当前的小圆圈的current类名ol.children[circle].className = 'current';})

小bug

1.当我们点击第三个小圆圈会显示第3张图片,然后点击右侧按钮,图片却显示第2张。这是因为我们播放下一张是由num控制的,而num这一个变量和之前做的点击小圆圈事件没有任何关系,所以它们就出现差异。

// 4. 小圆圈的排他思想 我们可以直接生成小圆圈的同时直接绑定点击事件li.addEventListener('click', function () {// 干掉所有人 把所有的小li 清除 current 类名for (var i = 0; i < ol.children.length; i++) {ol.children[i].className = ' ';}// 留下我自己 当前的小li 设置current 类名this.className = 'current';// 5. 点击小圆圈,移动图片 当然移动的是 ul// ul 的移动距离 小圆圈的索引号 乘以 图片的宽度 注意是往左走,所以是负值// 当我们点击了某个小li 就拿到当前小li 的索引号var index = this.getAttribute('index');//console.log(index); test//当我们点击了某个小li 就要把这个小li 的索引号给 numnum = index;//当我们点击了某个小li 就要把这个小li 的索引号给 circle circle是控制小圆圈自动播放circle = index;animate(ul, -index * focusWidth);})

1.1.8 左侧按钮功能实现

// 7. 点击右侧按钮一次,就让图片滚动一张var num = 0;// circle 控制小圆圈的播放var circle = 0;arrow_r.addEventListener('click', function () {// alert('1'); test// 如果走到了最后复制的一张图片,此时,我们的ul 要快速复原 left 改为 0if (num == ul.children.length - 1) {ul.style.left = 0;num = 0;}num++;animate(ul, -num * focusWidth);// 8. 点击右侧按钮,小圆圈跟随一起变化,可以再声明一个变量控制小圆圈的播放circle++;// 如果circle == 4 说明走到最后我们克隆的这张图片了 我们就复原为0// if (circle == ol.children.length) {//     circle = 0;// }// 代码优化 三元表达式circle = circle == ol.children.length ? 0 : circle;// 调用函数circleChange();})// 9. 左侧按钮做法arrow_l.addEventListener('click', function () {// alert('1'); test// 如果走到了最后复制的一张图片,此时,我们的ul 要快速复原 left 改为 0if (num == 0) {num = ul.children.length - 1;// ul向左走为负值ul.style.left = -num * focusWidth + 'px';}num--;animate(ul, -num * focusWidth);// 8. 点击右侧按钮,小圆圈跟随一起变化,可以再声明一个变量控制小圆圈的播放circle--;// // 如果circle < 0 说明第一张图片 则小圆圈要改为第4个小圆圈// if (circle < 0) {//     circle = ol.children.length - 1;// }// 代码优化 三元表达式circle = circle < 0 ? ol.children.length - 1 : circle;// 调用函数circleChange();})// 优化 左右按钮的小圆圈排他思想代码一样 就封装为一个函数,调用函数 减少代码重复量function circleChange() {// 先清除其余小圆圈的current类名for (var i = 0; i < ol.children.length; i++) {ol.children[i].className = '';}// 留下当前的小圆圈的current类名ol.children[circle].className = 'current';}

1.1.9 自动播放功能

// 10. 自动播放轮播图var timer = setInterval(function () {// 手动调用点击事件arrow_r.click();}, 2000);

鼠标经过 focus 就停止定时器
鼠标离开 focus 就开启定时器

1.2 节流阀

// flag 节流阀var flag = true;arrow_r.addEventListener('click', function () {if (flag) {flag = false; // 关闭节流阀// alert('1'); test// 如果走到了最后复制的一张图片,此时,我们的ul 要快速复原 left 改为 0if (num == ul.children.length - 1) {ul.style.left = 0;num = 0;}num++;animate(ul, -num * focusWidth, function () {flag = true; // 打开节流阀});// 8. 点击右侧按钮,小圆圈跟随一起变化,可以再声明一个变量控制小圆圈的播放circle++;// 如果circle == 4 说明走到最后我们克隆的这张图片了 我们就复原为0// if (circle == ol.children.length) {//     circle = 0;// }// 代码优化 三元表达式circle = circle == ol.children.length ? 0 : circle;// 调用函数circleChange();}})

1.3 代码展示

html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="index.css"><!-- 这个animate.js 必须写到 index.js的上面引入 --><script src="js/animate.js"></script><script src="js/index.js"></script>
</head><body><div class="focus"><!-- 左侧按钮 --><a href="javascript:;" class="arrow-l">&lt;</a><!-- 右侧按钮 --><a href="javascript:;" class="arrow-r">&gt;</a><!-- 核心的滚动区域 --><ul><li><a href="#"><img src="../images/focus.jpg" alt=""></a></li><li><a href="#"><img src="../images/focus1.jpg" alt=""></a></li><li><a href="#"><img src="../images/focus2.jpg" alt=""></a></li><li><a href="#"><img src="../images/focus3.jpg" alt=""></a></li></ul><!-- 小圆圈 --><ol class="circle"></ol></div>
</body></html>

css

* {margin: 0;padding: 0;
}li {list-style: none;
}a {text-decoration: none;
}.focus {position: relative;width: 721px;height: 455px;background-color: pink;margin: 100px auto;overflow: hidden;
}.focus ul {position: absolute;top: 0;left: 0;/* 使轮播图的使用图片都放到一行上去就需要扩大父盒子的宽度 */width: 600%;
}.focus ul li {float: left;
}.arrow-l,
.arrow-r {display: none;position: absolute;top: 50%;margin-top: -20px;width: 24px;height: 40px;background: rgba(0, 0, 0, .3);text-align: center;line-height: 40px;color: #fff;font-size: 18px;z-index: 2;
}.arrow-r {right: 0;
}.circle {position: absolute;bottom: 10px;left: 50px;
}.circle li {float: left;width: 8px;height: 8px;border: 2px solid rgba(255, 255, 255, 0.5);margin: 0 3px;border-radius: 50%;/*鼠标经过显示小手*/cursor: pointer;
}.current {background: #fff;
}

js

// 等页面所有元素加载完后再执行js
window.addEventListener('load', function () {//this.alert('1');  // 测试// 1. 获取元素var arrow_l = this.document.querySelector('.arrow-l');var arrow_r = this.document.querySelector('.arrow-r');var focus = document.querySelector('.focus');var focusWidth = focus.offsetWidth;//console.log(focusWidth); test// 2. 鼠标经过focus 就显示隐藏的左右按钮focus.addEventListener('mouseenter', function () {arrow_l.style.display = 'block';arrow_r.style.display = 'block';clearInterval(timer);timer = null; // 清除定时器变量})// 鼠标离开focus 就隐藏左右按钮focus.addEventListener('mouseleave', function () {arrow_l.style.display = 'none';arrow_r.style.display = 'none';timer = setInterval(function () {// 手动调用点击事件arrow_r.click();}, 2000);})// 3. 动态生成小圆圈,有几张图片我们就生成几个小圆圈var ul = focus.querySelector('ul');var ol = focus.querySelector('.circle');// console.log(ul.children.length);   testfor (var i = 0; i < ul.children.length; i++) {// 创建一个小livar li = this.document.createElement('li');//记录当前小圆圈的索引号 通过自定义属性来做li.setAttribute('index', i);// 把小li插入到ol里面ol.appendChild(li);// 4. 小圆圈的排他思想 我们可以直接生成小圆圈的同时直接绑定点击事件li.addEventListener('click', function () {// 干掉所有人 把所有的小li 清除 current 类名for (var i = 0; i < ol.children.length; i++) {ol.children[i].className = ' ';}// 留下我自己 当前的小li 设置current 类名this.className = 'current';// 5. 点击小圆圈,移动图片 当然移动的是 ul// ul 的移动距离 小圆圈的索引号 乘以 图片的宽度 注意是往左走,所以是负值// 当我们点击了某个小li 就拿到当前小li 的索引号var index = this.getAttribute('index');//console.log(index); test//当我们点击了某个小li 就要把这个小li 的索引号给 numnum = index;//当我们点击了某个小li 就要把这个小li 的索引号给 circle circle是控制小圆圈自动播放circle = index;animate(ul, -index * focusWidth);})}// 把ol的第一个小li设置类名为 currentol.children[0].className = 'current';// 6. 克隆第一张图片(li)放到ul 最后面var first = ul.children[0].cloneNode(true);ul.appendChild(first);// 7. 点击右侧按钮一次,就让图片滚动一张var num = 0;// circle 控制小圆圈的播放var circle = 0;// flag 节流阀var flag = true;arrow_r.addEventListener('click', function () {if (flag) {flag = false; // 关闭节流阀// alert('1'); test// 如果走到了最后复制的一张图片,此时,我们的ul 要快速复原 left 改为 0if (num == ul.children.length - 1) {ul.style.left = 0;num = 0;}num++;animate(ul, -num * focusWidth, function () {flag = true; // 打开节流阀});// 8. 点击右侧按钮,小圆圈跟随一起变化,可以再声明一个变量控制小圆圈的播放circle++;// 如果circle == 4 说明走到最后我们克隆的这张图片了 我们就复原为0// if (circle == ol.children.length) {//     circle = 0;// }// 代码优化 三元表达式circle = circle == ol.children.length ? 0 : circle;// 调用函数circleChange();}})// 9. 左侧按钮做法arrow_l.addEventListener('click', function () {if (flag) {flag = false;// alert('1'); test// 如果走到了最后复制的一张图片,此时,我们的ul 要快速复原 left 改为 0if (num == 0) {num = ul.children.length - 1;// ul向左走为负值ul.style.left = -num * focusWidth + 'px';}num--;animate(ul, -num * focusWidth, function () {flag = true;});// 8. 点击右侧按钮,小圆圈跟随一起变化,可以再声明一个变量控制小圆圈的播放circle--;// // 如果circle < 0 说明第一张图片 则小圆圈要改为第4个小圆圈// if (circle < 0) {//     circle = ol.children.length - 1;// }// 代码优化 三元表达式circle = circle < 0 ? ol.children.length - 1 : circle;// 调用函数circleChange();}})// 优化 左右按钮的小圆圈排他思想代码一样 就封装为一个函数,调用函数 减少代码重复量function circleChange() {// 先清除其余小圆圈的current类名for (var i = 0; i < ol.children.length; i++) {ol.children[i].className = '';}// 留下当前的小圆圈的current类名ol.children[circle].className = 'current';}// 10. 自动播放轮播图var timer = setInterval(function () {// 手动调用点击事件arrow_r.click();}, 2000);
})

animate.js

function animate(obj, target, callback) {// console.log(callback);  callback = function() {}  调用的时候 callback()// 先清除以前的定时器,只保留当前的一个定时器执行clearInterval(obj.timer);obj.timer = setInterval(function () {// 步长值写到定时器的里面// 把我们步长值改为整数 不要出现小数的问题// var step = Math.ceil((target - obj.offsetLeft) / 10);var step = (target - obj.offsetLeft) / 10;step = step > 0 ? Math.ceil(step) : Math.floor(step);if (obj.offsetLeft == target) {// 停止动画 本质是停止定时器clearInterval(obj.timer);// 回调函数写到定时器结束里面// if (callback) {//     // 调用函数//     callback();// }callback && callback(); // 短路运算符 如果callback 为true 就会执行后面的callback()}// 把每次加1 这个步长值改为一个慢慢变小的值  步长公式:(目标值 - 现在的位置) / 10obj.style.left = obj.offsetLeft + step + 'px';}, 15);
}

2. 案例:返回顶部


在之前 仿淘宝固定侧边栏的案例 中实现

js

// 3. 当我们点击了返回顶部模块,就让窗口滚动的页面的最上方goBack.addEventListener('click', function () {// alert(1);// 里面的x和y 不跟单位的 直接写数字即可// window.scroll(0, 0);// 因为是窗口滚动 所以对象是windowanimate(window, 0);});// 动画函数function animate(obj, target, callback) {// console.log(callback);  callback = function() {}  调用的时候 callback()// 先清除以前的定时器,只保留当前的一个定时器执行clearInterval(obj.timer);obj.timer = setInterval(function () {// 步长值写到定时器的里面// 把我们步长值改为整数 不要出现小数的问题// var step = Math.ceil((target - obj.offsetLeft) / 10);var step = (target - window.pageYOffset) / 10;step = step > 0 ? Math.ceil(step) : Math.floor(step);if (window.pageYOffset == target) {// 停止动画 本质是停止定时器clearInterval(obj.timer);// 回调函数写到定时器结束里面// if (callback) {//     // 调用函数//     callback();// }callback && callback(); // 短路运算符 如果callback 为true 就会执行后面的callback()}// 把每次加1 这个步长值改为一个慢慢变小的值  步长公式:(目标值 - 现在的位置) / 10// obj.style.left = window.pageYOffset + step + 'px';window.scroll(0, window.pageYOffset + step);}, 15);}

3. 案例:筋斗云

鼠标经过某个小li,筋斗云跟这到当前小i位置
鼠标离开这个小li,筋斗云复原为原来的位置
鼠标点击了某个小li,筋斗云就会留在点击这个小li的位置

3.1 案例分析

3.2 代码实现

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}ul {list-style: none;}body {background-color: black;}.c-nav {width: 900px;height: 42px;background: #fff url(images/rss.png) no-repeat right center;margin: 100px auto;border-radius: 5px;position: relative;}.c-nav ul {position: absolute;}.c-nav li {float: left;width: 83px;text-align: center;line-height: 42px;}.c-nav li a {color: #333;text-decoration: none;display: inline-block;height: 42px;}.c-nav li a:hover {color: white;}.cloud {position: absolute;left: 0;top: 0;width: 83px;height: 42px;background: url(images/cloud.gif) no-repeat;}</style><script src="animate.js"></script><script>window.addEventListener('load', function () {// 1. 获取元素var cloud = document.querySelector('.cloud');var c_nav = document.querySelector('.c-nav');var lis = c_nav.querySelectorAll('li');// 这个current 做为筋斗云的起始位置var current = 0;// 2. 给所有的小li绑定事件 for (var i = 0; i < lis.length; i++) {// (1) 鼠标经过把当前小li 的位置做为目标值lis[i].addEventListener('mouseenter', function () {animate(cloud, this.offsetLeft);});// (2) 鼠标离开就回到起始的位置 lis[i].addEventListener('mouseleave', function () {animate(cloud, current);});// (3) 当我们鼠标点击,就把当前位置做为目标值lis[i].addEventListener('click', function () {current = this.offsetLeft;});}})</script>
</head><body><div class="c-nav"><span class="cloud"></span><ul><li class="current"><a href="">首页新闻</a></li><li><a href="#">师资力量</a></li><li><a href="#">活动策划</a></li><li><a href="#">企业文化</a></li><li><a href="#">招聘信息</a></li><li><a href="#">公司简介</a></li><li><a href="#">我是佩奇</a></li><li><a href="#">啥是佩奇</a></li></ul></div>
</body></html>

JavaScript—— 常见网页特效相关推荐

  1. JavaScript 之 网页特效篇(offset系列、client系列、scroll系列、动画函数封装、常见网页特效)

    网页特效 1.元素偏移量 offset 系列 offset 翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移).大小等. 获得元素距离带有定位父元素的位置 可以获取 ...

  2. WebAPI第四天学习总结—— 常见网页特效案例(轮播图、节流阀、返回顶部、筋斗云案例)

    常见网页特效案例 案例:网页轮播图 轮播图也称为焦点图,是网页中比较常见的网页特效. 效果: 功能需求: ​ 1.鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮. ​ 2.点击右侧按钮一次,图片往 ...

  3. 05【JS 高级】-【PC端网页特效】元素偏移量 offset 系列, 元素可视区 client 系列, 元素滚动 scroll 系列, 动画函数封装, 常见网页特效案例

    04[JS 高级]-[PC端网页特效] 学习内容: 元素偏移量 offset 系列, 元素可视区 client 系列, 元素滚动 scroll 系列, 动画函数封装, 常见网页特效案例 1. 元素偏移 ...

  4. JS学习之BOM | 常见网页特效 | 轮播图 | 返回顶部 | 筋斗云案例

    封校后终于回家咯给即将中考的弟弟加油鼓劲,下午还和涛哥约会但是时间太短了.继续学习吧 许个愿,让我中奖让我中奖让我中奖 常见网页特效案例 案例:网页轮播图(必须掌握) 轮播图装的图片和外面盒子一样大小 ...

  5. 【HTML③】JavaScript基础、使用JavaScript制作网页特效、使用前端库及UI框架快速开发

    [HTML③]JavaScript基础.使用JavaScript制作网页特效.使用前端库及UI框架快速开发 八.JavaScript基础 1.JavaScript JavaScript简称JS是用于制 ...

  6. PC端网页特效 | 常见网页特效案例

    目录 案例:网页轮播图 轮播图JS全部代码 节流阀 案例:返回顶部 JS代码为 案例:筋头云案例 案例:网页轮播图 轮播图也称为焦点图,是网页中比较常见的网页特效. 功能需求: 鼠标经过轮播图模块,左 ...

  7. Web APIs:PC 端网页特效--常见网页特效案例--轮播图及节流阀思想

    轮播图也称为焦点图,是网页中比较常见的网页特效. 功能需求: 1. 鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮. 2. 点击右侧按钮一次,图片往左播放一张,以此类推, 左侧按钮同理. 3. 图 ...

  8. 利用Javascript制作网页特效(其他常见特效)

    设置为首页和加入收藏夹 ①:在body标签内输入以下代码: <a onclick="this.style.behavior='url(#default#homepage)';this. ...

  9. 利用Javascript制作网页特效(时间特效)

    在网页中经常可以看到各种各样的动态时间显示,在网页中合理地使用时间可以增加网页的时效感. 显示当前时间 getHours().getMinutes().getSeconds()分别获得当前小时数.当前 ...

  10. Javascript Web网页特效 收录大全

    前言 本编文章纯属个人形为,如果对您有帮助将不胜感激. canvas 实例 注意!注意!下载链接 关于背景图片切换动画 实例 百度联盟 阿里云 动画实例 <!DOCTYPE html> & ...

最新文章

  1. iMeta期刊顾问James M Tiedje当选中国科学院外籍院士
  2. centos7 keepalived安装记录
  3. python函数的继承_Python 继承
  4. 用C实现的一个Bash脚本
  5. Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)
  6. HDU2019 数列有序!
  7. 宝马自然语音识别体验,语音识别率和速度都有了显著提升
  8. 在VMware安装Ubuntu 16.04
  9. 二次量子化与量子计算化学
  10. html中什么字体的英文好看,英语字体有哪些?英语哪种字体最好看
  11. PDF识别文字、关键字,获取对应坐标,用于插入电子签名
  12. 等差数列计算机函数公式大全,等差数列公式大全
  13. unity教程之Unity引擎
  14. windows访问控制列表ACL
  15. python清空屏幕
  16. verilog中always和initial的区别
  17. 在url中输入ftp的用户名和密码
  18. java 中的socket_Java中Socket用法详解
  19. 网站建设如何做好页面布局合理
  20. VR技术的发展趋势,未来有哪些展望?

热门文章

  1. gerber文件如何转为PCB文件
  2. Linux 教程: (Linux基础+命令大全)
  3. python语言与存货管理,(二)实现对库存管理系统的模块化编程
  4. centos是什么操作系统
  5. 凯撒/摩斯/栅栏/维吉尼亚/元音密码加解密的Python实现
  6. 高程(DEM) ASCII数据获取
  7. 项目验收文档模板(二)
  8. S7-300中各个块之间的联系以及OB块的功能和应用场合
  9. 《操作系统》试题及答案
  10. 从神话诗歌到奇幻科学的人类探索史·《月亮》·总篇(有配图)