「Web」:HTML and CSS

温故知新:对Web基础知识——HTML和CSS的持续更新。

说在前面

B/S 软件结构

C/S: Client Server(JavaSE)

B/S:Browser Server(JavaEE)

前端开发流程

  1. 美术实现:网页设计
  2. 前端工程师:设计为静态网页
  3. Java程序员:后端工程师修改为动态页面

网页端组成部分

内容:页面中可以看到的数据。一般使用html技术。

表现:内容在页面上的展示形式。一般使用CSS。

行为:页面中的元素与输入设备交互。一般使用javascript技术。

HTML

创建HTML文件

  1. 创建一个Web静态工程
  2. 在工程下创建html页面
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html><!--声明-->
<html lang="zh_CN"><!--html中包含两部分:head和body-->
<head><!--head中包含:title标签、CSS样式、js代码-->
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Hello World!
</body>
</html>

HTML标签

  • 标签名大小写不敏感
  • 标签有自己的属性
    • 基本属性:修改简单样式
    • 事件属性:设置事件响应后的代码
  • 标签分为单标签<标签/>和双标签<标签></标签>
  • 标签的属性必须要有值,属性值加双引号。
  • 显示特殊标签:< > 空格等等,建议查阅文档。

字体标签

1
2
3
4
5
<body>
<font color="red" size="7">
哒哒哒。
</font>
</body>

标题标签:h1 到 h6

1
2
<h1 align="center">标题1</h1>
<h2 align="left">标题2</h2><!--align:显示位置,默认左-->

超链接

1
2
3
<a href="https://baidu.com" target="_self">百度</a><!--_self属性:当前窗口跳转-->
<br/>
<a href="https://baidu.com" target="_blank">百度</a><!--_blank属性:打开新窗口跳转-->

列表标签

1
2
3
4
5
6
7
8
9
10
11
12
13
<ul type="none"><!--无序列表--><!--type属性可以更改列表前的符号-->
<li>百度</li>
<li>百度</li>
<li>百度</li>
<li>百度</li>
</ul>

<ol><!--有序表格-->
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ol>

img标签

  • 属性src:图片等路径位置

  • JavaSE中路径

    • 相对路径:从工程名字开始算
    • 绝对路径:硬盘中的路径
  • Web中的路径

    • 相对路径:

      . :表示当前文件所在的目录

      .. :表示当前文件所在的上级目录

      文件名:表示当前文件所在目录的文件,相当于./文件名

    • 绝对路径:http://ip:port/工程名/资源路径

  • 属性:weight; height;

    • border:设置图片边框大小。
    • alt:当指定路径找不到图片时,用来代替显示的文本内容。

表格标签:实现跨行跨列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<table border="1" width="300"><!--表格标签-->
<!--border:设置边框、width:设置宽度、height:设置高度-->
<!--align:设置表格对齐方式-->
<!--cellspacing:单元格间距-->
<tr><!--行标签-->
<th>h1</th><!--表头标签-->
<th>h2</th>
<th>h3</th>
</tr>
<tr>
<td>1.1</td><!--单元格标签-->
<td align="center">1.2</td>
<!--align:设置单元格文本对齐方式-->
<td>1.3</td>
</tr>
<tr>
<td colspan="2">2.1</td><!--colspan:列的宽度,实现单元格跨列-->
<td rowspan="2">2.2</td><!--rowspan:行的宽度,实现单元格跨行-->
</tr>
<tr>
<td colspan="2">3.1</td>
</tr>
</table>

iframe框架标签

可以在html页面上开辟一个小区域加载单独的页面,实现内嵌窗口。

1
2
3
4
5
<iframe src="hello.html" width="400" height="600" name="abc"></iframe>
<!--name:表示该区域的名字-->
<a href="welcome.html" target="abc">欢迎</a>
<!--target:打开窗口显示的位置-->
<!--a标签的target属性设置为iframe的name属性,就在开辟的区域打开链接窗口-->

表单标签

