本章学习目标程度:了解

一、网页简史

  1. 蒂姆-博纳森-万维网发明人1991年。
  2. 按照标签来写网页,但是还没有一个规范。
  3. 浏览器与网页:浏览中所显示的内容就是网页。
  4. 浏览的问题:市面上浏览器不同,底层内核不同,可能渲染出的效果不同。HTML5的标准。
  5. W3C的建立:编写网页需要遵循的规范。
  6. 页面由三部分内容组成:分别是内容(结构)、表现、行为。
  • 内容(结构),是我们在页面中可以看到的数据。我们称之为内容。一般内容我们使用 html 技术来展示。
  • 表现,指的是这些内容在页面上的展示形式。比如说。布局,颜色,大小等等。一般使用
  • CSS 技术实现行为,指的是页面中元素与输入设备交互的响应。一般使用 javascript 技术实现。

    二、HTML

    2.1 html简介
  1. Hyper Text Markup Language (超文本标记语言)
  2. HTML 通过标签来标记要显示的网页中的各个部分。网页文件本身是一种文本文件, 通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)
  3. Java 文件是需要先编译,再由java 虚拟机跑起来。但HTML 文件它不需要编译,直接由浏览器进行解析执行。

2.2 标签介绍以及应用
  1. html 代码不是很严谨。有时候标签不闭合,也不会报错。
  2. 常用标签介绍 文档:w3cschool.CHM
  3. 我是字体标签

    1. <!--
    2. <!DOCTYPE html> html5的声明
    3. <html lang="en"> 声明整个网页
    4. <head> 表示网页的头部
    5. <body> 表示网页的身体 网页的主体内容全部都定义在body
    6. <h1>网页的标题</h1> 网页的标题
    7. <hr> 分割线
    8. <img src="../jpg/11.jpg"> 用于嵌入图片
    9. <table> 表示的是表格
    10. <tr>一行
    11. <td>一列
    12. <input type="text"> 文本输入框
    13. <input type="password"> 密码输入框
    14. <input type="radio" name="sex"> 单选框,单选框必须要用name属性对其进行分组
    15. <input type="checkbox" name="hobby"> 多选框
    16. <input type="button" name="hobby"> 普通按钮
    17. <input type="submit" name="hobby"> 表单提交按钮
    18. <form> 用于访问某一个资源,可以提交对应的数据
    19. <br> 换行
    20. <select> 下拉列表框
    21. <option> 下拉项
    22. -->
    23. <!DOCTYPE html>
    24. <html lang="en">
    25. <head>
    26. <meta charset="UTF-8">
    27. <title>开发的第一个网页</title>
    28. </head>
    29. <body>
    30. <h1>标题一</h1>
    31. <h2>标题二</h2>
    32. <hr>
    33. <!--按像素设置边框-->
    34. <table border="1px">
    35. <tr>
    36. <td>111</td>
    37. <td>222</td>
    38. <td>2223</td>
    39. <td><input type="text"></td>
    40. </tr>
    41. <tr>
    42. <td>3</td>
    43. <td>4</td>
    44. <td><input type="button" name="check" > 普通按钮</td>
    45. <!--注意文本输入框也需要用<td>括起来,不然格式会乱-->
    46. <td><input type="text"></td>
    47. </tr>
    48. <tr>
    49. <td>5</td>
    50. <td>6</td>
    51. <td><input type="submit" name="hobby"> 表单提交按钮</td>
    52. <td><input type="text"></td>>
    53. </tr>
    54. <tr>
    55. <!-- 单选框-->
    56. <td> 男:<input type="radio" name="sex">女:<input type="radio" name="sex"></td>
    57. <!--多选框-->
    58. <td>爱好:
    59. 唱<input type="checkbox" name="hobby">
    60. rap<input type="checkbox" name="hobby">
    61. 篮球<input type="checkbox" name="hobby">
    62. </td>
    63. <!--下拉列表框-->
    64. <td>
    65. <select>
    66. <option>--请选择--</option>
    67. <option>--亚瑟--</option>
    68. <option>--后裔--</option>
    69. <option>--安其拉--</option>
    70. </select>
    71. </td>
    72. <td><input type="text"></td>>
    73. </td>
    74. </tr>
    75. </table>
    76. </body>
    77. </html>
  4. 超链接 ( 重 点

在网页中所有点击之后可以跳转的内容都是超连接

  1. 需求 1:普通的 超连接。
  2. <body>
  3. <!-- a 标签是 超链接
  4. href 属性设置连接的地址
  5. target 属性设置哪个目标进行跳转
  6. _self
  7. 表示当前页面(默认值)
  8. _blank
  9. 表示打开新页面来进行跳转
  10. -->
  11. <a href="http://localhost:8080">百度</a><br/>
  12. <a href="http://localhost:8080" target="_self">百度_self</a><br/>
  13. <a href="http://localhost:8080" target="_blank">百度_blank</a><br/>
  14. </body>
  1. img标签

    1. 使用 img 标签显示一张美女的照片。并修改宽高,和边框属性
    2. <body>
    3. <!--需求 1:使用 img 标签显示一张美女的照片。并修改宽高,和边框属性
    4. img 标签是图片标签,用来显示图片
    5. src 属性可以设置图片的路径
    6. width 属性设置图片的宽度
    7. height 属性设置图片的高度
    8. border 属性设置图片边框大小
    9. alt 属性设置当指定路径找不到图片时,用来代替显示的文本内容在 JavaSE 中路径也分为相对路径和绝对路径.
    10. 相对路径:从工程名开始算
    11. 绝对路径:盘符:/目录/文件名
    12. web 中路径分为相对路径和绝对路径两种
    13. 相对路径:
    14. .
    15. 表示当前文件所在的目录
    16. ..
    17. 表示当前文件所在的上一级目录
    18. 文件名
    19. 表示当前文件所在目录的文件,相当于 ./文件名
    20. ./ 可以省略
    21. 绝对路径:
    22. 正确格式是: http://ip:port/工程名/资源路径
    23. 错误格式是: 盘符:/目录/文件名
    24. -->
    25. <img src="1.jpg" width="200" height="260" border="1" alt="美女找不到"/>
    26. <img src="../2.jpg" width="200" height="260" />
    27. <img src="../imgs/3.jpg" width="200" height="260" />
    28. <img src="../imgs/4.jpg" width="200" height="260" />
    29. <img src="../imgs/5.jpg" width="200" height="260" />
    30. <img src="../imgs/6.jpg" width="200" height="260" />
    31. </body>
  2. 列表标签

无序列表 、 有序列表

  1. 需求 1:使用无序,列表方式,把东北 F4,赵四,刘能,小沈阳,宋小宝,展示出来
  2. <body>
  3. <!--需求 1:使用无序,列表方式,把东北 F4,赵四,刘能,小沈阳,宋小宝,展示出来
  4. ul 是无序列表
  5. type 属性可以修改列表项前面的符号
  6. li 是列表项
  7. -->
  8. <ul type="none">
  9. <li>赵四</li>
  10. <li>刘能</li>
  11. <li>小沈阳</li>
  12. <li>宋小宝</li>
  13. </ul>
  14. </body>
  1. 表格标签( 重点 )

    1. 需求 1:做一个 带表头的 ,三行,三列的表格,并显示边框
    2. 需求 2:修改表格的宽度,高度,表格的对齐方式,单元格间距。
    3. <body>
    4. <!--
    5. 需求 1:做一个 带表头的 ,三行,三列的表格,并显示边框
    6. 需求 2:修改表格的宽度,高度,表格的对齐方式,单元格间距。
    7. table 标签是表格标签
    8. border 设置表格标签
    9. width 设置表格宽度
    10. height 设置表格高度
    11. align 设置表格相对于页面的对齐方式cellspacing 设置单元格间距
    12. tr 是行标签
    13. th 是表头标签
    14. td 是单元格标签
    15. align 设置单元格文本对齐方式
    16. b 是加粗标签
    17. -->
    18. <table align="center" border="1" width="300" height="300" cellspacing="0">
    19. <tr>
    20. <th>1.1</th>
    21. <th>1.2</th>
    22. <th>1.3</th>
    23. </tr>
    24. <tr>
    25. <td>2.1</td>
    26. <td>2.2</td>
    27. <td>2.3</td>
    28. </tr>
    29. <tr>
    30. <td>3.1</td>
    31. <td>3.2</td>
    32. <td>3.3</td>
    33. </tr>
    34. </table>
    35. </body>
  2. 跨行跨列表格 (*次重点)

    1. 需求 1:新建一个五行,五列的表格,第一行,第一列的单元格要跨两列,第二行第一列的单元格跨两行,第四行第四
    2. 列的单元格跨两行两列。
    3. <body>
    4. <!--
    5. 需求 1
    6. 新建一个五行,五列的表格,
    7. 第一行,第一列的单元格要跨两列,
    8. 第二行第一列的单元格跨两行,
    9. 第四行第四列的单元格跨两行两列。
    10. colspan 属性设置跨列
    11. rowspan 属性设置跨行
    12. -->
    13. <table width="500" height="500" cellspacing="0" border="1">
    14. <tr>
    15. <td colspan="2">1.1</td>
    16. <td>1.3</td>
    17. <td>1.4</td>
    18. <td>1.5</td>
    19. </tr>
    20. <tr><td rowspan="2">2.1</td>
    21. <td>2.2</td>
    22. <td>2.3</td>
    23. <td>2.4</td>
    24. <td>2.5</td>
    25. </tr>
    26. <tr>
    27. <td>3.2</td>
    28. <td>3.3</td>
    29. <td>3.4</td>
    30. <td>3.5</td>
    31. </tr>
    32. <tr>
    33. <td>4.1</td>
    34. <td>4.2</td>
    35. <td>4.3</td>
    36. <td colspan="2" rowspan="2">4.4</td>
    37. </tr>
    38. <tr>
    39. <td>5.1</td>
    40. <td>5.2</td>
    41. <td>5.3</td>
    42. </tr>
    43. </table>
    44. </body>

三、css语法与选择器

3.1css语法规则

CSS 是「层叠样式表单」。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。用来修饰网页的样式。

  1. 直接按行定义所需样式

  2. 在 head 标签中,使用 style 标签来定义各种自己需要的 css 样式。

格式如下:

xxx { Key : value value; }

  1. 把 css 样式写成一个单独的 css 文件,再通过 link 标签引入即可复用。 使用 html 的 标签 导入 css 样 式文件。
    1. div{
    2. border: 1px solid yellow;
    3. }
    4. span{
    5. border: 1px solid red;
    6. }
    7. html 文件代码:
    8. <!DOCTYPE html>
    9. <html lang="en">
    10. <head>
    11. <meta charset="UTF-8">
    12. <title>Title</title>
    13. <!--link 标签专门用来引入 css 样式代码-->
    14. <link rel="stylesheet" type="text/css" href="1.css"/>
    15. </head>
    16. <body>
    17. <div>div 标签 1</div>
    18. <div>div 标签 2</div>
    19. <span>span 标签 1</span>
    20. <span>span 标签 2</span>
    21. </body>
    22. </html>

3.2 选择器

  1. 标签名选择器
  2. id 选择器
  3. class 选择器(类选择器)
  4. 组合选择器

四、引用文档CSS语法与选择器

1. CSS简介

  1. 层叠样式表

网页实际上是一个多层的结构,通过CSS可以分别为网页的每一个层来设置样式,而最终我们能看到只
是网页的最上边一层
总之一句话,CSS用来设置网页中元素的样式
使用CSS来修改元素样式的方式大致可以分为3种

  1. 内联样式(行内样式)

在标签内部通过 style 属性来设置元素的样式
问题:使用内联样式,样式只能对一个标签生效。如果希望影响到多个元素,必须在每一个元素中都复
制一遍;并且当样式发生变化时,我们必须要一个一个的修改,非常的不方便。(注意:开发时绝对不
要使用内联样式)

  1. 内部样式表

将样式编写到 head 中的 style 标签里然后通过css的选择器来选中元素并为其设置各种样式可以同时为
多个标签设置样式,并且修改时只需要修改一处即可。内部样式表更加方便对样式进行复用

内联样式(行内样式)


1问题:我们的内部样式表只能对一个网页起作用,它里边的样式不能跨页面进行复用
外部样式表
可以将css样式编写到一个外部的CSS文件中,然后通过 link 标签来引入外部的CSS文件
外部样式表需要通过 link 标签进行引入,意味着只要想使用这些样式的网页都可以对其进行引用使样
式,可以在不同页面之间进行复用
将样式编写到外部的CSS文件中,可以使用到浏览器的缓存机制,从而加快网页的加载速度,提高用户
的体验。

2. CSS基本语法

注释

  1. css中的注释

只能使用 // 包裹。即不管是单行注释,还是多行注释,都是以 / 开头,以 / 结尾

  1. <style>
  2. p{
  3. color:green;
  4. font-size:50px;
  5. }
  6. </style>
  1. <link rel="stylesheet" href="./style.css">
  2. 1
  3. /* css中的单行注释 */
  4. /*
  5. css中的多行注释
  6. css中的多行注释
  7. css中的多行注释
  8. */

我们对比下其他几种前端语言的注释

  1. html中的注释

只能使用 包裹。即不管是单行注释,还是多行注释,都是以 结尾

  1. JS(JavaScript)和JQuery中的注释

单行注释使用 // 。多行注释使用 // 包裹,以 结尾

基本语法

选择器
通过选择器可以选中页面中的指定元素
比如 p 的作用就是选中页面中所有的 p 元素声明块

  1. <!-- html中的单行注释 -->
  2. <!--
  3. html中的多行注释
  4. html中的多行注释
  5. html中的多行注释
  6. -->
  1. /* JS(JavaScript)和JQuery中的单行注释*/
  2. /*
  3. JS(JavaScript)和JQuery中的多行注释
  4. JS(JavaScript)和JQuery中的多行注释
  5. JS(JavaScript)和JQuery中的多行注释
  6. */

选择器 声明块
1声明块
通过声明块来指定要为元素设置的样式
声明块由一个一个的声明组成,声明是一个名值对结构
一个样式名对应一个样式值,名和值之间以 : 连接,以 ; 结尾

3. CSS选择器

  1. 通配选择器(Universal selector)

作用:选中页面中的所有元素
语法:
例子:
{}

  1. 元素选择器(Type selector)

也叫类型选择器、标签选择器
作用:根据标签名来选中指定的元素
语法: elementname{}
例子: p{} h1{} div{}

  1. h1{
  2. color: green;
  3. }
  4. *{
  5. color: red;
  6. }
  1. 类选择器(Class selector)

作用:根据元素的class属性值选中一组元素
语法: .classname
例子: .blue{}
可以重复使用,
可以通过 class 属性来为元素分组,
可以同时为一个元素指定多个 class 属性

  1. ID选择器(ID selector)

作用:根据元素的 id 属性值选中一个元素
语法: #idname{}
例子: #box{} #red{}

  1. p{
  2. color: red;
  3. }
  4. h1{
  5. color: green;
  6. }
  1. .blue{
  2. color: blue;
  3. }
  4. .size{
  5. font-size: 20px;
  6. }

class是一个标签的属性,它和id类似,不同的是class

类选择器(Class selector)

  1. 属性选择器(Attribute selector)

作用:根据元素的属性值选中一组元素
语法1: [属性名] 选择含有指定属性的元素
语法2: [属性名=属性值] 选择含有指定属性和属性值的元素
语法3: [属性名^=属性值] 选择属性值以指定值开头的元素
语法4: [属性名$=属性值] 选择属性值以指定值结尾的元素
语法5: [属性名=属性值] 选择属性值中含有某值的元素
例子: p[title]{} p[title=e]{} p[title^=e]{} p[title$=e]{} p[title
=e]{}

  1. 复合选择器
  2. 交集选择器

作用:选中同时复合多个条件的元素
语法: 选择器1选择器2选择器3选择器n{}
注意点:交集选择器中如果有元素选择器,必须使用元素选择器开头

  1. #red{
  2. color: red;
  3. }
  4. p[title]{
  5. color: orange;
  6. }
  7. p[title=e]{
  8. color: orange;
  9. }
  10. p[title^=e]{
  11. color: orange;
  12. }
  13. p[title$=e]{
  14. color: orange;
  15. }
  16. p[title*=e]{
  17. color: orange;
  18. }
  1. 并集选择器(选择器分组)

