HTML基础-01-13-2015

来源:互联网 发布:求最简形矩阵 编辑:程序博客网 时间:2024/06/14 00:04


一、HTML概述

(1)、超文本标记语言(Hyper Text Markup Language)
HTML文档是一个包含标记的文本文件
文件名以.htm或者.html 结尾 

ps:TCP/IP:连接电脑

Http/IP:电脑内浏览器与服务器见通信

.htm和.html两种方式结尾:操作系统原因

2、整个HTML文档由成对的标签和文本组成,如下:
<html> -- 文档的开始标签
<head> -- 文档头的开始标签
    <title>标题</title> -- 文档标题,显示的浏览器标题栏中
</head> -- 文档头的结束标签
<body> -- 文档内容的开始标签
    内容
</body> -- 文档内容的结束标签
</html> -- 文档的结束标签
 
 
HTML文档的注释的格式:
<!-- 这是被注释的内容 -->

3、浏览器: 很多不兼容 IE、Firefox/mozzia、Google

netspace 网景 微软IE:操作系统对IE浏览器支持不够充分

国内浏览器  : 基于IE浏览器


二、文档结构

1、为了使浏览器能正确渲染页面,我们需要告诉浏览器网页所使用的文档类型(DOCTYPE)。


2、目前的HTML版本是4.01,但是实际中广泛使用的是XHTML 1.0 Transitional。


3、XHTML比HTML有更加严格的语法:
标签必须被正确地嵌套。 (<b><i>Hello</b></i> 是不正确的)
标签名必须用小写字母。
所有标签必须闭合

4、一个完整的页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>主页</title>
</head>
<body>
    <h1>
        欢迎来到我的个人主页!</h1>
    <p>
        这里放置个人主页的内容。<!-- 这是被注释的内容 -->
    </p>
</body>
</html>

5、为了让浏览器正确的渲染HTML文档,我们需要告诉浏览器我们的HTML文档使用的是哪个版本的HTML。


当前的HTML 4.01,有三个不同的版本:
Strict
最严格、干净的HTML版本。不允许表现层的属性和标签,W3C也将逐渐淘汰这些标签,因为完全可以用CSS来实现。比如<center>  <font>  <iframe> 标签,以及width,height(img,table),align(table),target(a)等属性。

Transitional:
过渡期HTML版本。支持大部分的表现层属性和标签。
Frameset:
允许在一个页面中嵌入多个页面。


使用三个不同版本的HTML,需要在页面的第一行添加DOCTYPE声明:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

三、基本标签

(1)、块级标签
就像标题、段落一样,需要在页面上占据一块的位置的标签。
<h1> 最大的标题    <h2> - <h6> 大小依次减小的标题   <p> 段落

<pre> 显示一段预格式化的文本。此标签内的空格、换行、Tab等都被原样显示出

来。一般用来显示一段源代码。


<div>
一般块级标签。
<hr>
水平线
HTML自动在一个<h1> - <h6> <p> <pre> 的段落前后各添加一个空行。

(2)、内联标签

内联标签
<em> 强调,大部分浏览器渲染为斜体。
<strong> 强调,大部分浏览器渲染为黑体。
<sub> 下标
<sup> 上标

内联标签

<code> 标示一段代码 <span> 一般内联标签
<br> 换行 <b> 黑体<i> 斜体

四、实体字符

(1)、HTML文档本身使用了一些字符来作为标签,所以要想在页面上显示 < 或 >,就必须使用实体字符。
比如使用 &lt; 可以在页面上显示 < 字符。


实体字符的格式是:
AND符号(&) + 实体名 +分号(;)

常用的实体字符
&nbsp; 空格
&lt; <
&gt; >
&amp; &
&quot;
&copy; ©
&reg; ®

