文档类型:<br> 1.超文本标记语言,HTML(Help Text Markup Language)W3C万维网联盟维护<br> -用来显示数据,重点是如何显示数据<br> -使用定义的标准标签,html标签作为根元素<br> 2.可扩展标记语言,XML(Extensable Markup Language)<br> -用来描述数据,重点是什么是数据,如何存放数据<br> -与HTML一样,由标签、属性和子节点组成<br> -标签名可根据描述数据的语义进行定义,可以是英文或者汉字
笔记部分内容
文档的类型
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#box {
width: 1000px;
height: 300px;
border: 1px solid #ccc;
position: relative;
overflow: hidden;
}
#box div {
width: 400px;
height: 300px;
background-color: orangered;
position: absolute;
background-image: url("1.jpg");
}
#box div:nth-child(2) {
left: 400px;
background-color: #ccc;
background-image: url("2.jpg");
}
#box div:nth-child(3) {
left: 600px;
background-color: red;
background-image: url("3.jpg");
}
#box div:nth-child(4) {
left: 800px;
background-color: pink;
background-image: url("4.jpg");
}
</style>
</head>
<body>
<div id="box">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</body>
<script>
window.onload = function () {
//获取事件源
var box = document.getElementById('box')
var divs = box.querySelectorAll('div')
var left = [
{left: 0},
{left: 200},
{left: 400},
{left: 600}
]
var previous = [
{left: 0},
{left: 400},
{left: 600},
{left: 800}
]
for (var i = 0; i < divs.length; i++) {
divs[i].index = i
//注册事件 鼠标经过时当前图片时且前面的图片都会移动到目标位置
divs[i].onmouseover = function () {
var index = this.index
for (var i = 1; i <= index; i++) {
animate(divs[i], left[i])
}
}
//鼠标离开时复位到目标位置 如果鼠标移动到后面的图片不会复位(因为触发onmouseover事件后目标位置就是当前位置)
divs[i].onmouseout = function () {
var index = this.index
for (var i = 1; i <= index; i++) {
animate(divs[i], previous[i])
}
}
}
//给事件源注册事件
/**
* 封装一个animate函数
* @param o
* @param json
* @param fn
*/
function animate(o, json, fn) {
if (o.timeId) {
clearInterval(o.timeId) //清除定时器,保证只有一个定时器在运行
}
o.timeId = setInterval(function () {
var flag = true
for (var key in json) {
if (key == 'opacity') {
var leader = parseInt(getAttr(o, key) * 100 || 0)//先放大100倍,这样才能保证步长至少为1px才有效
var target = parseInt(json[key] * 100)
var step = (target - leader) / 10
step = step > 0 ? Math.ceil(step) : Math.floor(step)
leader += step
o.style.opacity = leader / 100 //计算后除于100即可
} else if (key == 'zIndex') {
o.style.zIndex = json[key] //直接设置为目标层级即可,无需步进
} else {
var leader = parseInt(getAttr(o, key)) //只保留整数
var target = parseInt(json[key]) //只保留整数
var step = (target - leader) / 5
step = step > 0 ? Math.ceil(step) : Math.floor(step)
leader += step
o.style[key] = leader + 'px'
}
if (target != leader) { //只要有一个属性没有到达目标位置 flag就为假 开关思想
flag = false
}
}
if (flag) {
clearInterval(o.timeId)
if (typeof fn == 'function') { //如果参数是函数就调函数
fn()
}
}
}, 15)
}
function getAttr(o, attr) {
if (o.currentStyle) {
return o.currentStyle[attr]
} else {
return window.getComputedStyle(o, null)[attr]
}
}
}
</script>
</html>
文档类型:<br> 1.超文本标记语言,HTML(Help Text Markup Language)W3C万维网联盟维护<br> -用来显示数据,重点是如何显示数据<br> -使用定义的标准标签,html标签作为根元素<br> 2.可扩展标记语言,XML(Extensable Markup Language)<br> -用来描述数据,重点是什么是数据,如何存放数据<br> -与HTML一样,由标签、属性和子节点组成<br> -标签名可根据描述数据的语义进行定义,可以是英文或者汉字