作用:同时选择多个选择器对应的元素
语法: 选择器1,选择器2,选择器3,选择器n{}
例子: #b1,.p1,h1,span,div.red{}
5. 关系选择器
父元素:直接包含子元素的元素叫做父元素
子元素:直接被父元素包含的元素是子元素
祖先元素:直接或间接包含后代元素的元素叫做祖先元素;一个元素的父元素也是它的祖先元素
后代元素:直接或间接被祖先元素包含的元素叫做后代元素;子元素也是后代元素
兄弟元素:拥有相同父元素的元素是兄弟元素
5.1子元素选择器(Child combinator)
作用:选中指定父元素的指定子元素
语法: 父元素 > 子元素
例子: A > B

  1. div.red{
  2. font-size: 30px;
  3. }
  4. .a.b.c{
  5. color: blue;
  6. }
  1. h1,span{
  2. color: green;
  3. }
  4. 1
  5. 2
  6. 3
  7. div.box > p > span{
  8. color: orange;
  9. }

5.2 代元素选择器(Descendant combinator)
作用:选中指定元素内的指定后代元素
语法: 祖先 后代
例子: A B
5.3 兄弟元素选择器(Sibling combinator)
作用:选择下一个兄弟
语法: 前一个 + 下一个 前一个 + 下一组
例子1: A1 + A2 (Adjacent sibling combinator)
例子2:A1 ~ An (General sibling combinator)