常用的实体字符
示例:实体字符
<p>空格:&nbsp;END</p>
<p>左括号:&lt;</p>
<p>右括号:&gt;</p>
<p>AND符号:&amp;</p>
<p>引号:&quot;</p>
<p>人民币:&yen;</p>
<p>版权:&copy;</p>
<p>注册:&reg;</p>
<p>乘号:&times;</p>
<p>除号:&divide;</p>

五、链接

(1)、HTML使用超级链接来连接到网络上的其他页面。

一个简单的链接是由 <a> 标签和 href 属性构成的
<a href="http://www.baidu.com/">百度</a>

(2)、href 属性
绝对路径
http:
HTTP请求
https:
加密的HTTP请求
mailto:
打开邮件客户端,准备发送邮件
ftp:
打开FTP服务器


href 属性
绝对路径
示例:绝对路径
<a href="http://www.baidu.com/">链接到百度首页</a>
<a href="mailto:leizhang5@iflytek.com">打开邮件客户端</a>
<a href="https://mail.google.com/">登陆Gmail</a>
<a href="ftp://mail.ustc.edu.cn/">登陆科大FTP服务器</a>

b、href 属性
相对路径
./
本目录
../ 
上一级目录
../../
上一级目录的上一级目录
/
根目录


href 属性
相对路径
test.htm 或 ./test.htm
本目录中的test.htm
../test.htm
上一级目录下的test.htm 
path/test.htm 
本目录下的path目录下的test.htm
/test.htm
本站点根目录下的test.htm 
/path/test.htm
本站点根目录下的path目录下的test.htm

(3)、target属性(控制链接打开的位置)
_blank
新窗口中打开链接
_self
当前窗口中打开链接(默认)
_parent
父窗口中打开链接
_top
最顶层父窗口中打开链接
targetname
指定窗口或Frame中打开链接


target属性
示例:在iframe中打开(target=“targetname”)?
<a href="http://www.baidu.com" target="page1">在IFRAME中打开百度首页</a>
<a href="../character.htm" target="page1">在IFRAME中打开字符实体示例</a>
<iframe style="width: 600px; height: 300px; border: 1px solid #666;" name="page1">
</iframe>


(4)、页面锚点
name属性

示例:页面锚点的使用
<a name="top"></a>
<a href="name.htm#middle">页面中部</a>


<a name="middle"></a>
<a href="name.htm#top">返回页面顶部</a>


六、图片

(1)、可以在页面中添加bmp,gif,jpg,png等格式的图片。
src 是图片的路径
alt是图片不能显示时的文本,应该为每个图片提供这个属性。


<img alt=“birthday" src="images/birthday.bmp" />
<img alt="Rose" src="images/rose2.bmp" />

(2)、图片链接:
<a href="http://www.baidu.com/">
<img alt="baidu" src="baidu_logo.gif" />
</a>


大部分的浏览器会为图片链接的图片添加边框,可以通过设置图片的样式来去掉边框:
<a href="http://www.baidu.com/">
<img alt="baidu" style="border: 0px;"  src="baidu_logo.gif" />
</a>

(3)、图片地图:
点击图片的不同部分,可以链接到不同的地方。


示例:图片地图
<img alt="earth" src="./images/earth.bmp" usemap="#earthmap" />
<map name="earthmap">
<area shape="rect" coords="0,0,20,20" alt="baidu" href="http://www.baidu.com/" target="_blank" />
<area shape="circle" coords="76,76,20" alt="google" href="http://www.google.cn/"
target="_blank" />
</map>


<area>定义了图片中特定区域的链接行为
shape属性指出区域的形状
如果为矩形(rect),则coords需要指定四个数字(左上角横坐标,左上角纵坐标,右下角横坐标,右下角纵坐标)
如果为圆形(circle),则coods需要指定三个数字(圆心横坐标,圆心纵坐标,半径)


七、列表

(1)、无序列表
<ul>
            <li>太阳</li>
            <li>月亮</li>
            <li>星星</li>
            <li>地球</li>
