HTML
标记、元素、属性、注释
HTML中,用于描述功能的符号称为标记,也叫标签。例如` < p> ` 、` < h1 >`
+ 标记在使用时必须使用尖括号` <> ` 括起来。
+ 封闭类标记/双标记:标记必须成对出现。
` < 标记> 内容< /标记> `
+ 非封闭类标记/单标记/空标记
` < 标记> ` 或 ` < 标记/> `
+ 元素是标记中每一对尖括号包围的部分。
+ 元素可以包含文本内容和其它元素,也可以是空的。
+ 元素可以相互嵌套,形成更为复杂的语法,但需注意标记的嵌套顺序。
+ 属性是用来修饰元素的。
属性的声明必须位于开始标记里。
一个元素的可以有多个属性,多属性之间用'空格' 隔开。
多属性之间不区分先后顺序。
+ 每个属性都有值。
属性和属性的值之间用'等号' 连接。
属性的值包含在引号内。
` 属性= '值' ` 或 ` 属性= "值" `
+ 标准属性/通用属性
每个元素都有自己所特有的属性。
有些属性是绝大多数元素都支持的属性,称为标准属性或通用属性。例如,id、title、class、style
< 元素 属性1= "值" 属性n= "值" > 文本或嵌套元素< /元素>
< 元素 属性1= "值" 属性n= "值" > 或 < 元素 属性1= "值" 属性n= "值" />
+ 语法:< ! -- 注释内容 -->
+ pycharm中注释方式:
【Ctrl + /】,批量注释,每行单独注释
【Ctrl + Shift + /】,批量注释,一个注释符号
HTML文档
结构
<! DOCTYPE html >
< html>
< head> .... </ head>
< body> .... </ body>
</ html>
示例:
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 我的站点</ title>
</ head>
< body>
Hello a! < br> Hello b!
< p> Hello c!</ p>
</ body>
</ html>
head 元素
< meta>
< title> < /title>
< style> < /style>
< script> < /script>
HTML、CSS、JS
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 我的站点</ title>
< style>
p {
text-align : center;
color : red;
}
</ style>
< script>
function clickme ( ) {
alert ( 'How are you?' ) ;
}
</ script>
</ head>
< body>
< p> 这是一个段落</ p>
< p>
< button> 这是一个按钮</ button>
</ p>
< p>
< button onclick = " clickme ( ) " > 点我</ button>
</ p>
</ body>
</ html>
文本和样式
文本常用标记
+ 直接键入的文本会用浏览器默认的样式显示
+ 包含在标记中的文本会被显示为标记所拥有的样式
` < h1 > 一级标题< /h1 >`
` < h2 > 二级标题< /h2 >`
` < h3 > 三级标题< /h3 >`
` < h4 > 四级标题< /h4 >`
` < h5 > 五级标题< /h5 >`
` < h6 > 六级标题< /h6 >`
` < p> 整段内容< /p> `
` < div> 整块内容< /div> `
` < strong> 加粗< /strong> `
` < b> 粗体< /b> `
` < i> 斜体< /i> `
` < u> 下划线< /u> `
` < s> 删除线< /s> `
` < span> 内容< /span> `
` < br> `
` < hr> `
` & nbsp; `
` & copy; `
` & lt; `
` & gt; `
` < sup> 上标内容< /sup> `
` < sub> 下标内容< /sub> `
` < span class = 自定义样式名> 修饰内容< span/> `
常用内置样式示例
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 内置样式示例</ title>
</ head>
< body>
< h1> 测试 test1</ h1>
< h2> 测试 test2</ h2>
< h3> 测试 test3</ h3>
< h4> 测试 test4</ h4>
< h5> 测试 test5</ h5>
< h6> 测试 test6</ h6>
< hr>
< p>
测试 test< br>
< strong> 测试 test</ strong> < br>
< b> 测试 test</ b> < br>
< i> 测试 test</ i> < br>
< u> 测试 test</ u> < br>
< s> 测试 test</ s> < br>
</ p>
< hr>
< div>
测试 test < br>
测试 test
</ div>
< div>
© 版权所有:xxx公司< br>
书名:< 时间简史> < br>
2< sup> 3</ sup> = 8 < br>
log< sub> 2</ sub> 8 = 3
</ div>
< hr>
</ body>
</ html>
自定义样式示例
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 自定义样式示例</ title>
< style>
.c1 {
color : darkred;
}
.c2 {
color : green;
}
</ style>
</ head>
< body>
测试 < span class = " c1" > test</ span> 测试< br>
测试 < span class = " c2" > test</ span> 测试
</ body>
</ html>
图像、链接、表格、列表、表单
图像 <img>
图像常用属性
` < img src = '图片路径' 属性2= '值' 属性n= '值' > `
< img> 常用属性:
src = '图片路径'
height = '100px'
width = '100px'
alt = '图像无法显示时,显示的文字'
id = '值'
图像示例
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 图像</ title>
</ head>
< body>
< div>
< img src = " https://test.com/panda.jpg" >
</ div>
< div>
< img src = " imgs/panda.jpg" >
</ div>
< div>
< img src = " imgs/dogs.jpg" alt = " 图像无法显示时,显示的文字" >
</ div>
< div>
< img src = " imgs/panda.jpg" height = " 100px" >
< hr>
< img src = " imgs/panda.jpg" width = " 100px" >
< hr>
< img src = " imgs/panda.jpg" height = " 100px" width = " 100px" >
</ div>
</ body>
</ html>
链接 <a> </a>
链接常用属性
` < a href = '链接路径' target = '打开方式' > 显示内容或元素< /a> `
< a> < /a> 常用属性:
href = '链接路径'
'绝对URL路径'
'相对URL路径'
'#元素id值'
'#'
''
target = '目标打开位置'
'_self'
'_blank'
链接示例
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 链接</ title>
</ head>
< body>
< div>
< a href = " https://www.baidu.com" > 百度</ a>
< hr>
< a href = " https://www.jd.com" , target = " _blank" > 京东</ a>
</ div>
< div>
< a href = " https://www.baidu.com" target = " _blank" >
< img src = " imgs/panda.jpg" height = " 100px" >
</ a>
</ div>
< a href = " #id_1" > 跳转到图片猫</ a>
< hr>
< a href = " #" > 返回顶部</ a>
< hr>
< a href = " " > 刷新页面</ a>
</ div>
</ div>
< img id = " id_1" src = " imgs/cat.jpg" height = " 100px" >
</ div>
</ body>
</ html>
表格 <table> </table>
表格常用属性
table> tr*3 > td*2,tab键
< table>
< thead>
< tr>
< td> 单元格内容< /td>
< td> 单元格内容< /td>
< /tr>
< /thead>
< tbody>
< tr>
< td> 单元格内容< /td>
< td> 单元格内容< /td>
< /tr>
< tr>
< td> 单元格内容< /td>
< td> 单元格内容< /td>
< /tr>
< /tbody>
< tfoot>
< tr>
< td> 单元格内容< /td>
< td> 单元格内容< /td>
< /tr>
< /tfoot>
< /table>
` < table 属性1= '值' 属性n= '值' > < /table> `
< table> < /table> 常用属性:
align
valign
width
height
border
cellpadding
cellspacing
bgcolor
` < tr 属性1= '值' 属性n= '值' > < /tr> `
< tr> < /tr> 常用属性
align
valign
width
height
` < td 属性1= '值' 属性n= '值' > 单元格内容< /td> `
< td> < /td> 常用属性
align
valign
width
height
colspan
rowspan
td > tr > table
< thead> < /thead>
< tbody> < /tbody>
< tfoot> < /tfoot>
表格示例
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 表格</ title>
</ head>
< body>
< table border = " 1px" width = " 400px" >
< tr>
< td colspan = " 2" align = " center" height = " 50px" width = " 200px" > 课程</ td>
< td> 分数</ td>
< tr height = " 50px" >
< td rowspan = " 4" width = " 80px" > 张三</ td>
< td> 语文</ td>
< td> xxx</ td>
</ tr>
< tr height = " 50px" >
< td> 数学</ td>
< td> yyy</ td>
</ tr>
< tr height = " 50px" >
< td> 英文</ td>
< td> zzz</ td>
</ tr>
< tr height = " 50px" >
< td colspan = " 2" > A</ td>
</ tr>
< tr height = " 50px" >
< td rowspan = " 4" > 李四</ td>
< td align = " left" > 语文</ td>
< td valign = " top" > xxx</ td>
</ tr>
< tr height = " 50px" align = " right" >
< td align = " center" > 数学</ td>
< td valign = " middle" > yyy</ td>
</ tr>
< tr height = " 50px" >
< td align = " right" > 英文</ td>
< td valign = " bottom" > zzz</ td>
</ tr>
< tr height = " 50px" >
< td colspan = " 2" > B< br> C</ td>
</ tr>
</ table>
< table border = " 1px" width = " 200" >
< thead>
< tr>
< th> 日期</ th>
< th> 支出</ th>
</ tr>
</ thead>
< tbody>
< tr>
< td> 1-16</ td>
< td> 100</ td>
</ tr>
< tr>
< td> 1-17</ td>
< td> 160</ td>
</ tr>
</ tbody>
< tfoot>
< tr>
< td> 总计</ td>
< td> 260</ td>
</ tr>
</ tfoot>
</ table>
</ body>
</ html>
列表 <ol> </ol>
<ul> </ul>
列表常用属性
有序列表 ol> li*3,tab键
无序列表 ul> li*3,tab键
< ol>
< li> 列表元素1 < /li>
< li> 列表元素2 < /li>
< li> 列表元素3 < /li>
< /ol>
< ul>
< li> 列表元素1 < /li>
< li> 列表元素2 < /li>
< li> 列表元素3 < /li>
< /ul>
` < ol 属性1= '值' 属性n= '值' > < /ol> `
< ol> < /ol> 常用属性:
type
'A'
'I'
start
'5'
` < ul 属性1= '值' 属性n= '值' > < /ul> `
< ul> < /ul> 常用属性:
type
'circle'
'square'
列表示例
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 列表</ title>
</ head>
< body>
< ol>
< li> 张三</ li>
< li> 李四</ li>
< li> 王五</ li>
</ ol>
< ol type = " A" >
< li> 张三</ li>
< li> 李四</ li>
< li> 王五</ li>
</ ol>
< ol type = " A" start = " 5" >
< li> 张三</ li>
< li> 李四</ li>
< li> 王五</ li>
</ ol>
< ol type = " I" start = " 3" >
< li> 张三</ li>
< li> 李四</ li>
< li> 王五</ li>
</ ol>
< hr>
< ul>
< li> 张三</ li>
< li> 李四</ li>
< li> 王五</ li>
</ ul>
< ul type = " circle" >
< li> 张三</ li>
< li> 李四</ li>
< li> 王五</ li>
</ ul>
< ul type = " square" >
< li> 张三</ li>
< li> 李四</ li>
< li> 王五</ li>
</ ul>
</ body>
</ html>
表单 <form></form>
表单元素属性
1 . 表单用于显示、收集信息,并提交信息到服务器。有两个基本部分:
实现数据交互的可见的界面元素
提交后的表单处理
2 . 表单元素` < form> < /form> `
3 . 表单可以包含很多不同类型的表单控件,表单控件元素只有在表单元素` < form> < /form> ` 中才能发挥作用
4 . 表单控件元素有:
input元素:输入框(文本框、密码框、隐藏控件)、选择框(单选框、复选框)、按钮(提交按钮、重置按钮、普通按钮)
select和option元素
textarea元素
其它元素
表单元素` < form 属性1= "值" 属性n= "值" > < /form> `
< form> < /form> 常用属性
action = "URL地址"
target = '目标打开位置'
'_self'
'_blank'
name = "表单名称"
method = "表单数据提交方式"
enctype = "表单数据进行编码的方式"
<input>
常用属性
表单控件元素` < input type = "值" 属性2= "值" 属性n= "值" > `
单标记< input> 常用属性
+ 提交按钮。传送表单数据,将text、password、hidden的键值对值赋予form的属性action指定的url路径
< input type = "submit" value = "按钮的文字" >
+ 重置按钮。清空表单的内容并把所有表单控件设置为最初的默认值。缺省value= "重置"
< input type = "reset" value = "按钮的文字" >
+ 普通按钮。用于执行脚本
< input type = "button" value = "按钮的文字" >
+ 文本框。显示明文,用于获取值
< input type = "text" name = "被赋值的键" placeholder = "提示信息" maxlength = "最大字符数" >
+ 密码框。不显示明文,用于获取值
< input type = "password" name = "被赋值的键" placeholder = "提示信息" maxlength = "最大字符数" >
+ 隐藏输入框。直接用于设置键值对
< input type = "hidden" name = "隐藏赋值的键" value = "赋予的值" >
+ 单选框。同一组单选框的name相同。checked预选中
< input type = "raido" name = "被赋值的键" value = "赋予的值" checked>
+ 复选框。同一组复选框的name相同。checked预选中
< input type = "checkbox" name = "被赋值的键" value = "赋予的值" checked>
< label>
< input type = "radio" name = "键" value = "值" >
文本
< /label>
< input id = "id值" type = "radio" name = "键" value = "值" >
< label for = "id值" >
文本
< /label>
<input>
示例之输入框
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 输入框</ title>
</ head>
< body>
< form>
< p>
user: < input type = " text" placeholder = " 用户名" > < br>
pass: < input type = " password" placeholder = " 密码" > < br>
</ p>
< input type = " submit" value = " 登 陆" >
< input type = " reset" >
</ form>
< hr>
< form action = " https://www.sogou.com/web" target = " _blank" >
< input type = " text" name = " query" >
< input type = " submit" value = " 搜狗搜索" >
</ form>
< hr>
< form action = " https://images.baidu.com/search/index" target = " _blank" >
< input type = " hidden" name = " tn" value = " baiduimage" >
< input type = " text" name = " word" >
< input type = " submit" value = " 百度搜图" >
</ form>
</ body>
</ html>
<input>
示例之选择框 <label></label>
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 选择框</ title>
</ head>
< body>
< form>
< p> 1. 性别?</ p>
< label>
< input type = " radio" name = " q1" value = " A" >
A. 男
</ label> < br>
< input id = " id_2" type = " radio" name = " q1" value = " B" >
< label for = " id_2" > B. 女</ label>
< p> 2. 爱好有哪些?</ p>
< input id = " 1" type = " checkbox" name = " q2" value = " A" >
< label for = " 1" > A. 爬山</ label> < br>
< input id = " 2" type = " checkbox" name = " q2" value = " B" >
< label for = " 2" > B. 看戏</ label> < br>
< input id = " 3" type = " checkbox" name = " q2" value = " C" >
< label for = " 3" > C. 远足</ label> < br>
< input id = " 4" type = " checkbox" name = " q2" value = " D" >
< label for = " 4" > D. 游泳</ label>
< p> < input type = " submit" > </ p>
</ form>
</ body>
</ html>
<select></select>
下拉列表 <option></option>
select> option*3,tab键
< select name = "被赋值的键" >
< option value = "赋予的值" > 选项1 < /option>
< option value = "赋予的值" selected> 选项2 < /option>
< option value = "赋予的值" > 选项3 < /option>
< /select>
< select name = "被赋值的键" size = "3" >
< option value = "赋予的值" > 选项1 < /option>
< option value = "赋予的值" selected> 选项2 < /option>
< option value = "赋予的值" > 选项3 < /option>
< /select>
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 下拉列表</ title>
</ head>
< body>
< form>
< p> 3. 爱好有哪些?</ p>
< select name = " q3" >
< option value = " A" > A. 爬山</ option>
< option value = " B" > B. 看戏</ option>
< option value = " C" > C. 远足</ option>
< option value = " D" > D. 游泳</ option>
< option value = " E" selected > E. 跑步</ option>
</ select>
< p> 4. 爱好有哪些?</ p>
< select name = " q4" size = 3>
< option value = " A" > A. 爬山</ option>
< option value = " B" > B. 看戏</ option>
< option value = " C" > C. 远足</ option>
< option value = " D" > D. 游泳</ option>
< option value = " E" selected > E. 跑步</ option>
</ select>
< p> < input type = " submit" > </ p>
</ form>
</ body>
</ html>
<textarea></textarea>
多行文本框
< textarea name = "被赋值的键" cols = "文本框宽度" rows = "文本框高度" > 预输入内容< /textarea>
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 多行文本框</ title>
</ head>
< body>
< form>
< textarea name = " comment" cols = " 50" rows = " 5" > 请输入内容</ textarea> < br>
< input type = " submit" value = " 发表" >
</ form>
</ body>
</ html>
CSS
CSS(Cascading Style Sheets,层叠样式表)
HTML用于定义内容的结构和语义,CSS用于设计风格和布局。
可以通过三种方式在HTML中使用CSS:
1 . 内联样式
+ 通过属性style定义样式,并直接写入现有的HTML标签
style = "属性1:值;属性n:值;"
+ 缺点:CSS和HTML标签,标签使用样式都需要定义一次
2 . 内嵌样式
+ 借助标签< style> < /style> 定义样式,并写入HTML的< head> 之间
< style>
选择器 {
属性1: 值;
属性n: 值;
}
< /style>
+ 优点:实现CSS和HTML标签的分离
3 . 外链样式/外联式
+ 将CSS样式写入一个.css文件,借助标签< link/> 链接.CSS文件,并写入HTML的< head> 之间
< link rel = "stylesheet" href = ".css文件路径" >
+ 优点:实现CSS文件和HTML文件的解耦
/* 注释内容 */
/*
注释内容
注释内容
*/
CSS常用属性
background-color
color
font-size
text-align
display
HTML使用CSS的三种方式
内联样式 style="属性1:值;属性n=值"
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> CSS内联样式</ title>
</ head>
< body>
< h1 style = " background-color : red; color : white; font-size : 40px; text-align : center; " >
测试1test
</ h1>
< h1 style = " background-color : red; color : white; font-size : 40px; text-align : center; " >
测试2test
</ h1>
</ body>
</ html>
内嵌样式 <style>选择器{属性1:值;属性n:值;}</style>
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> CSS内嵌样式</ title>
< style>
h1 {
background-color : red;
color : white;
font-size : 40px;
text-align : center;
}
</ style>
</ head>
< body>
< h1> 测试1test</ h1>
< h1> 测试2test</ h1>
</ body>
</ html>
外链样式 <link rel="stylesheet" href=".css文件路径">
]# cat css/h1.css
h1 {
background-color: red;
color: white;
font-size: 40px;
text-align: center;
}
]# cat test.html
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> CSS外链样式</ title>
< link rel = " stylesheet" href = " css/h1.css" />
</ head>
< body>
< h1> 测试1test</ h1>
< h1> 测试2test</ h1>
</ body>
</ html>
CSS 选择器
选择器种类
根据查找元素的方式不同,可以分为以下几类:
标签选择器
class选择器
id选择器
群组选择器
后代选择器
子代选择器
伪类选择器
标签选择器 标签名{}
标签名 {
属性 : 值;
属性 : 值;
}
* {
属性 : 值;
属性 : 值;
}
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 标签选择器</ title>
< style>
h1 {
background-color : pink;
color : blue;
font-size : 40px;
text-align : center;
}
</ style>
</ head>
< body>
< h1> 测试1test</ h1>
< h1> 测试2test</ h1>
</ body>
</ html>
class选择器 .class名{}
共享
.class名 {
属性 : 值;
属性 : 值;
}
标签使用class属性的快捷方式
标签名.class名,tab键
标签使用id属性和class属性快捷方式
标签名#id名.class名,tab键
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> class选择器</ title>
< style>
.c1 {
background-color : pink;
color : blue;
font-size : 40px;
text-align : center;
}
</ style>
</ head>
< body>
< h1 class = " c1" > 测试1test</ h1>
< h1 class = " c1" > 测试2test</ h1>
</ body>
</ html>
id选择器 #id名{}
独享
#id名 {
属性 : 值;
属性 : 值;
}
标签使用id属性的快捷方式
标签名#id名,tab键
标签使用id属性和class属性快捷方式
标签名#id名.class名,tab键
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> id选择器</ title>
< style>
#i1 {
background-color : pink;
color : blue;
font-size : 40px;
text-align : center;
}
#i2 {
background-color : pink;
color : blue;
font-size : 40px;
text-align : center;
}
</ style>
</ head>
< body>
< h1 id = " i1" > 测试1test</ h1>
< h1 id = " i2" > 测试1test</ h1>
</ body>
</ html>
后代选择器 标签 后代标签{}
标签1 标签2 {
属性 : 值;
}
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 后代选择器</ title>
< style>
p {
color : red;
}
span {
color : blue;
}
div p {
color : darkred;
}
div span {
color : green;
}
</ style>
</ head>
< body>
< p>
测试< br>
< span> 测试</ span>
</ p>
< div>
< p>
测试< br>
< span> 测试</ span>
</ p>
< span> 测试</ span>
</ div>
</ body>
</ html>
子代选择器 标签 > 子代标签{}
标签1 > 标签2 {
属性 : 值;
}
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 后代选择器</ title>
< style>
p {
color : red;
}
span {
color : blue;
}
div > p {
color : darkred;
}
div > span {
color : green;
}
</ style>
</ head>
< body>
< p>
测试< br>
< span> 测试</ span>
</ p>
< div>
< p>
测试< br>
< span> 测试</ span>
</ p>
< span> 测试</ span>
</ div>
</ body>
</ html>
优先级
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 子代和后代的优先级</ title>
< style>
p {
color : red;
}
span {
color : blue;
}
div p {
font-weight : bold;
color : darkred;
}
div span {
font-weight : bold;
color : green;
}
div > span {
font-weight : bold;
color : orange;
}
.c1 {
font-weight : bolder;
color : purple;
background-color : pink;
}
.c1 > p {
color : greenyellow;
background-color : gray;
}
.c1 > span {
color : orangered;
}
</ style>
</ head>
< body>
< p>
测试1< br>
< span> 测试2</ span>
</ p>
< hr>
< div>
测试3
< p>
测试4< br>
< span> 测试5</ span>
</ p>
< span> 测试6</ span>
</ div>
< hr>
< div class = " c1" >
测试7
< p>
测试8< br>
< span> 测试9</ span>
</ p>
< span> 测试10</ span>
</ div>
</ body>
</ html>
伪类选择器
标签名:hover {
属性 : 值;
}
.class名:hover {
属性 : 值;
}
#id名:hover {
属性 : 值;
}
标签名:active {
属性 : 值;
}
.class名:active {
属性 : 值;
}
#id名:active {
属性 : 值;
}
示例:滑过、点击
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 鼠标滑过、点击</ title>
< style>
h1 {
background-color : gray;
color : white;
}
h1:hover {
background-color : lightpink;
color : purple;
}
h2 {
background-color : gray;
color : yellowgreen;
display : inline;
}
h2:hover {
background-color : lightpink;
color : green;
cursor : pointer;
}
h3 {
background-color : gray;
color : white;
}
h3:active {
background-color : lightpink;
color : purple;
}
</ style>
</ head>
< body>
< h1> 测试</ h1>
< h2> 测试</ h2>
< h3> 测试</ h3>
</ body>
</ html>
示例:过渡速度
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 过渡速度</ title>
< style>
h1 {
background-color : gray;
color : white;
transition : all 5s;
}
h1:hover {
background-color : lightpink;
color : purple;
}
h2 {
background-color : gray;
color : yellowgreen;
display : inline;
transition : color 5s;
}
h2:hover {
background-color : lightpink;
color : green;
}
</ style>
</ head>
< body>
< h1> 测试</ h1>
< h2> 测试</ h2>
</ body>
</ html>
JavaScript
JS(JavaScript)
JS是一种浏览器解释型语言,嵌套在HTML文件中交给浏览器解释执行。主要用来实现网页的动态效果、用户交互以及前后端的数据传输等。
// 注释内容
/*
注释内容
注释内容
*/
- 核心语法 ECMAScript 规范了JS的基本语法
- 浏览器对象模型 BOM(Browser Object Model),提供了一系列操作浏览器的方法
- 文档对象模型 DOM(Document Object Model),提供了一系列操作的文档的方法
HTML使用JS的方式
元素绑定事件
事件:指用户的行为(单击、双击等)或元素的状态(输入框的焦点状态等)
事件处理:元素监听某种事件并在事件发生后自动执行事件处理函数。
常用事件:onclick(单击事件)
...
< body>
< button onclick = " console. log ( 'Hello World' ) ; " > 控制台</ button>
< br>
< button onclick = " alert ( 'Hello World' ) ; " > 弹窗</ button>
</ body>
...
文档内嵌、外部链接
文档内嵌:在HTML文档中直接使用< script> < /script> 内嵌JS代码。
script标签可以书写在文档的任意位置,书写多次。
程序一旦加载到script标签就会立即执行其内部的JS代码,因此不同的位置会"影响" 代码最终的执行效果。
通常放在head中的js是为了发生点击等事件时调用,放在body中的js是为了生成一定的内容。
一般会写在html标签之外。
< script>
JS代码
< /script>
外部链接:在HTML文档中使用< script src = "" > < /script> 引入外部的.js文件。
< script src = ".js文件路径" > < /script>
]# cat js/j1.js
alert("js文件的弹窗") // alert()告警弹窗
console.log("这是一个js文件"); // console.log()控制台输出
]# cat test.html
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> JS使用方法</ title>
< script>
alert ( "head的弹窗" ) ;
</ script>
< script src = " js/j1.js" > </ script>
</ head>
< body>
< script>
alert ( "body的弹窗" ) ;
</ script>
< script src = " js/j1.js" > </ script>
</ body>
< script>
alert ( "html中的弹窗" ) ;
</ script>
< script src = " js/j1.js" > </ script>
</ html>
< script>
alert ( "html外的弹窗" ) ;
</ script>
< script src = " js/j1.js" > </ script>
JS基础语法
JS严格区分大小写。
JS是由语句组成,语句由关键字、变量、常量、运算符、方法组成。
分号可以作为语句结束的标志,也可以省略。
+ 自定义变量名、常量名、函数名、方法名,可以由数字、字母、下划线、美元符$ 组成,禁止以数字开头。
+ 禁止命名为关键字( var const function if else for while do break case switch return class) 。
+ 变量名严格区分大小写。
+ 尽量见名知意,变量名多个单词组成采用小驼峰,例如:"userName"
变量的声明
var a;
a = 10 ;
var b = 22 ;
var x,y,z;
var m = 10 , n = 22 ;
+ 声明变量但未赋值,变量初始值为undefined。
+ 声明变量不赋值不能省略var。
+ 声明变量并赋值不建议省略var,某些浏览器可能会报错。
数据类型
基本数据类型
< script>
var n1 = 10 ;
console. log ( n1, typeof n1)
var n2 = 3.14 ;
console. log ( n2, typeof n2)
var s1 = "10" ;
var s2 = "张三" ;
console. log ( s1, typeof s1) ;
var b1 = true ;
var b2 = false ;
console. log ( b1, typeof b1) ;
var u;
console. log ( u, typeof u) ;
var n1 = null ;
console. log ( n1, typeof n1) ;
var n3 = null ;
console. log ( n3, typeof n3) ;
var arr = [ 1 , 3.14 , "a" , true , false ]
console. log ( arr, typeof arr) ;
console. log ( arr[ 0 ] , typeof arr[ 0 ] ) ;
console. log ( arr[ 4 ] , typeof arr[ 4 ] ) ;
console. log ( arr[ - 1 ] , typeof arr[ - 1 ] ) ;
var dic = { one : 1 , two : "zhangsan" } ;
console. log ( dic, typeof dic) ;
console. log ( dic. one, typeof dic[ "one" ] ) ;
console. log ( dic[ "two" ] , typeof dic. two) ;
</ script>
字符串类型、数组对象、字典对象
< script>
var person = { name : "张三" , gender : "male" } ;
person. age = 19 ;
person. hobby = "唱歌" ;
console. log ( person) ;
var info = "Hello world" ;
console. log ( info[ 0 ] ) ;
console. log ( info. length) ;
console. log ( info. slice ( 0 , 6 ) ) ;
console. log ( info. search ( "world" ) ) ;
console. log ( info. search ( "forld" ) ) ;
console. log ( 123 + "," + info) ;
var name = "Tom" ;
console. log ( ` I'm ${ name} ` ) ;
var arr = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ;
console. log ( arr. length) ;
console. log ( arr. slice ( 1 , 3 ) ) ;
arr. push ( 10 ) ;
console. log ( arr) ;
arr. pop ( ) ;
console. log ( arr) ;
</ script>
数据类型转换
< script>
var n1 = 10 ;
console. log ( n1, typeof n1) ;
n1 = n1. toString ( ) ;
console. log ( n1, typeof n1) ;
var b1 = true ;
console. log ( b1, typeof b1) ;
b1 = b1. toString ( ) ;
console. log ( b1, typeof b1) ;
var s1 = "22" ;
console. log ( s1, typeof s1) ;
s1 = Number ( s1) ;
console. log ( s1, typeof s1) ;
var s2 = "5a" ;
console. log ( s2, typeof s2) ;
s2 = Number ( s2) ;
console. log ( s2, typeof s2) ;
</ script>
< script>
var n = 33 ;
var s = "abc" ;
res = n + s;
console. log ( n, typeof n) ;
console. log ( res, typeof res) ;
</ script>
运算符
赋值运算符:=
算术运算符:+ - * / %
复合运算符:+= -= *= /= %=
自运算:++ --
比较运算符(结果为布尔值):> < >= <= == ( 相等) != ( 不相等) == = ( 全等) != = ( 不全等)
相等 : 不考虑数据类型,只做值的比较(包含自动类型转换)
全等 : 不会进行数据类型转换,要求数据类型一致并且值相等才判断全等
逻辑运算符:&& || !
< script>
var a = 10 ;
console. log ( a++ ) ;
console. log ( a) ;
console. log ( ++ a) ;
console. log ( a) ;
console. log ( "100" == 100 ) ;
console. log ( "100" === 100 ) ;
console. log ( true && false ) ;
console. log ( true || false ) ;
console. log ( ! true ) ;
var age = 50
console. log ( 18 <= age<= 60 )
console. log ( 70 >= age>= 10 )
</ script>
分支与循环
if 分支
if ( 条件表达式) {
条件成立时执行;
}
if ( 条件表达式) {
条件成立时执行
} else {
条件不成立时选择执行;
}
if ( 条件1 ) {
条件1 成立时执行;
} else if ( 条件2 ) {
条件2 成立时执行;
} else if ( 条件3 ) {
条件3 成立时执行;
} ... else {
条件不成立时执行;
}
if ( 0 ) { }
if ( 0.0 ) { }
if ( "" ) { }
if ( undefined ) { }
if ( NaN ) { }
if ( null ) { }
< script>
var score = prompt ( "输入一个分数:" )
if ( score >= 90 ) {
console. log ( "优秀" ) ;
} else if ( score >= 80 ) {
console. log ( "良好" ) ;
} else if ( score >= 60 ) {
console. log ( "及格" ) ;
} else {
console. log ( "不及格" ) ;
}
</ script>
while循环
var 循环变量 = 初始值;
while ( 条件表达式) {
循环体;
更新循环变量;
}
var 循环变量 = 初始值;
do {
循环体;
更新循环变量;
} while ( 条件表达式) ;
< script>
var n = 0 ;
while ( n < 4 ) {
console. log ( n) ;
n++ ;
}
var m = 0 ;
do {
console. log ( m) ;
m++ ;
} while ( m < 4 ) ;
</ script>
for 循环
for ( var 循环变量 = 初始值; 条件表达式; 更新循环变量) {
循环体;
}
var 数组对象 = [ 元素1 , 元素2 , 元素n]
for ( var i in 数组对象) {
循环体
}
< script>
for ( var i = 0 ; i < 4 ; i++ ) {
console. log ( i) ;
}
var arr = [ 1 , 3.14 , "a" , true , false ]
for ( var i in arr) {
console. log ( i, arr[ i] , typeof arr[ i] )
}
</ script>
循环关键字
break
continue
函数、匿名函数
function 函数名 ( 参数列表 ) {
函数体;
return 返回值;
}
函数名 ( 参数列表) ;
( function ( 形参 ) ) {
函数体
} ) ( 实参) ;
var fn = function ( 形参 ) { 函数体} ;
fn ( ) ;
< script>
var a = prompt ( "请输入一个数" ) ;
a = Number ( a) ;
function add_num ( a, b ) {
return a + b;
}
console. log ( add_num ( a, 22 ) ) ;
var sum;
sum = ( function ( a, b ) { return a + b} ) ( a, 22 )
console. log ( sum)
var fn = function ( a, b ) { return a + b}
console. log ( fn ( a, 22 ) )
</ script>
DOM
DOM(Document Object Model,文档对象模型),提供操作HTML文档的一套工具。
BOM(Browser Object Model,浏览器对象模型),提供操作浏览器的一套工具。
JS不能直接操作HTML标签,可以通过操作DOM对象来操作HTML的元素。
document
element
node
创建DOM
document.getElementById( "id名" )
document.getElementsByTagName( "元素名" )
document.getElementsByName( "name名" )
document.getElementsByClassName( "class名" )
1 . getElementById( ) 得到一个DOM对象。
2 . getElementsByName( ) 、getElementsByTagName( ) 、getElementsByClassName( ) 得到DOM对象的集合,集合中每个元素都是一个DOM对象,顺序是其在HTML文档中出现的顺序,用法同数组。
1 . 每个id只能给一个元素独享,每个class可以给多个元素共享。
2 . 属性name一般用于单选框和多选框。
3 . 通过元素名查找会作用于HTML文档中该元素。
<! DOCTYPE html >
< html lang = " zh_CN" >
< head>
< meta charset = " UTF-8" >
< title> 创建DOM</ title>
</ head>
< body>
< p> 兴趣爱好:</ p>
< div>
< input type = " checkbox" name = " hobby" class = " c1" value = " a" /> 爬山< br>
< input type = " checkbox" name = " hobby" class = " c1" value = " b" /> 游泳< br>
< input type = " checkbox" name = " hobby" value = " c" /> 远足< br>
< input type = " checkbox" name = " hobby" id = " i1" value = " c" /> 唱歌< br>
</ div>
< button onclick = " checkNo ( ) ; " > 全不选</ button>
< button onclick = " checkReverse ( ) ; " > 反选</ button>
< button onclick = " checkHeadTwo ( ) ; " > 选前两个</ button>
< button onclick = " checkTailOne ( ) ; " > 选最后一个</ button>
</ body>
</ html>
< script type = " text/javascript" >
function checkNo ( ) {
var hobbys = document. getElementsByTagName ( "input" ) ;
for ( var i in hobbys) {
hobbys[ i] . checked = false ;
}
}
function checkReverse ( ) {
var hobbys = document. getElementsByName ( "hobby" ) ;
for ( var i = 0 ; i < hobbys. length; i++ ) {
hobbys[ i] . checked = ! hobbys[ i] . checked;
}
}
function checkHeadTwo ( ) {
checkNo ( ) ;
var hobbys = document. getElementsByClassName ( "c1" ) ;
for ( var i = 0 ; i < hobbys. length; i++ ) {
hobbys[ i] . checked = true ;
}
}
function checkTailOne ( ) {
checkNo ( )
var t = document. getElementById ( "i1" ) ;
t. checked = true ;
}
</ script>
DOM的属性和方法
DOM.innerHTML
DOM.innerText
DOM.属性名
DOM.属性名 = "属性值"
DOM.style = "width: 300px;" ;
DOM.style.width = "300px" ;
1 . 属性值为字符串形式,单位不能省略。
2 . 如果css属性名包含连接符,使用js访问时,改为小驼峰:font-size ——》fontSize
DOM.getAttribute( "属性名" ) ;
DOM.setAttribute( "属性名" , "属性值" )
DOM.removeAttribute( "属性名" )
DOM.childNodes
DOM.parentNode
DOM.previousSibling
< html> < button onclick = "函数名();" > 按钮内容< /button> < /html>
< script> function 函数名( ) { 代码} < /script>
< html> < button id = "id名" > 按钮内容< /button> < /html>
< script> document.getElementById( "id名" ) .onclick = function ( ) { 代码块} < /script>
DOM.innerHTML
、DOM.innerText
、DOM.style.子属性
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> DOM的属性和方法</ title>
< style>
div {
width : 100px;
height : 100px;
background-color : red;
transition : all 0.3s;
}
</ style>
</ head>
< body>
< p class = " c" > 使用< span style = " font-weight : bold; " > 变大</ span> 按钮,方块变大</ p>
< p>
< button id = " btnHtml" > innerHTML</ button>
< button id = " btnText" > innerText</ button>
</ p>
< button onclick = " bigger ( ) " > 变大</ button>
< div id = " box" > </ div>
</ body>
</ html>
< script>
document. getElementById ( "btnHtml" ) . onclick = function ( ) {
alert ( document. getElementsByTagName ( "p" ) [ 0 ] . innerHTML) ;
}
document. getElementById ( "btnText" ) . onclick = function ( ) {
alert ( document. getElementsByClassName ( "c" ) [ 0 ] . innerText) ;
}
function bigger ( ) {
var a = document. getElementById ( 'box' )
alert ( a. style. backgroundColor) ;
a. style = "width: 200px;" ;
a. style. height = "200px" ;
a. style. backgroundColor = "green" ;
alert ( a. style. backgroundColor) ;
}
</ script>
DOM.childNodes
、DOM.parentNode
、DOM.previousSibling
<! DOCTYPE html >
< html>
< head>
< meta charset = " UTF-8" >
< title> DOM的属性和方法</ title>
</ head>
< body>
< div id = " question" >
< p> 你喜欢哪个城市?</ p>
< ul id = " city" >
< li id = " bj" > 北京</ li> < li> 上海</ li>
< li> 东京</ li> < li> 首尔</ li> </ ul>
< p> 你手机的操作系统是?</ p>
< ul id = " phone" > < li> IOS</ li> < li id = " android" > < span style = " color : red; " > Android</ span> </ li> < li> Windows Phone</ li> </ ul>
</ div>
< div id = " btnList" >
< div> 01< button id = " btn01" > 统计城市有几个选项</ button> </ div>
< div> 02< button id = " btn02" > 查询id为city的节点的子节点个数</ button> </ div>
< div> 03< button id = " btn03" > 查询id为phone的节点的子节点个数</ button> </ div>
< div> 04< button id = " btn04" > 查询id为phone的节点的所有子节点标签之间的内容</ button> </ div>
< div> 05< button id = " btn05" > 查询id为phone的节点的所有子节点标签之间的文本</ button> </ div>
< div> 11< button id = " btn11" > 查询id为android的节点的父节点</ button> </ div>
< div> 12< button id = " btn12" > 查询id为android的节点的前一个兄弟节点</ button> </ div>
</ div>
</ body>
</ html>
< script type = " text/javascript" >
var city = document. getElementById ( "city" ) ;
var cityChilds = city. childNodes;
var phone = document. getElementById ( "phone" ) ;
var phoneChilds = phone. childNodes;
document. getElementById ( "btn01" ) . onclick = function ( ) {
var lis = city. getElementsByTagName ( "li" ) ;
alert ( lis. length) ;
} ;
document. getElementById ( "btn02" ) . onclick = function ( ) {
alert ( cityChilds. length) ;
console. log ( cityChilds) ;
} ;
document. getElementById ( "btn03" ) . onclick = function ( ) {
alert ( phoneChilds. length) ;
console. log ( phoneChilds) ;
} ;
document. getElementById ( "btn04" ) . onclick = function ( ) {
alert ( phone. firstChild. innerHTML) ;
alert ( phoneChilds[ 1 ] . innerHTML) ;
alert ( phone. lastChild. innerHTML) ;
} ;
document. getElementById ( "btn05" ) . onclick = function ( ) {
alert ( phone. firstChild. innerText) ;
alert ( phoneChilds[ 1 ] . innerText) ;
alert ( phone. lastChild. innerText) ;
} ;
var android = document. getElementById ( "android" ) ;
document. getElementById ( "btn11" ) . onclick = function ( ) {
var parentNode = android. parentNode;
console. log ( parentNode)
alert ( parentNode. innerHTML) ;
alert ( parentNode. innerText) ;
} ;
document. getElementById ( "btn12" ) . onclick = function ( ) {
var previousSibling = android. previousSibling;
alert ( previousSibling. innerHTML) ;
} ;
</ script>
DOM.xxxAttribute()
、DOM.属性
<! DOCTYPE html >
< html>
< head>
< meta charset = " UTF-8" >
< title> DOM的属性和方法</ title>
</ head>
< body>
< div>
name:
< input type = " text" name = " name" id = " username" placeholder = " 你的名字" maxlength = " 3" />
</ div>
< div id = " btnList" >
< div> < button id = " get" > 查询</ button> </ div>
< div> < button id = " func" > 属性和方法</ button> </ div>
</ div>
</ body>
</ html>
< script type = " text/javascript" >
document. getElementById ( "get" ) . onclick = function ( ) {
var username = document. getElementById ( "username" ) ;
alert ( username. placeholder) ;
alert ( username. name)
console. log ( username) ;
} ;
document. getElementById ( "func" ) . onclick = function ( ) {
var username = document. getElementById ( "username" ) ;
username. placehoder = "名字" ;
username. setAttribute ( "name" , "user" ) ;
username. removeAttribute ( "maxlength" ) ;
alert ( username. placehoder) ;
alert ( username. name) ;
console. log ( username) ;
} ;
</ script>
end