我们通过
hello

<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
head>
<style>
div{
width: 400px;
height: 40px;
margin: 10px;
}
.a{
border-width: 2px;
border-color: red;
border-style: solid;
border-right-color: green;
border-bottom-style: dashed;
}
.b1{
border: 10px solid red;
}
.b2{
border: 10px dotted red;
}
.b3{
border: 10px dashed red;
}
.b4{
border: 10px double red;
}
.b5{
border: 10px groove red;
}
.b6{
border: 10px ridge red;
}
.b7{
border: 10px inset red;
}
.b8{
border: 10px outset red;
}
style>
<body>
<div class='a'>div>
<div class='b1'>实心线div>
<div class='b2'>点线div>
<div class='b3'>虚线div>
<div class='b4'>双线div>
<div class='b5'>3D凹槽div>
<div class='b6'>3D脊边框div>
<div class='b7'>div>
<div class='b8'>div>
body>
html>

5. 轮廓属性
- 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。
- 轮廓和边框的区别:
▹ 边框 (border) 可以是围绕元素内容和内边距的一条或多条线;
▹ 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。
- CSS outline 属性规定元素轮廓的样式、颜色和宽度。


6. 盒子模型
- 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。
- CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。
- 盒子模型允许我们在其它元素和周围元素边框之间的空间放置元素。
- 下面的图片说明了盒子模型(Box Model):

- margin(外边距) - 盒子与盒子之间的距离
- border(边框) - 盒子的保护壳
- padding(内边距/填充) - 内填充,盒子边与内容之间的距离
- content(内容) - 盒子的内容,显示的文本或图像

CSS定位
- 块级元素:h1~h6,p, div 等,自上而下,垂直排列(自动换行);可以改变宽高

- 行内元素:a,b,span,等,从左向右,水平排列(不会换行);不能改变宽高

- 行内块元素:input,img等,从左向右,水平排列(自动换行);可以改变宽高

2. 浮动定位
- 让元素“飞”起来。不仅可以靠着左边或右边。还可以消除“块级”的霸道特性(独自占一行)。
- float取值:
▹ none :不浮动
▹ left:贴着左边 浮动
▹ right:贴着右边 浮动

3. 相对定位
- 和原来的位置进行比较,进行移动定位(偏移)

4. 绝对定位
- 本元素与已定位的祖先元素的距离
▹ 如果父级元素定位了,就以父级为参照物;
▹ 如果父级没定位,找爷爷级,爷爷定位了,以爷爷为参照物。
▹ 如果爷爷没定位,继续向上找,都没定位的话,body是最终选择。
<div class="yeye">
<div class="father">
<div class="a">1div>
<div class="b">2div>
<div class="c">3div>
div>
div>
- 以父节点作为参照物

- 以爷爷节点作为参照物

5. 固定定位
- 将元素的内容固定在页面的某个位置,当用户向下滚动页面时元素框并不随着移动

6. z-index
- 如果有重叠元素,使用z轴属性,定义上下层次。

- 注意:
▹ z轴属性,要配合相对或绝对定位来使用。
▹ z值没有额定数值(整型就可以,具体用数字几,悉听尊便)
4、CSS3新特性
圆角
- border-radius:左上 右上 右下 左下;
- border-radius:四个角;
- border-radius:50%; 圆形

盒子阴影
- box-shadow:1 2 3 4 5;
1:水平偏移
2:垂直偏移
3:模糊半径
4:扩张半径
5:颜色

渐变
1. 线性渐变
background:linear-gradient([方向/角度],颜色列表);
<style>
div{
width: 200px;
height: 60px;
margin: 10px;
}
.a1 {
background: linear-gradient(red,black);
}
.a2 {
background: linear-gradient(red,black,pink, green);
}
.a3 {
background: linear-gradient(to left,red,black);
}
.a4 {
background: linear-gradient(to top left,red,black);
}
.a5 {
background: linear-gradient(30deg,red,black);
}
style>
<body>
<div class="a1">div>
<div class="a2">div>
<div class="a3">div>
<div class="a4">div>
<div class="a5">div>
body>

2. 径向渐变
background: radial-gradient(颜色列表);
<style>
div {
width: 200px;
height: 200px;
margin: 10px;
}
.a1 {
background: radial-gradient(red, black);
}
.a2 {
background: radial-gradient(red, black, pink, green);
}
.a3 {
border-radius: 50%;
background: radial-gradient(red, black);
}
style>
<body>
<div class="a1">div>
<div class="a2">div>
<div class="a3">div>
body>

背景
1. 背景位置
- background-origin:指定了背景图像的位置区域
▹ border-box : 背景贴边框的边
▹ padding-box : 背景贴内边框的边
▹ content-box : 背景贴内容的边
<style>
div {
background: url("img/1.jpg") no-repeat;
width: 200px;
height: 80px;
margin: 20px;
border: 10px dashed black;
padding: 20px;
}
.a {
background-origin: border-box;
}
.b {
background-origin: padding-box;
}
.c {
background-origin: content-box;
}
style>
<body>
<div class="a">div>
<div class="b">div>
<div class="c">div>
body>

2. 背景裁切
- background-clip:
▹ border-box 边框开切
▹ padding-box 内边距开切
▹ content-box 内容开切
<style>
div {
width: 200px;
height: 80px;
border: 10px dashed red;
background-color: darkcyan;
margin: 20px;
padding: 20px;
}
.a {
background-clip: border-box;
}
.b {
background-clip: padding-box;
}
.c {
background-clip: content-box;
}
style>
<body>
<div class="a">div>
<div class="b">div>
<div class="c">div>
body>

3. 背景大小
- background-size:
▹ cover 缩放成完全覆盖背景区域最小大小
▹ contain 缩放成完全适应背景区域最大大小
<style>
div {
background: url("img/1.jpg") no-repeat;
width: 200px;
height: 100px;
border: 2px solid red;
margin: 20px;
}
.a {
background-size: cover;
}
.b {
background-size: contain;
}
style>
<body>
<div class="a">div>
<div class="b">div>
body>

过渡动画
1. 过渡
- 从一个状态到另一个状态,中间的“缓慢”过程;
缺点是,控制不了中间某个时间点。
transition{1 2 3 4}
- 过渡或动画模拟的css属性
- 完成过渡所使用的时间(2s内完成)
- 过渡函数。。。

- 过渡开始出现的延迟时间
transition: width 2s ease 1s;
目前,css3只开发出部分的过渡属性,下图所示:

<style>
div{
width: 100px;
height: 50px;
border: 2px solid red;
}
.a{
transition: width 2s linear 1s;
}
div:hover{
width: 300px;}
style>
<body>
<div class="a">Hello,拉勾div>
body>
2. 动画
- 从一个状态到另一个状态,过程中每个时间点都可以控制。
- 关键帧:@keyframes 动画帧 { from{} to{} } 或者{ 0%{} 20%{}… }
- 动画属性:animation{ 1 , 2 , 3 , 4 , 5 }
1:动画帧
2:执行时间
3:过渡函数
4:动画执行的延迟(可省略)
5:动画执行的次数
- 需求1:一个 元素从左向右移动,3秒内执行2次
<style>
div{
width: 700px;
border: 1px solid red;
}
@keyframes x{
from{
margin-left: 0px;}
to{
margin-left: 550px;}
}
img{
animation: x 3s linear 2;
}
style>
<body>
<div>
<img src="img/cat.gif">
div>
body>
- 需求2:一个 元素从左向右移动,3秒内执行完成。无限次交替执行
infinite:无限次
alternate:来回执行(交替,一去一回)
<style>
.wai{
width: 600px;
height: 100px;
border: 2px solid red;
}
.nei{
width: 40px;
height: 80px;
margin: 5px;
background: red;
}
.nei{
animation: x 3s linear infinite alternate;
}
@keyframes x{
0%{
margin-left: 0px; }
25%{
background: yellowgreen; }
50%{
background: goldenrod; }
75%{
background: palevioletred;}
100%{
background: coral;
margin-left: 550px;
}
}
style>
<body>
<div class="wai">
<div class="nei">div>
div>
body>
任务三 (JavaScript)
1、JavaScript介绍
- 虽然是java作为前缀,但java和javascript的关系,就像老婆和老婆饼之间的关系,没有一毛钱关系!
- 网景公司在Netscape2.0首先推出了JavaScript
- JavaScript 的正式名称是 “ECMAScript”,此标准由 ECMA 组织发展和维护,简称“js”
- JavaScript 是一种网页编程技术,用来向 HTML 页面添加交互行为
- JavaScript 是一种基于对象和事件驱动的解释性脚本语言,直接嵌入 HTML 页面,由浏览器解释执行代码,不进行预编译。
js的特点
- 可以使用任何文本编辑工具编写,只需要浏览器就可以执行程序 (后面会学习不用浏览器也能运行)
- 解释执行:事先不编译,逐行执行
- 基于对象:内置大量现成对象(不需要new)
- 适宜:
▹ 客户端数据计算(客户端可以做到的事加减乘除让客户端做,就不给服务器加负担了)
▹ 客户端表单合法性验证(密码是否为8位数,客户端判断完之后发给服务端)
▹ 浏览器事件的触发
▹ 网页特殊显示效果制作(网页游戏)
js的组成
- ECMAScript:定义核心语法,关键字,运算符,数据类型等系列标准
- DOM:文档对象模型,将一个html页面的所有节点看成是一个一个的对象。更有层次感的管理每一个节点。
- BOM:浏览器对象模型,是对浏览器窗口进行访问和操作。使用 BOM,开发者可以移动窗口、改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。使 BOM 独树一帜且又常常令人怀疑的地方在于,它只是 JavaScript 的一个部分,没有任何相关的准。
▹ 弹出新的浏览器窗口
▹ 移动、关闭浏览器窗口以及调整窗口大小
▹ 提供 Web 浏览器详细信息的定位对象
▹ 提供用户屏幕分辨率详细信息的屏幕对象
▹ 对 cookie 的支持
▹ IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX对象,进而实现ajax局部刷新技术
2、HTML和JavaScript结合方式
行内脚本
- 点击按钮(触发)
- 弹框(具体的操作)
<button onclick="alert('弹框测试')">点我一下button>
<h2 onclick="alert('hello');">点我试试h2>
内部脚本
- 使用
- 标准是写在head和body之间(脖子位置),但其实只要写在html文件内部就可以,无论什么位置
外,内部,都可以。
<body>
<script>
alert("弹框");
script>
body>
外部脚本
- 在项目根目录下创建一个目录js
- 在js目录中创建一个文件,后缀名是.js
- 在html页面中,使用
<script src="js/xx.js">script>
- 以上使用脚本的三种方式的优先级,谁在上,谁先执行。因为是解释性语言。
3、JavaScript的使用
变量
- 因为js是弱类型语言,所以,在定义变量的时候,所有的数据类型都是var
- 声明变量: var x ; var x,y;
- 数值类型:number
▹ 不区分整型数值和浮点型数值
▹ 所有数字都采用 64 位浮点格式存储,类似于double 格式
- 字符串:string
▹ 首尾由单引号或双引号括起
var aa="欢迎来到\"JavaScript世界";
- 布尔类型:
▹ 仅有两个值:true和false也代表1和0
▹ 实际运算中true=1,false=0
1. 自动类型转换
数字 + 字符串:数字转换为字符串 10+’a’ -> 10a
数字 + 布尔值:true转换为1,false转换为0 true+5->6
字符串 + 布尔值:布尔值转换为字符串true或false true+’a’->truea
布尔值 + 布尔值:布尔值转换为数值1或0 true+true->2
2. 数据类型转换函数
- parseInt:强制转换成整数
▹ 如果不能转换,则返回 NaN (NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字)
▹ 例如:parseInt(“6.32”)=6
- parseFloat:强制转换成浮点数
▹ 如果不能转换,则返回 NaN
▹ 例如:parseFloat(“6.32”)=6.32
- typeof:查询数值当前类型,返回 string / number / boolean / object
▹ 例如:typeof(“test”+3)==“string”
3. null 与 undefined
- null 在程序中代表“无值”或者“无对象”
▹ 可以通过给一个变量赋值 null 来清除变量的内容
- undefined
▹ 声明了变量但从未赋值或者对象属性不存在
4. 算术运算
- 加(+)、 减(-)、 乘( * ) 、除( / ) 、余数( % )
▹ - 可以表示减号,也可以表示负号,如:x = -y
▹ + 可以表示加法,也可以用于字符串的连接
- 递增( ++ ) 、递减( – )
▹ i++ 相当于 i=i+1
▹ i-- 相当于 i=i-1
5. 关系运算
- 严格相等:===
▹ 类型相同
▹ 数值相同
- 非严格相等:!==
var a = "10";
var b = 10;
if (a == b)
alert("equal");
if (a === b)
alert("same");
6. 逻辑运算
7. 控制语句
if(关系表达式) {
}else {
}
if (表达式1) {
}else if (表达式2){
}else if (表达式3){
} else{
}
switch (表达式) {
case 值1:
break;
case 值2:
break;
default:
}
for (var i=1 ; i<=5 ; i++){
alert(i);
}
while (条件){
...
}
常用字符串API
- length:获取字符串的长度(字符串中字符的个数) 属性,没有小括号
var str = "hello";
console.log( str.length );
- toUpperCase/toLowerCase :转大小写
var name = "AngierSun";
console.log( "大写:"+name.toUpperCase() );
console.log( "小写:"+name.toLowerCase() );
var str1 = "javascript网页教程";
var str2 = str1.charAt(12);
console.log(str2);
var str3 = str1.charCodeAt(12);
console.log(str3);
- indexof(字符):查找字符串中字符出现的首次下标
- lastIndexof(字符):查找字符串中字符最后一次出现的下标
var str1 = "javascript网页教程";
var str2 = str1.indexOf("a");
console.log(str2);
var str3 = str1.lastIndexOf("a");
console.log(str3);
- substring(开始,结束):截取字符串中一部分(结束是不包含的)
var str1 = "abcdefgh";
var str2 = str1.substring(2,4);
console.log(str2);
- replace(旧的,新的):将字符串中的旧字符替换成新字符
var str1 = "abcde";
var str2 = str1.replace("cd","XXX");
console.log(str2);
- split(分割的节点):一个字符串切割成N个小字符串,所以返回的是数组类型
var str1 = "一,二,三,四,五";
var arr = str1.split(",");
console.log( "共分割成:"+arr.length+"份" );
console.log( "第三份是:" + arr[2] );
数组
1. 创建数组
var arr1 = new Array();
2. 初始化数组的三种方式
var arr1 = new Array();
arr1[0] = 110;
arr1[1] = 119;
arr1[2] = 120;
var arr1 = new Array(10,"a",true);
var arr1 = [10,"a",true];
for (var i = 0; i < arr1.length; i++) {
console.log(arr1[i]);
}
3. 数组的常用方法
var arr = [1,2,3,4];
console.log("类型为:" + typeof( arr ) );
var str = arr.toString();
console.log( str +",类型为:" + typeof( str ) );
- join(连接符号):将数组中的每个元素用连接符号连接成一个新的字符串。
var arr = [1,2,3,4];
var str = arr.join("-");
console.log( str +",类型为:" + typeof( str ) );
- concat(新元素):将原来的数组连接新元素,原数组不变。
var arr = [1,2,3,4];
var arrnew = arr.concat(5,6);
console.log( arrnew +",类型为:" + typeof( arrnew ) );
console.log("原数组:" + arr);
- slice(开始,结束):在数组中提取一部分,形成新的数组。
▹ 1,2,3,4,5 slice(2,4) 结果:3,4
var arr = ['a','b','c','d','e','f','g','h'];
var arrnew = arr.slice( 2,4 );
console.log( arrnew );
var arr = [31,12,111,444];
console.log( arr.toString() );
arr.reverse();
console.log( arr.toString() );
- sort():数组排序
▹ arr.sort() 字符排序
▹ arr.sort(func) 数值排序
var arr = [31,12,111,444];
arr.sort();
console.log( arr );
var arr = [31,12,111,444];
arr.sort( laosun );
console.log( arr );
function laosun(a,b){
return a-b;
}
Math数学对象
- Math 对象用于执行数学任务
- 没有构造函数 Math()
- 无需创建,直接把 Math 作为对象使用就可以调用其所有属性和方法