</ul>


有序列表
<ol>
        <li>太阳</li>
        <li>月亮</li>
        <li>地球</li>
</ol>


示例:无序列表
<ul type="disc">
<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>


示例:嵌套列表
   
<ul>
<li>太阳</li>
<li>月亮</li>
<li>地球
    <ul>
<li>海洋</li>
<li>陆地</li>
<li>雪山</li>
    </ul>
</li>
</ul>

八、表格

(1)、Table用来展示列表数据。
<tr> 表示一行,<td>表示一个单元格

<table>
        <tr>
            <td>
                数据一
            </td>
            <td>
                数据二
            </td>
        </tr>
</table>

2、border属性:

<table border=“5">
        <tr>
            <td>
                数据一
            </td>
            <td>
                数据二
            </td>
        </tr>
</table>

(2)、th与td标签
<td>:table data 表示一个单元格
<th>:table head 表示一个单元格,这个单元格是表头,浏览器一般渲染为黑体


<table border="1">
        <tr>
            <th>标题一</th>
            <th>标题二</th>
        </tr>
        <tr>
            <td>数据一</td>
            <td>数据二</td>
        </tr>
</table>


th与td标签
<table border="1">
        <tr>
            <th>标题一</th>
            <td>数据一</td>
        </tr>
        <tr>
            <th>标题二</th>
            <td>数据二</td>
        </tr>
</table>

2、cellpadding属性:
单元格的内边距。


<table border="1">
<table border="1" cellpadding="10">

3、cellpadding属性
单元格的内边距。

<table border="1">
<table border="1" cellpadding="10">

(3)、空单元格

如果table设置了border,那个空单元格的border会不显示,可以通过在空单元格中添加 &nbsp; 来解决。

<table border="1">
        <tr>
            <th>标题一</th>
            <th>标题二</th>
        </tr>
        <tr>
            <td>数据一</td>
            <td>&nbsp;</td>
        </tr>
</table>

(4)、对齐方式
居左、右、中对齐
<table width="200px" border="1">
    <tr>
        <th align="right">标题一</th>
        <th align="right">标题二</th>
    </tr>
    <tr>
        <td align="right">数据一</td>
        <td align="right">数据二</td>
    </tr>
</table>

(5)rowspan属性
跨行单元格,rowspan=”2” 表示当前单元格跨两行。


<table border="1">
        <tr>
            <th rowspan="2">标题一</th>
            <th>标题二</th>
        </tr>
        <tr>
            <td>数据二</td>
        </tr>
</table> 

rowspan属性
跨行单元格,rowspan=”2” 表示当前单元格跨两行。

 <table border="1">
        <tr>
            <th>标题一</th>
            <th rowspan="2">标题二</th>
        </tr>
        <tr>
            <td>数据一</td>
        </tr>
</table>


(6)、colspan属性
跨列单元格,colspan=”2” 表示当前单元格跨两列。
<table border="1">
        <tr>
            <th colspan="2">标题一</th>
        </tr>
        <tr>
            <td>数据一</td>
            <td>数据二</td>
        </tr>
</table>


colspan属性
跨列单元格,colspan=”2” 表示当前单元格跨两列。


<table border="1">
        <tr>
            <th>标题一</th>
            <th>标题二</th>
        </tr>
        <tr>
            <td colspan="2">数据一</td>
        </tr>
</table>

九、综合案例

PPT:HTML基础

1、案例1:在IIS中配置站点

2、案例2:如何在e.htm和f.htm之间导航?

3、案例3:复杂的嵌套列表?

4、案例4:创建考试报名表格?

5、案例5:创建多表头表格?


十、HTML表单


(1)、表单概述

表单用来收集用户信息并提交给服务器。
服务器需要一门动态语言来获取这些信息并进行处理,常用的服务器端语言有asp/asp.net/php/jsp等。

<form method="get" action="form.htm">
    <input type="text" name="id" value="" />