6. 伪类选择器
伪类(不存在的类,特殊的类)
伪类用来描述一个元素的特殊状态,比如:第一个子元素、被点击的元素、鼠标移入的元素.…
伪类一般情况下都是使用 : 开头
:first-child 第一个子元素
:last-child 最后一个子元素
:nth-child() 选中第n个子元素
n:第n个,n的范围0到正无穷

  1. div span{
  2. color: skyblue;
  3. }
  4. p + span{
  5. color: red;
  6. }
  7. p ~ span{
  8. color: red;
  9. }

2n或even:选中偶数位的元素
2n+1或odd:选中奇数位的元素
以上这些伪类都是根据所有的子元素进行排序的
:first-of-type 同类型中的第一个子元素
:last-of-type 同类型中的最后一个子元素
:nth-of-type() 选中同类型中的第n个子元素
这几个伪类的功能和上述的类似,不同点是他们是在同类型元素中进行排序的
:not() 否定伪类,将符合条件的元素从选择器中去除

  1. /* ul下所有li,黑色 */
  2. ul>li {
  3. color: black;
  4. }
  5. /* ul下第偶数个li,黄色 */
  6. ul>li:nth-child(2n) {
  7. color: yellow;
  8. }
  9. /* ul下第奇数个li,绿色 */
  10. ul>li:nth-child(odd) {
  11. color: green;
  12. }
  13. /* ul下第一个li,红色 */
  14. ul>li:first-child {
  15. color: red;
  16. }
  17. /* ul下最后一个li,黄色 */
  18. ul>li:last-child {
  19. color: orange;
  20. }

