![](https://box.kancloud.cn/4cd925aed77fad47178fd95e252ff188_622x283.gif)
样式
```
<style>
#parent{
width:540px;
height: 215px;
position: relative;
border:1px solid #000;
}
#parent>img{
width:500px;
padding: 20px;
}
#fade{
width: 540px;
height: 215px;
position: absolute;
left: 0px;
top:0px;
background: #4a4266;
opacity: 0.4;
}
</style>
```
结构
```
<body>
<div id="parent">
<img src="images/01.jpg" alt="">
<div id="fade"></div>
</div>
</body>
```
JS(未进行函数封装)
```
var parent = document.getElementById("parent");
var fade = document.getElementById("fade");
var opacity = getComputedStyle(fade).opacity*100;
var timer;
// 未封装
parent.onmouseover = function(){
clearInterval(timer);
//如果不清除则鼠标移上几次就会增加几个定时器,每个定时器执行下面代码,透明度加快
timer = setInterval(function(){
if(opacity == 70){
clearInterval(timer);
//停止继续累加透明度
}
else{
opacity += 2;
fade.style.opacity = opacity/100;
console.log(opacity);
}
},100)
}
parent.onmouseout = function(){
clearInterval(timer);
timer = setInterval(function(){
if(opacity == 40){
clearInterval(timer);
}
else{
opacity -= 2;
fade.style.opacity = opacity/100;
}
},100)
}
```
封装函数
```
parent.onmouseover = function(){
opacity_change(90,2);
}
parent.onmouseout = function(){
opacity_change(40,-2);
}
function opacity_change(reach,add){
clearInterval(timer);
timer = setInterval(function(){
if(opacity == reach){
clearInterval(timer);
}
else{
opacity += add;
console.log(opacity/100);
fade.style.opacity = opacity/100;
}
},500)
}
```
- 1.JS的基础知识
- (1)调试
- (2)变量
- (3)数据类型
- 数据类型之间的转换
- (4)全局变量和局部变量
- (5)运算符和表达式
- (6)数组
- 2.控制语句DOM,BOM,事件
- (1)控制语句
- (2)DOM的基础
- 节点
- 改变样式
- DOM事件
- 3.函数
- (1)声明函数
- (2)构造函数
- (3)函数的参数
- (4)函数的传参
- (5)改变this
- (6)重载
- (7)回调函数
- 4.数组
- (1)创建数组
- (2)增删改查
- (3)字符串与数组的转换
- 5.正则
- (1)创建正则
- (2)字符串中支持正则
- (3)语法
- 最核心的元字符
- 6.ajax
- (1)原生ajax
- (2)http,get,post
- (3)跨域
- (4)jQuery-ajax
- (5)axios
- 7.面向对象
- (1)原型
- (2)原型链,继承
- (3)多态
- 8.es6小结
- 9.js+canvas实现验证码
- 10.js的作用域
- 11.闭包
- 实例
- toggle
- 图片切换
- swiper
- 遮罩颜色渐变
- 表格添加
- 瀑布流
- ajax数据请求渲染
- 百度地图