var i = Math.random() * 10;
var j = Math.floor(i);
console.log(j);
Number对象
- Number.toFixed(2); 自带四舍五入技能
var n = new Number( 12.345 );
var n1 = n.toFixed(2);
console.log( n1 );
var x = new Number( 12.3 );
var n2 = x.toFixed(2);
console.log( n2 );
正则表达式
var reg1 = /^\d{3,6}$/;
var reg2 = new RegExp(“^\\d{
3,6}$");

var age = "18";
var reg = /^\d{1,3}$/;
var b = reg.test(age);
if (b == true) {
console.log("验证通过!");
} else {
console.log("格式错误");
}
var name = "abc123";
var reg = new RegExp("^[a-zA-Z0-9]{5,8}$");
if (reg.test(name)) {
console.log("验证通过!");
} else {
console.log("格式错误");
}
日期对象
var time = new Date();
console.log( time );
var year = time.getFullYear();
var month = time.getMonth() + 1;
var day = time.getDate();
var hour = time.getHours();
var mm = time.getMinutes();
var s = time.getSeconds();
var ms = time.getMilliseconds();
var timestr = year+"年"+month+"月"+day+"号 "+hour+"点"+mm+"分"+s+"秒"+ms+"毫秒";
console.log( timestr );
函数
function 函数名( 形参列表 ){
return 返回值;
}
- 函数声明后不会立即执行,会在我们需要的时候调用到,才会执行。
- 注意:
▹ 形参:一定不要带数据类型
▹ 分号;是用来分隔可执行JavaScript语句。 由于函数声明不是一个可执行语句,所以不以分号结束。
1. 无返回值
function qiuhe(a, b) {
var he = a + b;
console.log("两数之和:" + he);
}
qiuhe(3,4);
2. 有返回值
function qiuhe(a, b) {
var he = a + b;
return "两数之和:" + he;
}
var s = qiuhe(3,4);
console.log( s );
3. 参数对象
function func(a,b,c){
console.log( arguments.length );
console.log( arguments[1] );
}
4. 构造函数
- 函数同样可以通过内置的 JavaScript 函数构造器(Function())定义
var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);
console.log(x);
5. 匿名函数
var fn = function(a, b) {
return a * 10 + b;
};
console.log( fn(3, 4) );
6. 全局函数
console.log( isNaN( 123 ) );
console.log( isNaN( "hello" ) );
console.log( isNaN( 4-1 ) );
console.log( isNaN( 123 ) );
console.log( isNaN( -10 ) );
console.log( isNaN( "123" ) );
console.log( isNaN( "1a23" ) );
var str = "1+3";
console.log( str );
console.log( eval( str ) );
var name = "拉勾网";
console.log( "转码前:" + name );
name = encodeURI(name);
console.log( "转码后:" + name );
name = decodeURI(name);
console.log( "解码后:" + name );
7. 闭包
- 闭包的概念:指有权访问另一个函数作用域中的变量的函数,一般情况就是在一个函数中包含另一个函数。
- 闭包的作用:访问函数内部变量、保持函数在环境中一直存在,不会被垃圾回收机制处理;
简单地说:就是在函数的局部范围内声明一个封闭的环境,此环境不会被垃圾回收探测到。保证了数据的安全唯一性
- 想了解闭包,首先要了解什么是全局变量,什么是局部变量
a = 10;
function test1(){
b = 20;
var c = 30;
在其声明的函数内部
console.log(c);
}
function test2(){
console.log(c);
}
test1();
test2();
var count = 0;
function test1(){
count++;
}
test1();
test1();
test1();
console.log( count );
- 谁都可以访问count,所以count变量并不安全,因为是全局变量。
- 如何才能安全呢?将count声明为局部变量
function test1(){
var count = 0;
return count++;
}
test1();
test1();
test1();
console.log( test1() );
- 结果一直是0,因为每次调用test1(),方法体的第一句代码就是还原,无论曾经的值是多少。
- 突发奇想,如果在test1()函数里面,再嵌套一个函数,js是支持函数嵌套的
function test1(){
var count = 0;
function jia(){
return count++;
}
jia();
return count;
}
test1();
test1();
test1();
console.log( test1() );
- 如果每次只调用test1()里面的jia()就好了。ok,闭包帮你解决此问题!
function test1(){
var count = 0;
function jia(){
return count+=1;
}
return jia;
}
var fn = test1();
fn();
fn();
console.log( fn() );
- 闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不 受外界干扰。
- 直观的说就是形成一个不销毁的栈环境。
▹ 闭包的优点: 方便调用上下文中声明的局部变量 逻辑紧密,可以在一个函数中再创建个函数,避免了传参的问题
▹ 闭包的缺点: 因为使用闭包,可以使函数在执行完后不被销毁,保留在内存中,如果大量使用闭包就会造 成内存泄露,内存消耗很大
弹框输出
- 普通弹框 alert(“hello,拉勾”);
- 控制台日志输出 console.log(“谷歌浏览器按F12进入控制台”);
- 页面输出 document.write("
我爱你中国"); 将元素输出到中
- 确认框 confirm(“确定删除吗?”);
var b = confirm("确定删除吗?");
if(b){
document.write( "删除成功!
" );
}else{
document.write( "你取消了操作
" );
}
var name = prompt("请输入你的名字:");
document.write( "大名:"
+name+"!" );
4、DOM操作
- 在一个html页面中,会使用很多标签来规划制作页面。
- 每个标签都有它存在的意义,如果我们想要动态的修改某个标签的值。那我们就需要在页面中查找到这个标签元素
- 如何查找到这个元素是个难题,W3C组织的工程师们,突然看到了一棵大树。我要是想找到某一片叶子,应该怎么做?
- “顺藤摸瓜”,主树干有分支,每个分支还有许多小分支,只要把这个分支的结构整理清楚,任何一片叶子都不是难事了
- 叶子和大树的一些启发,工程师们开会讨论就定了这个理论**“文档对象模型”**,
- 文档对象模型,就是将页面中所有的标签元素都看成是一个对象(一片叶子),主树干定义为根节点(根元素),所有的标签都是从根元素延伸出去的,摸清结构,找到某个标签就不再困难了
▹ 在节点树中,顶端节点就是根节点(root)
▹ 每个节点都有父节点(除了根节点)
▹ 任何一个节点都可以拥有任意数量的子节点
▹ 同胞是拥有相同父节点的节点
<html>
<head>
<meta charset="utf-8">
<title>DOM 教程title>
head>
<body>
<h1>第一节:HTML DOMh1>
<p>Hello world!p>
body>
html>
- 从上面的 HTML 中:
▹ 节点没有父节点;它是根节点
▹ 和 的父节点是 节点
▹ 文本节点 “Hello world!” 的父节点是 节点
- 并且:
▹ 节点拥有两个子节点: 和
▹ 节点拥有两个子节点: 与 节点
▹ 节点也拥有一个子节点:文本节点 “DOM 教程” 和
节点是同胞节点,同时也是
的子节点
- 并且:
▹ 元素是 元素的首个子节点
▹ 元素是 元素的最后一个子节点
▹ 元素是 元素的首个子节点
▹
元素是
元素的最后一个子节点
- js为我们提供了很多种方法来实现在页面找查找某个元素节点
DOM访问

- getElementById:通过id属性获得元素节点对象
▹ 案例:当帐号为空时,阻止表单提交
<body>
<form action="xxx" onsubmit="return login()">
<p>帐号:<input id="username"/>p>
<p>电话:<input id="phone"/>p>
<p><button>登录button>p>
form>
<script>
function login() {
var name = document.getElementById("username").value ;
if(name == ""){
alert("帐号不能为空!");
return false;
}
return true;
}
script>
body>
- getElementsByName:通过name属性获得元素节点对象集
▹ 案例:购物车全选效果

<body>
<h2>我的购物车h2>
<table border="1" cellspacing="0">
<tr>
<td><input type="checkbox" onchange="quan(this)" /> 全选td>
<td>名称td>
<td>单价td>
tr>
<tr>
<td><input type="checkbox" name="one" />1td>
<td>功能性饮料-尖叫td>
<td>4.0td>
tr>
<tr>
<td><input type="checkbox" name="one" />2td>
<td>火腿肠td>
<td>2.0td>
tr>
<tr>
<td><input type="checkbox" name="one" />3td>
<td>包子td>
<td>1.5td>
tr>
table>
<p>
<button>提交订单button>
p>
<script>
function quan(all) {
var arr = document.getElementsByName("one");
for (var i = 0; i < arr.length; i++) {
arr[i].checked = all.checked;
}
}
script>
body>
- getElementsByTagName:通过标签名称获得元素节点对象集
▹ 案例:表格隔行变色
<body>
<table border="1" cellspacing="0">
<tr>
<td><input type="checkbox" onchange="quan(this)" /> 全选td>
<td>名称td>
<td>单价td>
tr>
<tr>
<td><input type="checkbox" name="one" />1td>
<td>功能性饮料-尖叫td>
<td>4.0td>
tr>
<tr>
<td><input type="checkbox" name="one" />2td>
<td>火腿肠td>
<td>2.0td>
tr>
<tr>
<td><input type="checkbox" name="one" />3td>
<td>包子td>
<td>1.5td>
table>
<script>
var rows = document.getElementsByTagName("tr");
for (var i = 0; i < rows.length; i++) {
if(i % 2 == 1){
rows[i].style.backgroundColor = "pink";
}
}
script>
body>
DOM修改
- 修改 HTML DOM 意味着许多不同的方面:
▹ 改变 HTML 内容
▹ 改变 CSS 样式
▹ 改变 HTML 属性
▹ 创建新的 HTML 元素
▹ 删除已有的 HTML 元素
▹ 改变事件(处理程序)
- 改变一个
元素的 HTML 内容 :
<body>
<button onclick="test()">点我试试button>
<script>
function test(){
document.getElementById("hello").innerHTML = "走哇,喝点去~!";
}
script>
<h2 id="hello">你好!h2>
body>
- 改变一个
的 HTML 样式
<body>
<button onclick="chou()">你瞅啥button>
<script>
function chou(){
document.getElementById("hello").style.color = "red";
document.getElementById("hello").style.fontFamily = "华文彩云";
}
script>
<h2 id="hello">你好!h2>
body>
1. 添加节点
<body>
<button onclick="add()">添加button>
<div>div>
<script>
function add(){
var img = document.createElement("img");
img.setAttribute("src","../lagou-html/img/cat.gif");
img.setAttribute("title","小猫咪");
img.setAttribute("id","cat");
var divs = document.getElementsByTagName("div");
divs[0].appendChild(img);
}
script>
body>
2. 删除节点
<body>
<button onclick="add()">添加button>
<button onclick="del()">删除button>
<div>
div>
<script>
function add(){
。。。略。。。
}
function del(){
var img = document.getElementById("cat");
img.parentNode.removeChild(img);
}
script>
body>
3. 替换节点
<body>
<button onclick="add()">添加button>
<button onclick="del()">删除button>
<button onclick="rep()">替换button>
<div>
div>
<script>
function add(){
。。。略。。。
}
function del(){
。。。略。。。
}
function rep(){
var imgold = document.getElementById("cat");
var imgnew = document.createElement("img");
imgnew.setAttribute("src","../lagou-html/img/1.jpg");
imgold.parentNode.replaceChild( imgnew, imgold );
}
script>
body>
事件
- js捕获某个动作而做出的反馈
- HTML 事件的例子:
▹ 当用户点击鼠标时
▹ 当网页已加载时
▹ 当图片已加载时
▹ 当鼠标移动到元素上时
▹ 当输入字段被改变时
▹ 当 HTML 表单被提交时
▹ 当用户触发按键时
1. 窗口事件 (Window Events)
- 仅在 body 和 frameset 元素中有效。
▹ onload 当文档被载入时执行脚本
<body onload="test()">
<script>
function test() {
document.write("哈哈哈哈");
}
script>
body>

2. 表单元素事件 (Form Element Events)
- 仅在表单元素中有效。
▹ onblur 当元素失去焦点时执行脚本
▹ onfocus 当元素获得焦点时执行脚本(被激活)

<body>
<script>
function a() {
console.log("获得焦点==被激活");
}
function b() {
console.log("失去焦点");
}
script>
<form action="">
<p>帐号:<input onfocus="a()" onblur="b()" />p>
<p>密码:<input />p>
form>
body>
3. 鼠标事件 (Mouse Events)
- onclick 当鼠标被单击时执行脚本
- ondblclick 当鼠标被双击时执行脚本
- onmouseout 当鼠标指针移出某元素时执行脚本
- onmouseover 当鼠标指针悬停于某元素之上时执行脚本

<style>
img{
width: 30%;
border: 5px solid white;
}
style>
<body>
<img src="img/logo.png" onmouseover="shang(this)" onmouseout="xia(this)" onclick="dan()">
<img src="img/logo.png" onmouseover="shang(this)" onmouseout="xia(this)" ondblclick="shuang()">
<img src="img/logo.png" onmouseover="shang(this)" onmouseout="xia(this)" >
<script>
function dan(){
alert("点了一下");
}
function shuang(){
alert("连续快读点两下");
}
function shang(img){
img.style.border = "5px solid red";
}
function xia(img){
img.style.border = "5px solid white";
}
script>
body>
4. 键盘事件
- onkeydown 按下去
- onkeyup 弹上来
<script>
window.onkeydown = function(){
if(event.keyCode == "13"){
alert("登录成功!");
}
}
window.onkeyup = function(){
console.log(event.keyCode);
}
script>
5. 事件冒泡
<style>
#father {
width: 200px;
height: 200px;
background: black;
padding: 10px;
}
#child {
width: 100px;
height: 100px;
background: greenyellow;
}
style>
<body>
<div id="father">
<div id="child">div>
div>
<script>
document.getElementById("father").addEventListener("click", function() {
alert("父级元素的事件被触发:" + this.id);
});
document.getElementById("child").addEventListener("click", function(e) {
e.stopPropagation()
alert("子级元素的事件被触发:" + this.id);
});
script>
body>
- 先子,后父。事件的触发顺序自内向外,这就是事件冒泡;

6. 事件捕获
<style>
#father {
width: 200px;
height: 200px;
background: black;
padding: 10px;
}
#child {
width: 100px;
height: 100px;
background: greenyellow;
}
style>
<body>
<div id="father">
<div id="child">div>
div>
<script>
document.getElementById("father").addEventListener("click",function(){
alert("父级:" + this.id);
},true);
document.getElementById("child").addEventListener("click",function(){
alert("子级:" + this.id);
},true);
script>
body>
- 先父,后子。事件触发顺序变更为自外向内,这就是事件捕获;

