HTML
网页标记
标题 h1~h6
<h1>一级标题</h1>
...
<h6> <h6>
段内换行 br
<br />
段内分组 span
组合行内元素便于通过CSS样式来格式化
<span>文字文字</span>
<style type="text/css">
span{
color:blue;
font-weight:bold;
}
</style>
段落 p
<br>...</br>
<br />
预留格式 pre
保留空格和空行
<body>
<pre>
预留文本格式,保留 连续空格和
和空行
</pre>
很适合显示计算机代码
</body>
水平线 hr
<hr />
空格字符
(特殊字符全小写)
添加注释
<!--zhushi-->
超链接 a
<!--链接到本站点其他网页-->
<a href= "news.html" >新闻 </a>
<!--链接到其他站点-->
<a href= "http://www.baidu.com/" >百度 </a>
<!--虚拟超链接-->
<a href= "#" >板块2</a>
插入图像 img
src属性:路径+文件名
alt属性:图片的替换文本
相对路径:上一级文件夹”../logo.gif”
<img src= "w3school.gif" alt= "w3c" />
列表 ul ol li
li:列表项
- 无序列表 ul li
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JS</li>
</ul>
- 有序列表 ol li
<ol>
<li>HTML</li>
<li>CSS</li>
<li>JS</li>
</ol>
区域 div
确定一个单独的区域
如页面的一个组成部分,一个栏目板块
align属性:区域内部的排布
center:居中
<div id="container" align="center">
<h1>web 前端开发<h1>
<p>HTML</p>
<p>CSS</p>
<p>JavaScript</p>
</div>
表格 table tr td
border=”1” 显示较细的边框
th标签:表头单元格,加粗显示
<!--tr为行 td为列-->
<table border="1">
<tr>
<th>内容</th>
<th>内容</th>
</tr>
<tr>
<td>内容</td>
<td>内容</td>
</tr>
</table>
表单 form
<form action="数据处理网页">
表单元素
</form>
- 文本框、密码框 input
文本框 type=”text”
密码框 type=”password”
<form>
<input type="text|password" />
</form>
例如:
<form>
账户:<input type="text" name="userName" />
<br />
密码:<input type="password" name="userPsd" />
</form>
- 按钮
按钮:提交按钮、重置按钮
type:submit
value:按钮上显示的文字
<form>
<input type="text" value="" name="myName" />
<input type="submit" value="提交" name="submit" />
<input type="reset" value="重置" />
</form>
- 单选框、复选框input-radio checkbox
<form>
<input type="radio|checkbox"
value="值" name="名称" checked="checked"/>
</form>
当设置 check=”checked”时,该选项被默认选中
name属性要设为相同的取值,才会被认作一组
- 下拉列表框 select option
<select>
<option>选项1</option>
<option selected="selected">选项2</option>
</select>
- 文本域textarea
<textarea rows="行数" cols="列数">文本</textarea>
Web语义化
让页面具有良好的结构与含义,从而让人和机器都能快速理解网页内容
em strong标签
<p>
<em>强调</em>
<i>斜体,无语义<i>
</p>
<p>
<strong>重点强调</strong>
<b>粗体,无语义</b>
</p>
dl dt dp标签
自定义列表dl、列表项dt、描述dd
<dl>
<dt>HTML</dt>
<dd>超文本标记语言</dd>
<dt>CSS</dt>
<dd>层叠样式表</dd>
</dl>
CSS
CSS概述
Cascading Style Sheets层叠样式表
p{
font-size:12px; /*字号*/
color:blue; /*文字颜色*/
font-weight:bold; /*加粗*/
}
CSS添加方法
行内
<body>
<p style="color:red;">
内容
</p>
</body>
内嵌
<head>
<style type="text/css">
p{
color:red;
}
</head>
单独文件
外部式样式表文件style.css
p{
color:red;
}
网页文件:1.htm
<html>
<head>
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<p>内容</p>
</body>
</html>
(优先级)
行内样式>内嵌样式>链接样式>浏览器默认样式
CSS选择器
标签p
<style type="text/css">
body{background-color:#ccc;
text-align:center;
font-size:12px;}
h1 {font:"黑体";font-size:16px;}
p {color:red;font-size:16px;}
hr {width:200px;}
</style>
<body>
<h1>标题</h1>
<hr>
<p>正文的段落</p>
版权所有
</body>
嵌套p span
<style type="text/css">
p span{
color:red;
}
</style>
<body>
<p><span>123<span>456</p>
</body>
类别.one
<style type="text/css">
p {font-size:12px;}
.one{font-size:18px;}
.two{font-size:24px;}
</style>
<body>
<p class="one">样式1</p>
<p class="two">样式2</p>
<p>普通样式</p>
</body>
集体p,hl
<style type="text/css">
h1,p{text-align:center;
}
</style>
<body>
<h1>欢迎访问论坛</h1>
<p>欢迎访问论坛</p>
</body>
id#left
<style type="text/css">
#one{font-size:12px;}
#two{dont-size:24px;}
</style>
<body>
<p id="one">文字1</p>
<p id="two">文字2</p>
<body>
ID选择器只能被唯一地引用一次
全局*
<style type="text/css">
* {
text-align:center;
}
</style>
混合
<div class="one yello left">...</div>
<!--id和class混用-->
<div id="my" class="one yello left">
CSS常用单位
大小
px
像素em
1em:1个字符 2em:2个字符 自动适应用户所使用的字体%
百分比
颜色
- red,blue,green 颜色名
rgb(x,x,x)
RGB值
每个颜色分量取值0~255
红色:rgb(255,0,0)
灰色:rgb(66,66,66)
rgb(x%,x%,x%)
RGB百分比值 0~100%
红色:rgb(100%,0%,0%)
rgba(x,x,x,x)
RGB值,透明度
a值:0.0(完全透明)与1.0(完全不透明)
红色半透明:rgba(255,0,0,0.5)
#rrggbb
十六进制数
红色:#ff0000
红色:#f00
去掉重复位
文本
- color 文本颜色
red
#f00
rgb(255,0,0)
- letter-spacing 字符间距
2px
-3px
- line-height 行高
14px
1.5em
120%
- text-align 对齐
center
left
right
justify
- text-decoration 装饰线
none
overline
underline
line-through
- text-indent 首行缩进
2em
字体
- font 在一个声明里设置所有字体属性
font:bold 18px '幼圆'
顺序:font:斜体 粗体 字号/行高 字体
- font-family 字体系列
font-family:"Hiragino Sans GB","Microsoft YaHei",sans-serif;
- font-size 字号
14px
120%
- font-style 斜体
italic
- font-weight 粗体
bold
背景
- background:颜色 图片 repeat
- background-color
- background-image
url("logo.jpg")
- background-repeat
repeat
repeat-x
repeat-y
no-repeat
超链接
- a:link 普通的、未被访问的链接
- a:visited 用户已访问的链接
- a:hover 鼠标指针位于链接的上方悬停
- a:active 链接被点击的时刻
: 伪类选择器
a:hover 必须位于a:link和a:visited之后 a:active 必须位于a:hover之后 Love&Hate
列表
- list-style 所有用于列表的属性设置于一个声明中
- list-style-image 为列表项标志设置图像
url(”images/bullet1.gif”) - list-style-position 标志的位置
inside / outside - list-style-type 标志的类型 | 值 | 描述 | | —- | —- | | none | 无标记。 | | disc | 默认。标记是实心圆。 | | circle | 标记是空心圆。 | | square | 标记是实心方块。 | | decimal | 标记是数字。 | | lower-roman | 小写罗马数字(i,ii,iii,iv,v等) | | upper-roman | 大写罗马数字(I,II,III,IV,V等) | | lower-alpha | 小写英文字母(a,b,c,d,e等) | | upper-alpha | 大写英文字母(A,B,C,D,E等) | | lower-Greek | 小写希腊字母(alpha,beta,gamma等) | | lower-latin | 小写拉丁字母(a,b,c,d,e等) | | upper-latin | 大写拉丁字母(A,B,C,D,E等) |
表格
- border 边框
table,td,th {
border:1px solid #eee;
}
solid: 实线
- width 宽
- height 高
- border-collapse 坍缩:表格边框和单元格边框重叠
奇偶选择器
tr:nth-child(odd|even) {
background-color:#EAF2D3;
}
CSS布局与定位
container
header navbar main menu content sidebar footer
盒子模型
概念
页面上 区域、图片、导航、列表、段落,都可以是盒子
组成
- content 内容
- height 高度
- width 宽度
- padding 内边距
- margin 外边距
margin border padding后面可以加top/bottom/right/left
<html>
<head>
<style type="text/css">
#box {
width:100px;
height:100px;
border:1px solid;
padding:20px;
margin:10px;
}
</head>
<body>
<div id="box">
内容内容内容内容内容内容
</div>
</body>
</html>
overflow属性
- hidden 超出部分不可见
- scroll 显示滚动条
- auto 如果有超出部分,显示滚动条
border属性
- border:width style color
- border-width:px thin medium thick
- border-style:dashed dotted solid double
- border-color:颜色
padding属性
取值:px,%(外层盒子的宽度和高度)
可以使用-top,left,right,bottom
margin:1px 1px 1px 1px;
外边距四个方向上都是一个像素
四个值分别是:上、右、下、左(顺时针)
当省略后两个值时,代表bottom与top相等,left与right相等
margin属性
对默认属性值进行清零
* {
margin:0;
padding:0:
}
浏览器在解析时,做了垂直方向上外边距的合并,合并取较大的值
div水平居中margin:0 auto;
浏览器自动计算
案例
<div id="newsimglist">
<img src="images/crisis.img" />
<img src="images/crisis.img" />
<img src="images/crisis.img" />
</div>
#newsimglist{
text-align:center;
font-size:0;/*否则图间有空隙*/
}
#newsimglist img{
height:100px;
width:100px;
margin-left:5px;
border:1px solid #0cf;
padding:5px;
}
CSS定位机制
文档流 flow
<无特殊,从上到下,从左到右
元素分类
block
独占一行
元素的height、width、margin、padding都可设置
常见的block元素:<div>
<p>
<h1>...<h6>
<ol>
<ul>
<table>
<form>
将其他类型的元素显示为block元素a{
display:block;
}
inline元素a转换为block元素,从而使a元素具有块状元素特点。inline
不单独占用一行
width、height不可设置
width就是它包含的文字或图片的宽度
常见的inline元素:<span>
<a>
显示为inline元素:display:inline
inline元素的间距问题:<style type="text/css">
a{
background:pink;
}
</style>
<body>
<a href="www.baidu.com">baidu</a>
<a href="www.imooc.com">mooc</a>
</body>
两段粉色背景之间有间隙- Inline-block
同时具备inline元素、block元素的特点
不单独占用一行
元素的height、width、margin、padding都可以设置
例如:<img>
显示为inline-block元素:display:inline-block
元素类型转换
display 属性
浮动定位 float
float属性
left 左浮动
right 右浮动
none 不浮动
div{
width:200px;
height:200px;
border:1px solid red;
float:left;
}
<div id="box1"></div>
<div id="box2"></div>
clear属性
both,清除左右两边的浮动
left和right只能清除一个方向的浮动
none是默认值,只在需要移除已指定的清除值时用到
侧栏向右浮动,并且短于主内容区域。页脚(footer)于是按照浮动所要求的向上跳到了可能的空间。
解决方法:
#footer{
clear:both;
}
层定位 layer
position属性
- static 默认值
没有定位,元素出现在正常的流中,left,z-index等元素不生效 - fixed 固定定位
相对于浏览器窗口进行定位 元素有效 - ralative 相对定位
相对于其直接父元素进行定位 元素有效 - absolute 绝对定位
相对于static定位以外的第一个父元素进行定位 元素有效
left属性
right属性
top属性
bottom属性
z-index属性
值大在上面
CSS3
概述
- 新特性
- 浏览器支持度
圆角边框border-radius属性
border-top-left-radius
左上角的形状- 水平值、垂直值
div{
width:350px;
height:50px;
border:2px solid #alalal;
background:#ddd;
border-radius:25px;
}
阴影box-shadow属性
- inset 水平偏移 垂直偏移 模糊距离 颜色
- inset 可选,内部阴影
- outset 默认值,外部阴影
text-shadow属性
text-shadow:水平偏移 垂直偏移 阴影大小 颜色
h1{
text-shadow:2px 2px 8px blue;
}
word-wrap属性
长单词、URL的换行
normal、break-word
@font-face属性
字体格式:ttf/otf eot svg woff
生成其他格式 http://www.fontsquirrel.com/tools/webfont-
<style>
@font-face{
font-family:kastlerFont;
src:url('fonts/kastler.ttf'),
url('fonts/kastler.eot');
}
p{
font-family:kastlerFont;
}
</style>
旋转transform:rotate()
transform:rotate(deg)
div{
width:100px;
height:75px;
background-color:#ccc;
border:1px solid black;
}
#rotateDiv{
transform:rotate(30deg);
}
快捷:trsf扩展
缩放transform:scale()
transform:scale(x,y)
x:水平方向缩放的倍数
y:垂直方向缩放的倍数,若省略,同x
0~1,缩小;>1放大
.box:hover{
transform:scale(1.2);
}
过渡transition
将元素的某个属性从”一个值“在指定时间内过渡到”另一个值“
transition
:属性名 持续时间 过渡方法
transition-property
:属性名|all 对哪个属性变化
transition-duration
:持续时间
transition-timing-function
:过渡使用的方法(函数)
值 | |
---|---|
linear | 匀速 |
ease | 慢快慢 |
ease-in | 慢快 |
ease-out | 快慢 |
ease-in-out | 慢快慢 |
div{
height: 30px;
width: 100px;
line-height: 30px;
border-radius: 5px;
color: #000;
background-color: silver;
transition: all 1s ease;
}
div:hover{
color: white;
background-color: #45B823;
}
动画animation
- 1)定义动画
@keyframes
规则(关键帧) - 2)调用动画
animation
属性
<style type="text/css">
@keyframes mycolor {
0% {background-color: red;}
30% {background-color: blue;}
60% {background-color: yellow;}
100% {background-color: green;}
}
div:hover{
animation: mycolor 5s linear;
}
</style>
<body>
<div>123</div>
</body>
值 | 描述 |
---|---|
animation | |
animation-name | 引用@keyframes动画的名称 |
animation-duration | |
animation-timing-function | 规定动画的速度曲线。默认是“ease”。 |
animation-play-state | running|paused |
3D变换
transform-style:preserve-3d
旋转
transform属性
rotateX()
rotateY() 角度deg
rotateZ()
透视
perspective属性
- 父容器:旋转
transform-style:preserve-3d
transform:rotateY(69deg); - 舞台:透视关系
perspective:100px
JS
使用方法
1、将JS代码嵌入在元素“事件”中
onclick:当单机元素时所作的操作
<div id="" onclick="JS代码">xxx</div>
<html>
<body>
<button onclick="console.log('Hello World');"><!--注意单双引号-->
打印消息
</button>
</body>
</html>
2、将JS代码嵌入在<script>
标记中
<script></script>
允许出现在网页的任意位置处<html>
<body>
页头
<hr/>
<script>
document.write('<b>欢迎</b>');
console.log('脚本执行结束了...');
</script>
<hr/>
页尾
</body>
</html>
将JS代码写在外部脚本文件中(.js)
1)创建JS文件,并编写JS代码
.js
2)在页面中引入JS文件
<script src="js文件"></script>
<html>
<head>
<script src="myscript.js"></script>
</head>
<body>
</body>
</html>
如果JS标签中已经引入了外部文件,则标签对内不能出现内容!
语法
语句
允许被JS引擎所解释的代码
- 使用 分号 来表示结束
console.log();
document.write();
- 大小写敏感
- 英文标点符号
- 由表达式、关键字、运算符 组成
注释
单行注释://
多行注释:/* */
sublime text中 Ctrl+/
ECMA JS\DOM\BOM
ECMA JS
var a = [1,2,3,4];/*数组*/
var sum = 0;
for(var i=0;i<a.length;i++){
sum += a[i];
}
document.write(sum);
DOM
<html>
<body>
<p id="changeStyle">
通过DOM改变样式,字号变为24px。
</p>
<button onclick="document.getElementById('changeStyle').style.fontSize='24px'">
点击改变字号
</button>
</body>
</html>
BOM
<head>
<script>
function load(){
window.open('http://www.baidu.com','_blank','width=600,height=400,
top=100px,left=0px')
}
</script>
</head>
<body>
<button onclick='load()'>
百度
</button>
</body>
变量
语法
var userName;
var bookPrice = 25.5;
注意:声明过程中,尽量不要省略 var 关键字,否则声明的是“全局变量”
在console.log()
或document.write()
使用变量名 取代“”打印 变量stuName的值到控制台上
var stuName="PP.XZ";
console.log(stuName); -- PP.XZ
console.log("stuName") -- stuName
一次性声明多个变量并赋值:var stuName="PP.XZ",stuAge=25,stuHeight;
- 不允许使用JS的关键字和保留关键字
- 由数字、字母、下划线以及$组成
- 不能以数字开头
- 尽量见名知意
- 可以采用“驼峰命名法”
变量被声明,但没有被初始化过,为undefined
变量未声明,直接使用,为错误
变量的使用
- 获取变量的值-GET操作 ```javascript var userPwd=’123456’;
console.log(userPwd); document.write(userPwd); var newPwd=userPwd;
- 保存(设置)变量的值-SET操作
```javascript
var oldPwd='123'
oldPwd='456';
oldPwd=newPwd;
数据类型
- 数字类型
可以表示32位的整数以及64位的浮点数
整数:32位即4字节
浮点数:即小数,64为,8字节 - 字符串类型
表示一系列的文本字符数据
由Unicode字符,数字,标点组成
Unicode下所有的字符,数字,标点在内存中都占2字节“张”.charCodeAt().toString16
查看 字符 “张” 的十六进制 表现方式
结果为:5f20
\u4e00:汉字的起始字符
\u9fa5:汉字的结束字符
转义字符:1、\n
换行 2、\r
回车 3、\t
一个制表符 - 布尔类型
作用:用于表示 条件的结果
取值:true false
除条件判断外,做运算时,作为true=1,false=0运算 - 空
undefined 声明变量未赋值、访问对象不存在的属性 - 未定义
隐式转换
函数
typeof()
或typeof
var num1 = 15;
var s = typeof(num1);
var s1 = typeof num1;
NaN
Not a Nunber
isNaN:判断 数据是否为非数字
是不是一个数字
结果为boolean类型
结果为 true:不是一个数字
结果为 false:是一个数字
所有的数据类型与string做 +运算时,最后的结果都是string
强制转换
toString()
将任意类型的数据转换为string类型
变量.toString();
会得到一个全新的结果,类型为stringvar num=15;
var str=num+"";
parseInt()
作用:获取指定数据的整数部分
语法:var result=parseInt(数据);
注意:paraseInt,从左向右依次转换,碰到第一个非整数字符则停止转换。如果第一个字符就是非整数字符的话,结果为NaN。parseFloat()
作用:将指定数据转换成小数
语法:var result = parseFloat(数据);Number()
作用:将一个字符串解析为number
语法:var result=Number(数据);
注意:如果包含非法字符,则返回 NaN
函数
function 函数名(){
可执行语句;
}
任何JS的合法位置处,都允许调用函数,语法:函数名称();
定义带参数函数
function printInfo(userName,userPwd){
console.log('用户名:'+userName+'密码'+userPwd);
}
printInfo('Tom','123');
带返回值的函数
function 函数名(0或多个参数){
//代码块
return 值;
}
var result = 函数名();
声明提前
JS在正式执行之前,会将所有var声明的变量和function执行的函数,预读到所在作用域的顶部,但是对变量的赋值,还保留在原来的位置处。
分支结构
if else 结构
if(){
语句块;
}
if语句条件位置处,必须为boolean类型的值,如果不是bool类型的话,JS会在以下情况认为是false
0/0.0/""/null/undefined/NaN
除此以外,一律为真
if(){
语句块1;
}else{
语句块2;
}
if(){
}else if(){
}
switch-case
switch(表达式){
case 值1:
语句1;
语句2;
case 值2:
语句1;
语句2;
default:
语句n;
}
循环结构
while(boolean表达式){
循环体语句;
}
do{
可执行语句;
}while(boolean表达式);
for(表达式1;表达式2;表达式3){
循环体语句;
}
数组
创建空数组
var arr=[];
或 var arr=new Array();
var arr1 = [];
var arr2 = [97,85,79];
var arr3 = new Array();
var arr4 = naw Array("Tom","Mary","John");
数组的length属性
length属性的值永远是最大下标+1
var arr4 = new Array(10);
console.log(arr4.length); //长度为10
数组的遍历
var nums = [50,90,20,10];
for(var i=0;i<nums.length;i++){
nums[i]+=10;
}
获得倒数第n个元素:arr[arr.length-n]
数组缩容:减小arr.length的值,会删除结尾的多余元素。
关联数组
可自定义下标名称的数组
- 创建空数组
- 向空数组中添加新元素,并自定义下标名称
var bookInfo = [];
bookInfo['bookName']='西游记';
bookInfo['price']='35.5';
遍历关联数组
for(var key in hash){
key//只是元素的下标名
hash[key]//当前元素值
}
数组API
1.1
String(arr)
:将arr中每个元素转为字符串,用逗号分隔
固定套路:对数组拍照,用于鉴别是否数组被修改过
1.2
arr.join("连接符")
:将arr中每个元素转为字符串,用自定义的连接符分隔
//将字符拼接为单词
var chars=["H","e","l","l","o"];
console.log(chars.join("")); //Hello
固定套路: 1、将字符组成单词:chars.join(“”)->无缝拼接 扩展:判断数组是空数组:arr.join(“”)==”” 2、将单词组成句子:words.join(“”) 3、将数组换华为页面元素的内容: “<开始标签>”+arr.join(“</结束标签><开始标签>”)+”</结束标签>”
拼接和选取
不直接修改原数组,而返回新数组
concat()
拼接两个或更多的数组,并返回结果
var newArr=arr1.concat(值1,值2,arr2,值3,...)
slice()
返回现有数组的一个子数组
var subArr=arr.slice(starti,endi+1)
选取arr中starti位置开始,到endi结束的所有元素组成新数组返回
强调:凡是两个参数都是下标的函数,都有一个特性:含头不含尾
var arr1 = [10,20,30,40,50];
var arr2 = arr1.slice(1,4); //20,30,40
var arr3 = arr1.slice(2); //30,40,50
var arr4 = arr1.slice(-4,-2); //20,30
选取简写: 1、一直选取到结尾,可省略第二个参数 2、如果选取的元素离结尾很近:可用负数下标 3、复制数组:
arr.slice(0,arr.lenngth);
可简写为arr.slice();
修改数组
删除:splice直接修改原数组
arr.splice(starti,n);
删除arr中starti位置开始的n个元素不考虑含头不含尾
var deletes=arr.splice(starti,n);
返回值deletes保存了被删除的临时数组
插入:arr.splice(starti,0,值1,值2,...)
替换:arr.splice(starti,n,值1,值2,...)
颠倒:arr.reverse()
排序
排序API:
arr.sort()
:默认将所有元素转为字符串再排列
问题:只能排列字符串类型的元素
解决:使用自定义比较器函数
DOM查找
按ID属性,精确查找一个元素对象
var elem=document.getElementById("id")
强调:getElementById只能用在document上
何时:只用于精确查找一个元素
问题:不是所有元素都有ID
例:
<ul id="myList">
<li id="m1">首页</li>
<li id="m2">企业介绍</li>
<li id="m3">联系我们</li>
</ul>
var ul = document.getElementById('myList');
console.log(ul);
按标签名查找
var elems=parent.getElementsByTagName("tag");
查找指定parent节点下的所有标签为tag的子代节点
强调:可用在任意父元素上、不仅查直接子节点,而且查所有子代节点。返回一个动态集合,即使只找到一个元素,也返回集合,必须用[0]取出唯一元素。
问题:不但找直接,而且找所有子代。
<ul id="myList">
<li id="m1">首页</li>
<li id="m2">企业介绍</li>
<li id="m3">联系我们</li>
</ul>
var ul = document.getElementById('myList');
var list = ul.getElementsByTagName('li');
console.log(ul);
通过name属性查找
document.getElementsByName('name属性值')
可以返回DOM树种具有指定name属性值的所有子元素集合
<form id="registerForm">
<input type="checkbox" name="boy"/>
<input type="checkbox" name="boy"/>
<input type="checkbox" name="boy"/>
</form>
var list = document.getElemenrsByName('boy');
console.log(typeof list);
通过class查找
查找父元素下指定class属性的元素
var elems=parent.getElementsByClassName("class");
有兼容性问题:IE9+
<div id="news">
<p class="mainTitle">新闻标题1</p>
<p class="subTitle">新闻标题2</p>
<p class="mainTitle">新闻标题1</p>
</div>
var div = document.getElemntById('news');
var list = div.getElementsByClassName('mainTitle');
console.log(list);
通过CSS选择器查找
只找一个元素
var elem=parent.querySelector("selector")
强调:selector支持一切css选择器
强调:如果选择器匹配的有多个,只返回第一个
找多个
var elems=parent.querySelectorAll("selector")
强调:selector API 返回的是非动态集合
DOM修改
读取属性值
var value=elem.getAttribute("属性名");
修改属性值
var h1 = document.getElementById("a1");
h1.setAttributeNode("name",zhangji);
判读是否包含指定属性
var bool=elem.hasAttribute("属性名");
document.getElementById('bt1').hasAttribute('onclick');
移除属性
elem.removeAttribute("属性名");
修改样式
内联样式:elem.style.属性名
强调:属性名:去横线,变驼峰
比如:css:background-color => backgroundColor、list-style-type => listStyleType
DOM添加
1、创建空元素
2、设置关键属性
3、将元素添加到DOM树
创建空元素
var elem=document.createElement("元素名")
var table = document.createElement('table');
var tr = document.createElement('tr');
var td = document.createElement('td');
var td = document.createElement('td');
console.log(table);
设置关键属性
a.innerHTML=”go to tmooc”
a.href=”http://tmooc.cn“
设置关键样式
a.style.opacity=”1”;
a.style.cssText=”width:100px;height:100px”;
将元素添加到DOM树
parentNode.appendChild(childNode)
可用于为一个父元素追加最后一个子节点
var div = document.createElement('div');
var txt = document.createTextNode('版权声明');
div.appendChild(txt);
document.body.appendChild(div);
parentNode.insertBefore(newChild,existingChild)
ul.insertBefore(newLi,ul.lastChild);
添加元素优化
如果同时创建父元素和子元素,建议在内存中先将子元素添加到附院估算,再将父元素一次性挂到页面
如果只添加多个平级子元素时,就要将所有子元素,临时添加到文档片段中,再将文档片段整体添加到页面
var frag=document.createDocumentFragment();
frag.appendChild(child);
parent.appendChild(frag);
强调:append之后,frag自动释放,不会占用元素
BOM
周期性定时器
setInterval(exp,time)
var timer= setInterval(function(){
console.log("Hello World");
},1000)
clearInterval(timer);
一次性定时器
让程序延迟一段时间执行
setTimeout(exp,time);