表单:html中用来收集用户信息的元素集合,将这些信息发送给服务器处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<form><!--表单标签-->
用户名称:<input type="text" value="User"/><br/><!--input输入框标签-->
<!--type:输入类型 value:默认值-->
<!--text:文本类型-->
用户密码:<input type="password" /><br/>
<!--password:密码类型-->
确认密码:<input type="password"/><br/>
性别:<input type="radio" name="sex" checked="checked"/>
<input type="radio" name="sex"/><br/>
<!--radio:单选框; name属性:可对其分组; checked:默认选项-->
兴趣爱好:<input type="checkbox" checked="checked"/>Java
<input type="checkbox"/>JavaScript<br/>
<!--checkbox:复选框; checked:默认选项-->
国籍:
<select><!--下拉列表框标签-->
<option>--请选择国籍--</option><!--选项标签-->
<option selected="selected">中国</option>
<!--selected:默认选择-->
<option>美国</option>
<option>日本</option>
</select><br/>
自我评价:<textarea rows="10" cols="30">默认值</textarea><br/>
<!--textarea标签:多行文本输入框;属性 rows:行数; 属性 cols:列数-->
<!--textarea起始标签和结束标签中的内容是默认值-->
<input type="reset" value="重新输入"/><br/>
<!--reset:重置按钮; value属性:更改按钮文本-->
<input type="submit" value="submit"><br/>
<!--submit:提交按钮-->
<input type="button" value="按钮"/><br/>
<!--button:按钮-->
<input type="file"/><br/>
<!--file:文件上传-->
<input type="hidden"/><br/>
<!--hidden:隐藏域,需要发送一些不需要用户参与的信息至服务器,可使用隐藏域-->
</form>

表单格式化

把表单放入表格,使表单排列整齐。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form>
<table>
<tr>
<td>用户名称:</td>
<td><input type="text" value="User"/></td>
</tr>
<tr>
<td>用户密码:</td>
<td><input type="password" /></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password"/></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" checked="checked"/>
<input type="radio" name="sex"/></td>
</tr>
</table>
</form>

表单提交的细节

以下格式化的表单:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<form action="https://localhost:8080" method="get">
<!--form标签属性-->
<!--action:设置提交的服务器地址-->
<!--method:设置提交的方式,默认GET(也可以是POST)-->
<input type="hidden" name="action" value="login">
<table>
<tr>
<td>用户名称:</td>
<td><input type="text" value="User"/></td>
</tr>
<tr>
<td>用户密码:</td>
<td><input type="password" /></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password"/></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" checked="checked"/>
<input type="radio" name="sex"/></td>
</tr>
<tr>
<td>兴趣爱好:</td>
<td>
<input type="checkbox" checked="checked"/>Java
<input type="checkbox"/>JavaScript
</td>
</tr>
<tr>
<td>国籍:</td>
<td>
<select>
<option>--请选择国籍--</option>
<option selected="selected">中国</option>
<option>美国</option>
<option>日本</option>
</select>
</td>
</tr>
<tr>
<td>自我评价:</td>
<td><textarea rows="10" cols="30">默认值</textarea></td>
</tr>
<tr>
<td><input type="reset" value="重新输入"/></td>
<td><input type="submit" value="submit"></td>
</tr>
</table>
</form>

格式化后的表单显示为:

UznJiT.pndg

表单提交后,url显示为:https://localhost:8080/?action=login&sex=on

该url体现了三部分

  • 提交表单的服务器地址/action属性的值:localhost:8080/
  • 分隔符:?
  • 请求参数/表单信息:action=login; sex=on

表单提交的时候,数据没有发送给服务器的三种情况:

  1. 表单项input标签没有name属性值。
  2. 单选、复选输入标签以及下拉列表的option标签,还需要加value属性值,以便发送给服务器具体值,而不是on。
  3. 表单项不在提交的form标签中。

修改后的表单代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<form action="https://localhost:8080" method="get">
<!--action:设置提交的服务器地址-->
<!--method:设置提交的方式,默认GET-->
<input type="hidden" name="action" value="login">
<table>
<tr>
<td>用户名称:</td>
<td><input type="text" name="user" value="User"/></td>
</tr>
<tr>
<td>用户密码:</td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" checked="checked" value="boy"/>
<input type="radio" name="sex" value="girl"/></td>
</tr>
<tr>
<td>兴趣爱好:</td>
<td>
<input type="checkbox" checked="checked" name="hobby" value="Java"/>Java
<input type="checkbox" name="hobby" value="js"/>JavaScript
</td>
</tr>
<tr>
<td>国籍:</td>
<td>
<select name="country">
<option value="none">--请选择国籍--</option>
<option selected="selected" value="中国">中国</option>
<option value="美国">美国</option>
<option value="日本">日本</option>
</select>
</td>
</tr>
<tr>
<td>自我评价:</td>
<td><textarea rows="10" cols="30">默认值</textarea></td>
</tr>
<tr>
<td><input type="reset" value="重新输入"/></td>
<td><input type="submit" value="submit"></td>
</tr>
</table>
</form>

表单提交后的url: https://localhost:8080/?action=login&user=fred&password=123&password=123&sex=girl&hobby=Java&hobby=js&country=中国