面向对象OOP
var user = new Object();
user.name = "吕布";
user.age = 21;
user.say = function(){
console.log("大家好,我叫:"+this.name+",我今年"+this.age+"岁了!");
}
user.say();
var dog = new Object();
dog.nickname = "屎尿多";
dog.wang = function(){
console.log("我饿了,我要拆家了!");
}
dog.wang();
function userinfo(name , age){
this.name = name;
this.age = age;
this.say = function(){
console.log("大家好,我叫:"+this.name+",我今年"+this.age+"岁了!");
}
}
var user = new userinfo("詹姆斯",35);
user.say();
var user = {
username : "孙悟空",
age : 527,
say : function(){
console.log("大家好,我叫:"+this.username+",我今年"+this.age+"岁了!");
}
};
user.say();
JSON
- 大家在互联网上来回传递数据,如果没有一个统一的格式,解析起来的难度很大(每个人的编码喜好不一样)
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
- 易于人阅读和编写,同时也易于机器解析和生成
{
属性1:值1,
属性2:值2,
。。。。
}
<script>
var json1 = {
username: "吕布", age: 31 };
console.log("姓名:" + json1.username + ",年龄:" + json1.age + "岁");
var josnarr = [{
name: "貂蝉", age: 18 }, {
name: "小乔", age: 17 }];
console.log("貂蝉" + josnarr[0].age + "岁了");
console.log("小乔" + josnarr[1].age + "岁了");
var long = {
name: "赵云",
sex: "男",
hobby: ["玉兰白龙驹", "龙胆亮银枪", "青釭剑"]
};
console.log(long.name + "的主攻武器:" + long.hobby[1]);
script>
5、BOM操作
- 就是javascript对浏览器的一些常规操作的方法
(B:browser)
window对象