<input type="submit" value="提交" />
</form>

(2)提交表单的方法

1、示例:GET方法提交表单
<form method="get" action="form.htm">
    <input type="text" name="id" value="" />
    <input type="hidden" name="password" value="123456" />
    <input type="submit" value="提交" />
</form>

GET方法的HTTP请求消息头:
GET /DEMO/form/form.htm?id=dd&password=123456 HTTP/1.1
Accept: */*
Referer: http://localhost:4346/DEMO/form/form.htm
Accept-Language: zh-cn


2、示例:POST方式提交表单
POST方法的HTTP请求消息头:
POST /DEMO/form/form.htm HTTP/1.1
Accept: */*
Referer: http://localhost:4346/DEMO/form/form.htm
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0)
Host: localhost:4346
Content-Length: 21
id=dd&password=123456


3、action属性
提交表单时转到的URL地址。


4、method 属性
GET方式
收集用户少量信息。
URL的长度限制为4KB
POST方式
收集用户大量信息(可能包含用户上传的文件)。
用户提交的信息保存在HTTP请求消息的正文。
提交后不能使用刷新按钮。

(3)、常用表单字段

1、文本输入框(input)
type 属性
type=“text”表示文本输入框
value 属性
文本框的值
name属性
必须的,提交表单时此文本框的值value存储在name变量中。
<input  type="text"  name=“input1"   value="你好" />


文本输入框(input)
示例:不设置name属性会怎样?
 <form method="get" action="text.htm">
<input type="text" name="input1" id="myinput1" value="hello1" />
<input type="text" id="myinput2" value="hello2" />
<input type="submit" value="submit" />
</form>


点击提交按钮时的URL:/form/text.htm?input1=hello1
服务器就不能取得第二个文本框的值

2、文本输入框(input)
maxlength 属性
文本框允许输入的最多的字符数
tabindex 属性
用户点击tab按键时焦点的切换顺序(从1开始)

3、文本输入框(input)
disabled属性
不可用
readonly属性
只读
4、Disabled和readonly的区别?
disabled的文本框显示为灰色
tabindex对disabled的文本框不起作用
readonly的文本框的值不会发送到服务器


点击提交按钮,请求的URL:/form/text.htm?input1=hello&input3=hello
服务器不能获取input2的值

5、密码输入框(input)
用于输入密码,输入的密码以星号显示。
<input type="password" name=“password1" value="" />

如果表单的 method=’get’,则点击提交按钮时,URL地址变成:
http://localhost:4346/DEMO/form/password.htm?password1=123456
所以,一般用户登陆的表单需要用POST提交方式。


6、多行文本输入框(textarea)
用于输入多行文本,如果输入内容过长,则会自动显示滚动条。
<textarea name="content" rows="6" cols="6">大家好</textarea>


多行文本框特点:
没有value属性,内容是初始化在标签之间。
没有maxlength属性。
怎么限制多行文本框最大输入字符数?(使用Javascript)
使用rows和cols属性指定行数和列数。

注意:6行6列的多行文本框,在不显示滚动条的情况下最多显示36个英文
字符,或者18个中文字符。


7、列表框(select)
下拉列表,用户可以从一些可选项中选择。
示例:简单的下拉列表
<select name="country">
        <option value="America">美国</option>
        <option value="China" selected="selected">中国</option>
        <option value="India">印度</option>
        <option value="Russia">俄罗斯</option>
</select>

8、<option> 标签表示一个可选择项
InnerText:选项显示的值
value 属性:选项代表的值
selected 属性:是否选中此选项