:link 未访问的链接
:visited 已访问的链接
由于隐私的原因,所以 visited 这个伪类只能修改链接的颜色
:hover 鼠标悬停的链接
:active 鼠标点击的链接

  1. /* unvisited link */
  2. a:link {
  3. color: red;
  4. }
  5. /* visited link */
  6. a:visited {
  7. color: yellow;
  8. }
  9. /* mouse over link */
  10. a:hover {
  11. color: green;
  12. }
  13. /* selected link */
  14. a:active {
  15. color: blue;
  16. }

7. 伪元素选择器
伪元素,表示页面中一些特殊的并不真实的存在的元素(特殊的位置)
伪元素使用 :: 开头
::first-letter 表示第一个字母
::first-line 表示第一行
::selection 表示选中的内容
::before 元素的开始
::after 元素的最后
::before 和 ::after 必须结合 content 属性来使用

  1. /* 段落首字母设置大小为30px */
  2. p::first-letter{
  3. font-size: 30px;
  4. }
  5. /* 段落第一行设置为黄色背景 */
  6. p::first-line{
  7. background-color: yellow;
  8. }
  9. /* 段落选中的部分变绿色 */
  10. p::selection{
  11. background-color: green
  12. }
  13. /* div前加上内容 */
  14. div::before{
  15. content: 'BEFORE';
  16. color: red;
  17. }
  18. /* div后加上内容 */
  19. div::after{
  20. content: 'AFTER';
  21. color: blue;
  22. }