<button onclick="kai()">极速入职button>
<script>
function kai(){
window.open("http://lagou.com" , "拉勾网" ,
"width=500,height=300,left=400");
}
script>
1. screen屏幕对象
- 我想知道我的电脑屏幕多大?实际上,得到的就是分辨率
<body>
<button onclick="kai()">求大小button>
body>
<script>
function kai() {
alert(window.screen.width + "|" + window.screen.height);
}
script>
2. location定位
<button onclick="test()">测试button>
<script>
function test(){
console.log( "当前页面的URL路径地址:"+ location.href );
location.reload();
location.href = "http://lagou.com";
}
script>
3. history浏览器历史
- history对象会记录浏览器的痕迹
- a.html
<a href="b.html">去b页面a>
<button onclick="hui()">返回button>
<script>
function hui(){
history.back();
}
script>
4. navigator 导航(了解)
- window.navigator 对象包含有关访问者浏览器的信息;
<script>
var str = "";
str += "浏览器的代号:"
+ navigator.appCodeName +"";
str += "浏览器的名称:"
+ navigator.appName+"";
str += "浏览器的版本:"
+ navigator.appVersion+"";
str += "硬件平台:"
+ navigator.platform+"";
str += "用户代理:"
+ navigator.userAgent +"";
str += "启用Cookies:"
+navigator.cookieEnabled+"";
document.write(str);
script>
5. 存储对象
在关闭窗口或标签页之后将会删除这些数据
- 保存数据
localStorage.setItem("name","curry");
- 提取数据
localStorage.getItem("name");
- 删除数据
localStorage.removeItem("name");
- 多样化操作
// 三种方式保存数据
localStorage["a"] = 1;
localStorage.b = 2;
localStorage.setItem("c",3);
// 查看数据类型
console.log( typeof localStorage["a"] )
console.log( typeof localStorage["b"] )
console.log( typeof localStorage["c"] )
// 第一种方式读取
var a = localStorage.a;
console.log(a);
// 第二种方式读取
var b = localStorage["b"];
console.log(b);
// 第三种方式读取
var c = localStorage.getItem("c");
console.log(c);
会话,就是保持浏览器别关闭。
关闭浏览就等于结束了一次会话。
开启浏览器就意味着创建了一次会话。
- 保存数据
sessionStorage.setItem("name", "klay");
- 提取数据
var lastname = sessionStorage.getItem("name");
- 删除指定键的数据
sessionStorage.removeItem("name");
- 删除所有数据
sessionStorage.clear();
- 案例:记录点击了几下按钮
<button onclick="dian()">点我button>
<h3 id="result">h3>
<script>
function dian(){
if( sessionStorage.getItem("clickCount") ){
sessionStorage.setItem("clickCount",
Number(sessionStorage.getItem("clickCount")) + 1);
}else{
sessionStorage.setItem("clickCount", 1);
}
document.getElementById("result").innerHTML = "已经点击了"+
sessionStorage.getItem("clickCount") +"次!"
}
script>
计时操作
1. 周期性定时器 setInterval
- setInterval(1,2):周期性触发代码exp (常用)
1:执行语句(函数)
2:时间周期,单位为毫秒
- 案例:闪烁的字体 (1秒1变色)
<body>
<h1 id="title">拉勾网:极速入职h1>
<script>
var colors = ["red","blue","yellow","pink","orange","black"];
var i = 0;
function bian(){
document.getElementById("title").style.color = colors[i++];
if(i == colors.length){
i = 0;
}
}
setInterval(bian,100);
script>
body>
<body>
<h1 id="title">h1>
<script>
var colors = ["red","blue","yellow","pink","orange","black"];
var i = 0;
function bian(){
document.getElementById("title").style.color = colors[i++];
if(i == colors.length){
i = 0;
}
}
function time(){
var d = new Date();
var str = d.getFullYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"号"+d.getHours()+"点"+d.getMinutes()+"分"+d.getSeconds()+"秒";
document.getElementById("title").innerHTML = str;
}
setInterval(bian,100);
setInterval(time,1000);
script>
body>
2. 停止定时器 clearInterval
<body>
<img id="tu" src="../lagou-html/img/1.jpg" width="50%" />
<br />
<button onclick="begin()">开始button>
<button onclick="stop()">停止button>
<script>
var arr = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"];
function begin() {
timer = setInterval(bian, 100);
}
function stop() {
clearInterval(timer);
}
function bian() {
var i = Math.floor(Math.random() * arr.length);
document.getElementById("tu").src = "../lagou-html/img/" + arr[i];
}
script>
body>
3. 一次性定时器 setTimeout
<script>
function bian(){
document.body.style.backgroundColor = "red";
}
setTimeout(bian,3000);
script>
模块一 作业
- 编写一个注册用户信息页面,需求如下:
▹表单中包括:用户名,密码,性别,学历(本科,专科),自我介绍;
▹输入完用户名后校验只能是"admin",否则弹框提示错误
▹点击提交执行后执行事件,把自我介绍的内容弹框提示出来;
- 使用html+css完成效果图(素材见课件)