上例子中,我们选中“中国”提交表单时,请求消息头:
GET /DEMO/form/select.htm?country=China HTTP/1.1
Accept: */*
Referer: http://localhost:4346/DEMO/form/select.htm
Accept-Language: zh-cn
……


9、<optgroup>标签
用来对选项进行分组(分组标签是不可选择的)




<select name="country2">
        <optgroup label="北美洲">
            <option value="America">美国</option>
        </optgroup>
        <optgroup label="亚洲">
            <option value="China" selected="selected">中国</option>
            <option value="India">印度</option>
            <option value="Russia">俄罗斯</option>
        </optgroup>
</select>

10、列表框(以平铺的形式显示)
设置<select>标签的属性 size 的值大于 1 即可
size表示显示多少行


示例:列表框与多选列表框?
<select name="country4" size="5">
        <option value="America">美国</option>
        <option value="China" selected="selected">中国</option>
        <option value="India">印度</option>
        <option value="Russia">俄罗斯</option>
</select>

11、列表框(可以多选)
设置<select>标签的属性 multiple="multiple“
用户可以通过Ctrl或Shift选择多个选项。




此时的HTTP请求消息为:
GET /DEMO/form/select.htm?country4=China&country4=India&country4=Russia HTTP/1.1
Accept: */*
Referer: http://localhost:4346/DEMO/form/select.htm


12、单选按钮(input)
单选按钮的行为类似上面介绍的下拉列表,用户可以从几个选项中选择一个。


示例:单选按钮分组?
蓝色<input type="radio" value="blue" name="color" />
红色<input type="radio" value="red" checked="checked" name="color" />
白色<input type="radio" value="white" name="color" />


特别注意:name 用于指定哪些单选框是一组的,
同组的单选框只能选中一个。

13、多选框(input)
多选框和单选按钮,以及可以多选的列表框类似。


示例:多选框分组?


蓝色<input type="checkbox" value="blue" name="color" />
红色<input type="checkbox" value="red" checked="checked" name="color" />
白色<input type="checkbox" value="white" name="color" />


14、按钮(input)
提交按钮(type=”submit”)
点击提交按钮所在的表单
用户在单行文本框或密码框中,按enter时提交表单(相当点击提交按钮)。


重置按钮(type=”reset”)
将表单字段的值重置为页面第一次加载时的值。


一般按钮(type=”button”)
没有默认行为。
怎样使用一般按钮提交表单?(使用Javascript)

15、图片按钮(input)
类似提交按钮,但是使用一个图片而不是浏览器默认的按钮。


示例:图片按钮向服务器提交的数据?


