黑马程序员技术交流社区

标题: 技术交流 [打印本页]

作者: 17681267957    时间: 2019-1-16 18:09
标题: 技术交流
技术帖
认识JavaScript
Javascript是一种运行在客户端的脚本语言(不需要翻译,运行过程中有js解释器逐行来进行解释并执行),最开始javsscript的被用于表单验证
浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎
渲染引擎:用来解析HTML与CSS,俗称内核。比如 chrome 浏览器的 blink
JS引擎 : 我们成为js 解释器 用来 读取网页中的JavaScript代码,对其处理后运行 比较经典 就是 chrome 浏览器的 V8
webAPI介绍
浏览器提供的一套操作 浏览器功能 页面元素 API (BOM和DOM)
此处的 Web API 特指浏览器提供的一系列API(一组方法),即操作网页的一系列工具。例如:操作html标签、操作页面地址的方法。
注意:Web API在后面的课程中有其它含义。
Web API概览
MDN-Web API
JavaScript的组成ECMAScript - JavaScript的核心
定义了JavaScript 的语法规范
JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与具体实现无关
BOM(Browser Object Mode) - 浏览器对象模型
一套操作浏览器的API。
通过BOM可以操作浏览器窗口,比如:弹出框、控制浏览器跳转、获取分辨率等 。
DOM(Document Object Model) - 文档对象模型
一套操作页面元素(标签)的API。
DOM可以把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作。
DOM介绍DOM标准
文档对象模型(Document Object Model,简称DOM),是 W3C 组织推荐的处理可扩展标记语言的标准编程接口
DOM是W3C组织制定的一套处理 html和xml文档的规范,所有的浏览器都遵循了这套标准。
它是一种与平台和语言无关的应用程序接口(API),它允许程序和脚本动态地访问和更新文档的内容、结构和样式。
Dom技术使得用户页面可以动态地变化,如可以动态地显示或隐藏一个元素,改变它们的属性,增加一个元素等,Dom技术使得页面的交互性大大地增强。
DOM文档树
DOM又称为文档树模型,把文档映射成树形结构,通过节点对象对其处理,处理的结果可以加入到当前的页面。
文档:一个网页可以称为文档
节点:网页中的所有内容,在文档树中都是节点(标签、属性、文本、注释等
元素:网页中的标签
属性:标签的属性
轮播图的实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
* {
padding: 0;
margin: 0;
list-style: none;
border: 0;
}
.all {
width: 500px;
height: 200px;
padding: 7px;
border: 1px solid #ccc;
margin: 100px auto;
position: relative;
}
.screen {
width: 500px;
height: 200px;
overflow: hidden;
position: relative;
}
.screen li {
width: 500px;
height: 200px;
overflow: hidden;
float: left;
}
.screen ul {
position: absolute;
left: 0;
top: 0px;
width: 3000px;
}
.all ol {
position: absolute;
right: 10px;
bottom: 10px;
line-height: 20px;
text-align: center;
}
.all ol li {
float: left;
width: 20px;
height: 20px;
background: #fff;
border: 1px solid #ccc;
margin-left: 10px;
cursor: pointer;
}
.all ol li.current {
background: yellow;
}
#arr {
display: none;
z-index: 1000;
}
#arr span {
width: 40px;
height: 40px;
position: absolute;
left: 5px;
top: 50%;
margin-top: -20px;
background: #000;
cursor: pointer;
line-height: 40px;
text-align: center;
font-weight: bold;
font-family: '黑体';
font-size: 30px;
color: #fff;
opacity: 0.3;
border: 1px solid #fff;
}
#arr #right {
right: 5px;
left: auto;
}
</style>
</head>
<body>
<div class="all" id='box'>
<div class="screen">
<ul>
<li><img src="images/wf1.jpg" width="500" height="200"/></li>
<li><img src="images/wf2.jpg" width="500" height="200"/></li>
<li><img src="images/wf3.jpg" width="500" height="200"/></li>
<li><img src="images/wf4.jpg" width="500" height="200"/></li>
<li><img src="images/wf5.jpg" width="500" height="200"/></li>
</ul>
<ol>
</ol>
</div>
<div id="arr"><span id="left"><</span><span id="right">></span></div>
</div>
<script src="common.js"></script>
<script src="animate.js"></script>
<script>
// 获取元素
var box = my$('box');
var screen = box.children[0];
var ul = screen.children[0];
var ol = screen.children[1];
// 箭头 arrow
var arr = my$('arr');
var arrLeft = my$('left');
var arrRight = my$('right');
// 图片的宽度
var imgWidth = screen.offsetWidth;
// 1 动态生成序号
// 页面上总共有多少张图片 5 没有克隆的li
var count = ul.children.length;
for (var i = 0; i < count; i++) {
var li = document.createElement('li');
ol.appendChild(li);
setInnerText(li, i + 1);
// 2 点击序号 动画的方式 切换图片
li.onclick = liClick;
// 让当前li记录他的索引
// 设置标签的自定义属性
li.setAttribute('index', i);
}
function liClick() {
// 2.1 取消其它li的高亮显示,让当前li高亮显示
for (var i = 0; i < ol.children.length; i++) {
var li = ol.children;
li.className = '';
}
// 让当前li高亮显示
this.className = 'current';
// 2.2 点击序号,动画的方式切换到当前点击的图片位置
// 获取自定义属性
var liIndex = parseInt(this.getAttribute('index'));
animate(ul, -liIndex * imgWidth);
// 全局变量index 和 li中的index保持一致
index = liIndex;
}
// 让序号1高亮显示
ol.children[0].className = 'current';
// 3 鼠标放到盒子上显示箭头
box.onmouseenter = function () {
arr.style.display = 'block';
// 清除定时器
clearInterval(timerId);
}
box.onmouseleave = function () {
arr.style.display = 'none';
// 重新开启定时器
timerId = setInterval(function () {
arrRight.click();
}, 2000);
}
// 4 实现上一张和下一张的功能
// 下一张
var index = 0; // 第一张图片的索引
arrRight.onclick = function () {
// 判断是否是克隆的第一张图片,如果是克隆的第一张图片,此时修改ul的坐标,显示真正的第一张图片
if (index === count) {
ul.style.left = '0px';
index = 0;
}
//
// 总共有5张图片,但是还有一张克隆的图片 克隆的图片的索引是5
// 4 < 5
index++;
if (index < count) {
// animate(ul, -index * imgWidth);
// //
// 获取图片对应的序号,让序号点击
ol.children[index].click();
} else {
//如果是最后一张图片 以动画的方式,移动到克隆的第一张图片
animate(ul, -index * imgWidth);
// 取消所有序号的高亮显示,让第一序号高亮显示
for (var i = 0; i < ol.children.length; i++) {
var li = ol.children;
li.className = '';
}
ol.children[0].className = 'current';
}
}
// 上一张
arrLeft.onclick = function () {
// 如果当前是第一张图片,此时要偷偷的切换到最后一张图片的位置(克隆的第一张图片)
if (index === 0) {
index = count;
ul.style.left = - index * imgWidth + 'px';
}
index--;
ol.children[index].click();
// // 如果不是第一张的话 index--
// if (index > 0) {
// index--;
// // animate(ul, -index * imgWidth);
// ol.children[index].click();
// }
}
// 无缝滚动
// 获取ul中的第一个li
var firstLi = ul.children[0];
// 克隆li cloneNode() 复制节点
// 参数 true 复制节点中的内容
// false 只复制当前节点,不复制里面的内容
var cloneLi = firstLi.cloneNode(true);
ul.appendChild(cloneLi);
// 5 自动切换图片
var timerId = setInterval(function () {
// 切换到下一张图片
arrRight.click();
}, 2000);
</script>
</body>
</html>
认识jQuery
1.1 jQuery介绍
jQuery是一个快速、简洁、免费且开放源代码的JavaScript框架代码库。
jQuery设计的宗旨是“write LessDo More”,即倡导写更少的代码,做更多的事情。
1.2 jQuery的好处
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps10DC.tmp.jpg






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2