表单标签method属性参数的区别

  • GET:

    1. 浏览器的地址栏为:action属性值 + ? + 请求参数

      请求参数格式为:name=value&name=value

    2. 不安全

    3. 有数据长度限制

  • POST请求的特点:

    1. 浏览器上的地址栏为:action属性值(没有请求参数)
    2. 相当于GET请求更安全
    3. 理论上没有数据长度限制

div和span

  • div 标签:默认独占一行
  • span 标签:长度是封装数据长度
  • p 标签:默认在段落的上方或下方各空出一行(如果已有空行则不空)

label标签

label标签为input元素定义标注。

该标签不会为用户呈现特殊的效果,但为鼠标用户改进了可用性,即在label元素内点击文本,就会触发该控件。即当用户选择该标签时,浏览器会自动将焦点转到和label标签绑定的表单项上。

常见的应用情况是:单选框/复选框,点击文本即可勾选,而不需要去点那个框。

  • for : 表示该label是为表单中哪个控件服务,for属性点值设置为该元素的id属性值

CSS

CSS简介

CSS:层叠样式表单,用于增强/控制网页样式,且允许将样式信息和网页内容分离的一种标记性语言。

语法规则:

UznYJU.png
  • 选择器:浏览器根据选择器决定受CSS样式影响到HTML元素/标签。

  • 属性:属性:值; 形成一个完成的declaration。

CSS中的注释:/**/

CSS与HTML结合方式

标签中的style

在标签的style属性设置style="key: value1 value2;"

这种方式可读性差,且没有复用性。

head标签中使用style标签

在head标签中,用style标签定义需要的css样式。

style标签中的语句是CSS语法。

1
2
3
4
5
6
7
8
9
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
border: 1px solid red;
}
</style>
</head>

可以在同一页面复用代码,不能在多个页面复用CSS代码,且维护不方便,需要修改每个页面。

CSS文件

把CSS样式写成CSS文件,在html文件的head标签中通过link标签引用。

style.css

1
2
3
4
5
6
div{
border: 1px red solid;
}
span{
border: 1px red solid;
}

div.html

1
2
3
4
5
6
7
8
9
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--link标签专门在head中用来引入CSS样式代码-->
<link rel="stylesheet" type="text/css" href="style.css"/>
<!--rel:文档间的关系-->
<!--type:目标URL的类型-->
<!--href:URL-->
</head>

可以在多个页面中复用CSS样式,且维护方便。

CSS选择器

标签名选择器

1
2
3
4
标签名{
属性:值;
属性:值;
}

标签名选择器决定哪些标签被动的使用这个样式。

id选择器

1
2
3
4
#id选择器{
属性:值;
属性:值;
}

id选择器通过id属性选择性的使用这个样式。

html文件

1
2
<div id="id001">div1</div><!--标签的id属性-->
<div id="id002">div2</div>

CSS文件:

1
2
3
4
5
6
7
8
9
10
11
12
<style>
#id001{
border: yellow 1px solid;
font-size: 30px;
color: blue;
}
#id001{
border: 5px blue dotted;
font-size: 20px;
color: red;
}
</style>

class 选择器

1
2
3
4
.class属性值{
属性:值;
属性:值;
}

class属性多用来分组定义CSS样式。

class选择器通过class属性值选择性使用这个样式。

html文件

1
2
<div class="class0">div1</div><!--标签的class属性-->
<div class="class0">div2</div>

CSS文件:

1
2
3
4
5
6
7
<style>
.div{
color: blue;
font-size: 30px;
border: 1px yellow solid;
}
</style>

组合选择器

1
2
3
4
5
.class0, #id001{
color: blue;
font-size: 30px;
border: 1px yellow solid;
}

组合选择器可以让多个选择器共用同样的CSS样式。

常用样式

具体可查阅

  • 字体颜色

    color : red;

    color : rgb(33,33,13);

    color : #00F666;

  • 宽度

    width : 19px;

    width : 20%;

  • 高度

    height : 19px;

    height : 20%;

  • 背景颜色

    background-color : #0F2222;

  • 字体大小

    font-size : 20px;

  • 边框

    border : 1px solid red;

  • DIV居中(相当于页面的居中)

    1
    2
    margin-left : auto;
    margin -right : auto;
  • 文本居中

    text-align : center;

  • 超链接去下划线

    text-decoration : none;

  • 表格细线

    1
    2
    3
    4
    5
    6
    7
    table{
    border : 1px solid black;
    border-collapse : collapse;/*合并表格边框*/
    }
    td,th{
    border : 1px, solid black;
    }
  • 列表去修饰符

    list-style : none

Author

f7ed

Posted on

2020-07-22

Updated on

2020-07-25

Licensed under

CC BY-NC-SA 4.0


Comments