第三阶段 模块二 前端高级(jQuery、ES6、Bootstrap)
任务四 (jQuery)
1. jQuery介绍
- jQuery由美国人John Resig(约翰·莱西格)于2006年创建
- jQuery是目前最流行的JavaScript程序库,它是对JavaScript对象和函数的封装
- 它的设计思想是write less,do more
- 实现隔行变色效果,JavaScript要循环加判断,而jQuery只需一句关键代码
$("tr:even").css("background-color","#ccc");

1.1 jQuery能做什么?
- 访问和操作DOM元素
- 控制页面样式
- 对页面事件进行处理
- 扩展新的jQuery插件
- 与Ajax技术完美结合
jQuery能做的JavaScript也都能做,但使用jQuery能大幅提高开发效率
其实,jQuery和JavaScript的之间关系,可以理解为“成语”和“白话文”之间的关系。成语是对白话文的高度压缩,而jQuery也是对JavaScript的高度压缩库
1.2 jQuery的优势
- 体积小,压缩后只有100KB左右
- 强大的选择器
- 出色的DOM封装
- 可靠的事件处理机制
- 出色的浏览器兼容性
1.3 jQuery下载
进入jQuery官网:http://jQuery.com


我们使用压缩版就可以。体积更小,内容已经通过算法进行压缩, 不会浪费资源空间!
而开发版就针对修改jQuery源码的专业前端开发者的。
2. jQuery的使用
jQuery作为一个单独存在的js文件,并不会与其他的js文件发生冲突
在页面中使用传统引入js文件的方式引入即可。
<script src="js/jquery-3.4.1.min.js">script>
2.1 基本的语法介绍
<script>
$(selector).action();
script>
- 说明:
工厂函数 $() :将DOM对象转化为jQuery对象
选择器 selector:获取需要操作的DOM 元素(没错,用法基本上和css一致 )
方法action():jQuery中提供的方法,其中包括绑定事件处理的方法“$”等同于“ jQuery ”
- 例如:
<body>
<p>hellop>
body>
<script src="js/jquery-3.4.1.min.js">script>
<script>
alert( $("p").text() );
script>
2.2 jQuery对象与DOM对象
- DOM对象和jQuery对象分别拥有一套独立的方法,不能混用
$("#title").html();
document.getELementById("title").innerHTML;
- 想混用,要转换
DOM对象转jQuery对象
jQuery对象转DOM对象
var a = document.getElementById("name");
var b = $(a);
var a = $("#name");
var b = jqObject.get(0);
2.3 选择器
2.3.1 基本选择器
基本选择器包括标签选择器、类选择器、ID选择器、并集选择器、交集选择器和全局选择器
名称 |
语法构成 |
描述 |
示例 |
标签选择器 |
element |
根据给定的标签名匹配元素 |
$(“h2” )选取所有h2元素 |
类选择器 |
.class |
根据给定的class匹配元素 |
$(" .title")选取所有class为title的元素 |
ID选择器 |
#id |
根据给定的id匹配元素 |
$(" #title")选取id为title的元素 |
并集选择器 |
selector1,selector2,…,selectorN |
将每一个选择器匹配的元素合并后一起返回 |
$(“div,p,.title” )选取所有div、p和拥有class为title的元素 |
交集选择器 |
element.class或element#id |
匹配指定class或id的某元素或元素集合 |
$(“h2.title”)选取所有拥有class为title的h2元素 |
<p>中国p>
<p>武汉p>
<p class="jy">加油p>
<p id="wan">祖国万岁p>
<h3 class="jy">祖国万岁h3>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("h3.jy").css("color","red");
script>
2.3.2 层次选择器
名称 |
语法构成 |
描述 |
示例 |
后代选择器 |
ancestor descendant |
选取ancestor元素里的所有descendant(后代)元素 |
$("#menu span" )选取#menu下的元素 |
子选择器 |
parent>child |
选取parent元素下的child(子)元素 |
$(" #menu>span" )选取#menu的子元素 |
相邻元素选择器 |
prev+next |
选取紧邻prev元素之后的next元素 |
$(" h2+dl " )选取紧邻 元素之后的同辈元素 |
同辈元素选择器 |
prev~sibings |
选取prev元素之后的所有siblings元素 |
$(" h2~dl " )选取 元素之后所有的同辈元素 |
<h3>000h3>
<div id="x">
111
<p>p1p>
<div>
<p>p2p>
div>
div>
<h3>222h3>
<h3>333h3>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("#x~h3").css("color","red");
script>
2.3.3 属性选择器
名称 |
语法构成 |
描述 |
示例 |
属性选择器 |
[attribute] |
选取包含给定属性的元素 |
$(" [href]" )选取含有href属性的元素 |
|
[attribute=value] |
选取等于给定属性是某个特定值的元素 |
$(" [href =’#’]" )选取href属性值为“#”的元素 |
|
[attribute !=value] |
选取不等于给定属性是某个特定值的元素 |
$(" [href !=’#’]" )选取href属性值不为“#”的元素 |
|
[attribute^=value] |
选取给定属性是以某些特定值开始的元素 |
$(" [href^=‘en’]" )选取href属性值以en开头的元素 |
|
[attribute$=value] |
选取给定属性是以某些特定值结尾的元素 |
$(" [href$=’.jpg’]" )选取href属性值以.jpg结尾的元素 |
|
[attribute*=value] |
选取给定属性是以包含某些值的元素 |
$(" [href* =‘txt’]" )选取href属性值中含有txt的元素 |
|
[s1] [s2] [sN] |
选取满足多个条件的复合属性的元素 |
$(“li[id][title=新闻]” )选取含有id和title属性为新闻的
|
<a href="www.lagou.com">拉勾网a>
<a href="www.sina.com.cn">新浪网a>
<a href="http://www.163.com">网易a>
<p href="x">哈哈1p>
<p href="x" title="x">哈哈2p>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("p[href][title='x']").css("color","red");
script>
2.3.4 过滤选择器
语法构成 |
描述 |
示例 |
:first |
选取第一个元素 |
$(" li:first" )选取所有 元素中的第一个 元素 |
:last |
选取最后一个元素 |
$(" li:last" )选取所有 元素中的最后一个 元素 |
:even |
选取索引是偶数的所有元素(index从0开始) |
$(" li:even" )选取索引是偶数的所有 元素 |
:odd |
选取索引是奇数的所有元素(index从0开始) |
$(" li:odd" )选取索引是奇数的所有 元素 |
:eq(index) |
选取索引等于index的元素(index从0开始) |
$(“li:eq(1)” )选取索引等于1的 元素 |
:gt(index) |
选取索引大于index的元素(index从0开始) |
$(" li:gt(1)" )选取索引大于1的 元素(注:大于1,不包括1) |
:lt(index) |
选取索引小于index的元素(index从0开始) |
$(“li:lt(1)” )选取索引小于1的 元素(注:小于1,不包括1) |
<h2 id="h2#x">修仙小说h2>
<ul>
<li>凡人修仙传li>
<li>遮天li>
<li>神墓li>
<li>残袍li>
<li>大主宰li>
ul>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("#h2\\#x").css("color","red");
script>
2.4 事件
2.4.1 鼠标事件
鼠标事件是当用户在文档上移动或单击鼠标时而产生的事件,常用鼠标事件有:
方法 |
描述 |
执行时机 |
click( ) |
触发或将函数绑定到指定元素的click事件 |
单击鼠标时 |
mouseover( ) |
触发或将函数绑定到指定元素的mouse over事件 |
鼠标移过时 |
mouseout( ) |
触发或将函数绑定到指定元素的mouse out事件 |
鼠标移出时 |
<img src="img/1.jpg" width="300">
<img src="img/1.jpg" width="300">
<img src="img/1.jpg" width="300">
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("img").click( function(){
$(this).attr( "src","img/2.jpg" );
} );
$("img").mouseover( function(){
$(this).css( "border","2px solid red" );
} );
$("img").mouseout( function(){
$(this).css( "border","2px solid white" );
} );
script>
2.4.2 键盘事件
用户每次按下或者释放键盘上的键时都会产生事件,常用键盘事件有:
方法 |
描述 |
执行时机 |
keydown( ) |
触发或将函数绑定到指定元素的keydown事件 |
按下键盘时 |
keyup( ) |
触发或将函数绑定到指定元素的keyup事件 |
释放按键时 |
<input>
<h3>h3>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("input").keyup( function(){
var str = $(this).val();
$("h3").text( str );
} );
script>