<input type="image" src="../images/rose.bmp" alt="Rose" />
点击图片按钮会回发表单,HTTP请求消息为:
GET /form/imgbutton.htm?password=123456&x=5&y=93 HTTP/1.1
Accept: */*
Referer: http://localhost:4346/DEMO/form/imgbutton.htm
Accept-Language: zh-cn
……


注意,在发送到服务器的数据中,除了文本框的值,还有:
x=5&y=93

这个是点击按钮时,光标落在图片的坐标。


16、隐藏输入框(input)
用户不可见,但是隐藏输入框的值可以随着表单一起提交。
<input type="hidden" name="password" value="123456" />
常见的使用场合
多页面收集用户信息。


17、标签(label)

有些HTML标签尺寸很小,比如单选框和多选框。希望点击单选框旁边的按钮和点击单选框的效果相同。


示例:<label>标签常见的使用场景?
<label for="blue">蓝色</label>
<input type="radio" id="blue" value="blue" name="color" />

18、id和name有什么区别呢?
id 在整个页面是唯一的,没有任何两个HTML标签的id是一样的。
name 用在向服务器发送数据时,保存HTML标签的值。
可以有相同的name的HTML标签存在(比如相同name的radio是同一分组的)。


19、分组框(fieldset)
分组框<fieldset>标签。
<legend>标签来显示分组框标题。

<fieldset style="width:200px;">
        <legend>选择颜色</legend>
        <ul>
            <li>蓝色<input type="radio" value="blue" name="color" /></li>
            <li>红色<input type="radio" value="red" checked="checked" name="color" /></li>
            <li>白色<input type="radio" value="white" name="color" /></li>
        </ul>
</fieldset>


十一、框架

(1)、为什么使用frameset

<frameset> 允许我们把很多页面组合成一个页面

常见的应用场景
一个frame中放置页面导航,另一个frame中放置页面内容,当点击页面导航时,只刷新页面内容。(部分刷新)

(2)、垂直分栏框架

<frameset>的 cols 属性,定义垂直分栏的各列的宽度:


示例:一个三列的框架,其中第一列占据150px的宽度,第二列占据10%的宽度,
第三列占据剩余的宽度。


<frameset cols="150, 10%, *">
    <frame src="1.htm" />
    <frame src="2.htm" />
    <frame src="3.htm" />
</frameset>

(3)、水平分栏框架

示例:
<frameset rows="50, 10%, *">
    <frame src="1.htm" />
    <frame src="2.htm" />
    <frame src="3.htm" />
</frameset>

(4)、<frame>标签的属性

frameborder="0“
用来设置不显示分隔条
noresize="noresize“
则设置分隔条不可拖动
scrolling=”no”
不显示滚动条。


(5)、混合框架

科大的bbs(http://bbs.ustc.edu.cn)使用框架


这样一个页面包含了5个HTML页面。


混合框架
科大的bbs(http://bbs.ustc.edu.cn)使用框架


<frameset cols="151, 10, *" framespacing="0" frameborder="no“ border="0">
<frameset rows="*, 25" framespacing="0" frameborder="no" border="0">
 <frame name="f2" src="cgi/bbsleft" noresize>
 <frame scrolling="no" name="f2tty" src="tty.html" noresize>
    </frameset>
<frame src="f5.html" name="f5" frameborder="no" scrolling="no" noresize>
<frameset rows="0, *, 20" framespacing="0" frameborder="no" border="0">
 <frame name="f3" src="cgi/bbsindex" noresize>
 <frame scrolling="no" name="f4" src="cgi/bbsfoot" noresize>
  </frameset>
</frameset>


(6)、框架之间导航

框架中的链接可以在框架之间导航,通过设置<a> 标签的target属性。

1、<a>的target属性和<frame>的name属性相对应。


示例:框架页面
<frameset cols="150, 10%, *">
    <frame name="left" src="4.htm" />
    <frame name="middle" src="about:blank" />
    <frame name="right" src="about:blank" />
</frameset>


在4.htm中有如下链接:
<a href="5.htm" target="middle">链接一</a>
<a href="6.htm" target="right">链接二</a>


则点击“链接一”会在中间框架中打开 5.htm 页面,
点击“链接二”会在右侧框架中打开 6.htm 页面。
示例:框架页面
<frameset cols="150, 10%, *">
    <frame name="left" src="4.htm" />
    <frame name="middle" src="about:blank" />
    <frame name="right" src="about:blank" />
</frameset>


在4.htm中有如下链接:
<a href="5.htm" target="middle">链接一</a>
<a href="6.htm" target="right">链接二</a>


则点击“链接一”会在中间框架中打开 5.htm 页面,
点击“链接二”会在右侧框架中打开 6.htm 页面。


2、target还有两个重要的值:
_parent
页面的父框架中打开
_top
最顶层的框架中打开


(7)、内联框架

内联框架能够在页面上的任意一个地方嵌入其他页面,使用范围更广。
<iframe frameborder="0" src="image.htm"></iframe>


(8)、frameset 的缺点

浏览器的URL地址无法准确反映真实页面的变化。此时保存页面标签也不能真实反映当前页面。


当用户通过URL打开单独的一个内容页面时,看到的不是完整的页面(这在搜索引擎的结果中经常遇到)。


Frame之间的导航有点复杂,可能出现不一致的情况。


刷新页面后载入的页面和用户期望的可能不一致。


十二、综合练习

PPT:HTML表单


0 0