[TOC]
## 1. 简单的fadeIn-fadeOut
![](https://box.kancloud.cn/ef94c2a54f13d2a8f0a38dd69505a494_656x440.gif)
~~~
<style>
* {
padding: 0;
margin: 0;
}
img {
width: 400px;
}
#parent {
margin-left: auto;
margin-right: auto;
position: relative;
width: 400px;
border: 1px solid;
padding: 20px;
border-radius: 3px;
}
#fade {
width: 100%;
height: 100%;
position: absolute;
background: #2dae2d;
opacity: 0.3;
left: 0;
top: 0;
z-index: 10;
}
</style>
~~~
~~~
<div id="parent">
<img src="images/01.png" alt="">
<div id="fade"></div>
</div>
<script>
//使用定时器
/*
1.执行事件时先清除定时器
2.定时器中的内容,用if-else 来判断上下限
*/
var parent = document.getElementById("parent");
var fade = document.getElementById("fade");
var timer;
var opacity = getComputedStyle(fade).opacity * 100;
parent.onmouseover = function () {
clearTimeout(timer);
timer = setInterval(function () {
console.log(opacity + 2)
if (opacity > 70) {
clearTimeout(timer);
} else {
opacity += 2;
fade.style.opacity = opacity / 100;
}
}, 50)
}
parent.onmouseout = function () {
clearInterval(timer);
timer = setInterval(function () {
if (opacity < 30) {
clearInterval(timer);
} else {
opacity -= 2;
fade.style.opacity = opacity / 100;
}
}, 50)
}
</script>
~~~
## 封装后的fadeIn-fadeOut
~~~
<script>
//使用定时器
/*
1.执行事件时先清除定时器
2.定时器中的内容,用if-else
*/
var parent = document.getElementById("parent");
var fade = document.getElementById("fade");
var timer;
var opacity = getComputedStyle(fade).opacity * 100;
/*
1.进入事件后清除定时器
2.在定时器中,loop的代码和到达临界值清除定时器的代码,用if-else分割
*/
parent.onmouseover = function () {
animate(70,2);
}
parent.onmouseout = function () {
animate(30,-2);
}
function animate(reach,add){
clearInterval(timer);
timer = setInterval(function () {
if (opacity == reach) {
clearInterval(timer);
} else {
opacity += add;
fade.style.opacity = opacity / 100;
}
}, 100)
}
</script>
~~~
- 效果实例
- 1.点击增加高度
- 2.tab页面切换
- 3. 列表切换
- 4. 隔行变色
- 5. swiper 轮播
- 6.vue
- 7.定时器
- 8. 向表格中添加数据
- 9 瀑布流
- 1.JavaScript基础
- 1. 变量
- 2. 调试
- 3.数据类型
- 4.转换
- 5.控制语句
- 6.运算
- 7. this
- 8 JSON对象和javascript对象的相互转换
- 2.JavaScript的控制语句
- 1. 基本控制语句
- 2.节点
- 2.1DOM补充
- 3. 函数
- js的模块化如何解决
- 不知道有什么用的
- 4.数组
- 5. String
- 补充
- 6.Ajax
- 1. 原生Ajax
- 2. HTTP/get/post
- 3.jQuery-Ajax
- 4.跨域
- 5.axios
- 6.封装
- Ajax效果
- ajax补充
- 7. 正则
- 1.创建正则表达式
- 2. 正则的api
- 3.正则语法
- 4.例子
- 量词
- 8.面向对象
- 1.原型
- ES6
- 模块化
- 1.回调地狱
- 什么是回调地狱
- 简单封装
- promise解决回调地狱
- generator解决回调地狱
- async解决回调地狱
- 2.封装
- Ajax,promise
- JavaScript难点
- 1. 闭包/作用域
- 2.原型链
- 3. 兼容性
- 适配
- JavaScript小效果
- 字符串截取