2.4.3 表单事件
- 当元素获得焦点时,会触发focus事件,失去焦点时,会触发blur事件,详见下表:
方法 |
描述 |
执行时机 |
focus( ) |
触发或将函数绑定到指定元素的focus事件 |
获得焦点 |
blur( ) |
触发或将函数绑定到指定元素的blur事件 |
失去焦点 |
<form action="">
<p>帐号: <input id="a" value="请输入帐号..."> p>
<p>电话: <input id="b"> p>
form>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("#a").focus(function(){
$(this).val("");
});
$("#a").blur(function(){
$(this).val("请输入帐号...");
});
script>
2.4.4 鼠标悬停复合事件
hover()方法相当于mouseover与mouseout事件的组合
<img src="img/3.jpg" width="400">
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("img").hover(
function(){
$(this).css("border","5px solid red");
},
function(){
$(this).css("border","5px solid white");
}
);
script>
2.4.5 连续点击复合事件
toggle()除了可以模拟鼠标的连续单击事件
<h2>修仙小说h2>
<ul>
<li>凡人修仙传li>
<li>遮天li>
<li>神墓li>
<li>残袍li>
<li>大主宰li>
ul>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("h2").click(function(){
$("ul").toggle();
});
script>
2.4.6 事件的动态绑定
对dom元素绑定事件的另一种写法
$(".del").on('click', function() {
alert('hello');
})
$(".del").on('click mouseover', function() {
alert('hello');
})
2.5 元素的隐藏和显示
2.5.1 改变元素的宽和高(带动画效果)
- show( speed ):显示
- hide( speed ):隐藏
- toggle( speed )等价于show+hide : 显示的隐藏,隐藏的显示
可选的 speed 参数规定隐藏/显示的速度,可以取以下值:“slow”、“fast” 或毫秒
<style>
div{
width: 200px;
height: 200px;
background-color: black;
}
style>
<body>
<button id="btn1">显示button>
<button id="btn2">隐藏button>
<button id="btn3">切换button>
<div>div>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("#btn2").click(function(){
$("div").hide(2000);
});
$("#btn1").click(function(){
$("div").show('slow');
});
$("#btn3").click(function(){
$("div").toggle(1000);
});
script>
body>
2.5.2 改变元素的高(拉伸效果)
- slideDown( speed ) :显示
- slideUp( speed ):隐藏
- slideToggle( speed )等价于slideDown+slideUp
可选的 speed 参数规定隐藏/显示的速度,可以取以下值:“slow”、“fast” 或毫秒
<script>
$("#btn2").click(function(){
$("div").slideUp(1000);
});
$("#btn1").click(function(){
$("div").slideDown(1000);
});
$("#btn3").click(function(){
$("div").slideToggle(1000);
});
script>
2.5.3 不改变元素的大小(淡入淡出效果)
- fadeIn( speed ) 显示
- fadeOut( speed ) 隐藏
- fadeToggle( speed ) 等价于fadeIn+fadeOut动画
- fadeTo( speed , 透明度 ) 方法允许渐变为给定的不透明度(值介于 0 与 1 之间)
可选的 speed 参数规定隐藏/显示的速度,可以取以下值:“slow”、“fast” 或毫秒
<script>
$("#btn2").click(function(){
$("div").fadeOut(1000);
});
$("#btn1").click(function(){
$("div").fadeIn(1000);
});
$("#btn3").click(function(){
$("div").fadeToggle(1000);
});
$("#btn4").click(function(){
$("div").fadeTo(1000,0.5);
});
script>
2.5.4 链
- 链是允许我们在同一个元素上在一条语句中运行多个jQuery方法,可以把动作/方法链接在一起 ;
- 例如:点击一次按钮,让div完成4个指定动作
1. 背景变粉
2. 字体变绿
3. 收缩
4. 拉伸
<style>
div{
width: 200px;
height: 200px;
background-color: black;
color:white;
font-size: 3em;
}
style>
<body>
<button>试试button>
<div>hellodiv>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("button").click(function(){
$("div").css("backgroundcolor","pink").css("color","green").slideUp(1000).slideDown(1000);
});
script>
body>
2.6 DOM和CSS的操作
2.6.1 属性函数
- attr( “属性” ); 获得元素的属性值
○ attr( “属性” , “新值” ); 修改元素的属性值
○ attr( 样式参数 ) :样式参数可以写成json格式
<body>
<button id="btn1">点我试试button>
<hr>
<img src="img/1.jpg" title="美女大图" width="300">
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("#btn1").click(function(){
$("img").attr("src","img/2.jpg");
$("img").attr("title","高清无码");
$("img").attr( {
width:"200",height:"200"} );
});
script>
body>
- val() ; 获得表单元素中的value值
○ val(“x”) 修改表单元素中的value值
- html(); 获得元素中的内容(标签+文本)
○ html(“x”) 修改元素中的内容(标签+文本)
- text(); 获得元素中的文本
○ text(“x”) 修改元素中的文本(包括标签)
<button>试试button>
<hr>
<input id="username">
<div>
<h1><i>中国加油!i>h1>
div>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("button").click(function(){
$("div").text("祖国万岁!");
});
script>
2.6.2 样式函数
- css( “属性”); 获得该属性值
- css( “属性”,“值”); 设置属性的值
- css( { json} ); 设置多个属性的值
<style>
div{
width: 150px;
height: 150px;
background-color: #000;
}
style>
<body>
<button>试试button>
<hr>
<div>div>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("button").click(function(){
$("div").css({
opacity:"0.4",
background:"orange",
borderRadius:"50%"
} );
});
script>
body>
- width(); 获得元素的宽度
- width( number ); 修改元素的宽度
- height(); 获得元素的高度
- height( number ); 修改元素的高度
<style>
div{
width: 150px;
height: 150px;
background-color: #000;
}
style>
<body>
<button>试试button>
<hr>
<div>div>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("button").click(function(){
var w = $("div").width();
var h = $("div").height();
$("div").width("300");
$("div").height("300");
});
script>
body>
2.6.3 类样式函数
- addClass(); 为元素添加类样式
- removeClass(); 将元素的类样式移除
- toggleClass(); 样式的切换(有->无,无->有)
<style>
div{
width: 100px;
height: 100px;
background-color: #000;
}
.a{
background: palevioletred;
border-radius: 50%;
}
.b{
border:5px dashed darkcyan;
opacity: 0.6;
}
.cn{
background: #000;
color:#FFF;
font-family: 字魂49号-逍遥行书;
}
style>
<body>
<button id="btn1">试试button>
<button id="btn2">取消透明度button>
<button id="btn3">样式切换button>
<hr>
<div>div>
<h1>中华人民共和国,万岁!h1>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("#btn1").click(function(){
$("div").addClass("a b");
});
$("#btn2").click(function(){
$("div").removeClass("b");
});
$("#btn3").click(function(){
$("h1").toggleClass("cn");
});
script>
body>
2.6.4 节点操作
- 创建节点
○ 工厂函数$()用于获取或创建节点
- 插入节点
○ 插入子节点
语法 |
功能 |
append(content) |
$(A).append(B)表示将B追加到A中,如:$(“ul”).append($newNode1); |
appendTo(content) |
$(A).appendTo(B)表示把A追加到B中,如:$newNode1.appendTo(“ul”); |
prepend(content) |
$(A). prepend (B)表示将B前置插入到A中,如:$(“ul”). prepend($newNode1); |
prependTo(content) |
$(A). prependTo (B)表示将A前置插入到B中,如:$newNode1.prependTo (“ul”); |
语法 |
功能 |
after(content) |
$(A).after (B)表示将B插入到A之后,如:$(“ul”).after($newNode1); |
insertAfter(content) |
$(A). insertAfter (B)表示将A插入到B之后,如:$newNode1.insertAfter(“ul”); |
before(content) |
$(A). before (B)表示将B插入至A之前,如:$(“ul”).before($newNode1); |
insertBefore(content) |
$(A). insertBefore (B)表示将A插入到B之前,如:$newNode1.insertBefore(“ul”); |
- 替换节点
○ replaceWith()
○ replaceAll()
- 复制节点
○ clone()
- 删除节点
○ remove()删除整个节点
○ empty()清空节点内容
<input> <button id="test">测试button>
<ul>
<li>金瓶梅li>
<li>貂蝉往事li>
<li>东京热不热li>
ul>
<script src="js/jquery-3.4.1.min.js">script>
<script>
$("#test").click(function(){
var bookname = $("input").val();
var newli = $(""+bookname+"
"