首页 > 代码库 > 跟着杨中科学习asp.net之html

跟着杨中科学习asp.net之html

第一节课

HTML基础加强班

l 什么是浏览器?

1. 浏览器就是接受浏览者的操作(打开一个网址、点击一个链接、点击一个按钮),然后帮浏览者去web服务器请求网页的内容(html格式返回),然后展现成人眼能够看得懂的可视化的页面的软件。

l IE=浏览器?这个说法是错误的。IE是浏览器的一种,还有FireFox、Opera、Charome等,注意遨游(Maxthon)、世界之窗、搜狗浏览器、360浏览器等并不是一种独立于IE的浏览器,其内核还是IE的内核,只不过是换了一个外壳而已,所以用遨游的不能嘲笑用IE的,否则就露怯了,试着用WeBrowse空间自己开发一个浏览器。

l WebBrowser控件

clip_image002

双击按钮:

方法如下:

webBrowser1.Navigate(textBox1.Text);

htm文件代码如下:

<html>

<head>

</head>

<body>

<font color="red">hello</font>

<a href="http://www.itcast.cn">itcast</a>

</body>

</html>

运行结果:

clip_image004

clip_image006

l 所谓的Trident引擎就是WebBrosder空间,现在很多非IE核心的浏览器用的是Webkit引擎,比如遨游3或搜狗的双核、Chrome、Safari。搞浏览器开发挺简单的。

l HTML就是描述网页长什么样子、有什么内容的一个文本。在查看网页的描述内容的方式:使用IE浏览器的话,在网页上点击右键,选择“查看源文件”

l 浏览器兼容性问题:描述文件是一个统一的,但是就像口语翻译一样,不同翻译翻译出来的东西也是有差异的,所以同一个网页在IE上和Firefox上看起来就可能长得不一样,最明显的就是以前qq空间上的页面在Firefox上线时就有问题,甚至有的网页在IE6、IE7、IE8上的也不一样。因此web开发过程中的一个重要也是最头疼的问题就是浏览器的兼容,测试Firefox(简称FF)、Chrome等浏览器安装各自的软件就可以,测试不同版本的IE可以用IETester。

l 只要能跑IE和firefox就ok了。

小知识:

浏览器兼容性测试:Acid。测试标准:对给定几个网页来测试,谷歌的Firefox100分,IE的98分。

浏览器开发引擎Webkit、Trident、Gecko。

QQ、暴风、千千静听等弹出的新闻中心是网页,是嵌在浏览器框架中的。用visual studio 就可以开发。

静态页面、动态页面

l 网站页面分为静态页面和动态页面两种

n 静态页面:有一个html页面文件保存在服务器上,浏览器要这个页面的时候服务器就把这个页面文件发给浏览器;

n 东莞台页面:服务器上没有脸拦着要看的页面,而是服务器动态生成的html页面发给浏览器,动态语言的服务端也易用C#,vb.net、 php、java、c等编写。

l 编写普通的html页面和任何后台语言无关的,可以使用dreamweaver、expression web等工具写,这些工具是给页面美工用的,开发人员用visual studio写html就够了,不要把精力放到怎么把页面好看上,正规公司都有专门的页面美工,不正规的公司都是偷别人的美工页面,无论是偷别人的页面,还是使用美工公司开发出来的页面,对于开发人员要做的“填模板”工作都是一样的。

第二课

课前说明:

l 内容:html、css

l 目标:掌握手写html实现一般难度的web页面的能力(如网站注册表单),为asp.net学习打基础。坚持手写html,可视化设计知识一种自学的手段。

l 参考书:张孝祥《javascript网页开发——体验式学习教程》

第一个网页

主流编程人员所用的为visual studio 2008,可以去官网下载。有点大,3.7个G。

l 新建web项目(新建→asp.netweb应用程序),新建html页面(添加→新建项→web→html页)

l 查看页面方式

n 切换到“设计”视图,可以在这里查看初步的预览效果,不是很准,可以再“设计”试图工具箱中拖放空间可视化的设计,设计复杂页面的时候很少直接可视化设计

n 右键,选择“在浏览器中查看”。无法进行调试。

n 将要查看的页面设为起始页(在文件上点击右键“设为起始页”),然后点击“启动调试”,即可调试。

l 学没有js、c#代码的时候用“在浏览器中查看”。修改页面不用关闭浏览器再打开,刷新就可以。

第三课

Html页结构说明

l 所有内容都在<html></html>标签之内:<head></head>内存放的是头部信息,是对页面的描述,不会直接显示在页面中,<head>内的<title>中设置的是页面的标题,<title>只能放在<head>中;<body>是页面的主题,大部分显示内容都定义在这里。

l 所有页面都应该至少含有这些部分,由于浏览器容错性强,所以即使不包含也能正常显示,但是最好还是写全了。

颜色体系

l Body标签中的bgcolor属性可以设定网页的背景颜色,<body bgcolor=“#006699”>

l #006699就是html中表示颜色的方式,每两个是一组,三组就分别表示R、G、B的值,是16进制表示。关于RGB见备注

l 可以使用vs内置的颜色选择对话框生成RGB值,也可以用取色器(比如DEBUG内置的取色器;打开IE,打开debugbar工具栏,点击吸管图标);html海域定义了一些颜色:red、black、white等,比如bgcolor=“black”。

l 配色不是一个专业开发人员考虑的,是美工的事情,所以对于颜色的取值不用太操心,知道有这么一回事就行了。

Html和xml的联系、区别

 

l Xhtml

l 属性值:html中属性值即可以用单引号括起来,也可以用双引号括起来、甚至不用引号都可以(不推荐),单双要配对。

l 注释:html使用和xml一样的<!—注释内容-->来做注释。

l 特殊字符:html中<、>是有特殊含义的、空格不会被显示的(输入一个带空格的字符串试试),所以需要特殊符号,相当于c#中的“\n”转义符。&lt;(小于号);&gt;(大于号);&nbsp;(空格);实用工具,免除记忆。

l 格式标签<p></p>创建段落;<br/>回车,也可以写成<br>,在html中有一些标签可以不关闭,<br>就是一个,这是和xml不同的地方,但是为了遵循xhtml规范,推荐像xml一样严格关闭。<br/><img=s.gif/>

l Html不把“ ”当成空格,因为html中经常有缩进,如果把缩进的空格在浏览器中以空格形式展现的话,排版会很麻烦。“&nbsp;”表示空格。

l <pre>不是万能的。功能有限。

文字格式

l <br>只是回车(即换行),<p>是分段,<p>前后会有比较大的空白,而<br>则没有。

clip_image007clip_image008

如图

l <center>网络创新小组</center>居中显示

clip_image009clip_image010

如图

l h标签,html定义了<h1></h1>到<h6></h6>六个h标签,分别表示不同大小的字体。

l <b>网络创新小组</b>粗体

l <font></font>字体标签,<font color=“red”>红色</font> <font size=“30” color=“red”>红色</font>

url、超链接

l url:表示资源在网络中的地址,比如

http://127.0.0.1/a.html、ftp://192.168.88.128/b.zip。还有uri的概念,比url大,有的可以使用uri之中说法,可以暂时看成和url一样大就行。

l 超链接:<a href="http://www.hao123.com">好123</a>

clip_image011点击,直接进入“好123”网站

l <a>中还可以嵌套图片,这样就是点击图片打开连接<a href=http://www.mamicode.com/www.hebiace.edu.cn >

超链接深入

l%20相对url:相对url表示相对于当前文档的资源,“/”表示网站根目录,“../”表示父目录,“../../”表示父目录的父目录,”../”或者不写任何斜线表示相对于当前路径的目录。站内引用最好用相对url,这样域名改变了,目录改变了都不受影响。

<a%20href=http://www.mamicode.com/”a.htm”>

<img%20src=http://www.mamicode.com/”../images/csharp1.jpg”/>

<img%20src=http://www.mamicode.com/”./images/csharp2.jpg”%20/>

l%20将<a>的target属性设定为“_blank”就可以在新的窗口中打开超链接。国内的网站都默认是在新窗口中打开。

l%20超链接:<a%20href=http://www.mamicode.com/”http://www.baidu.com”>baidu

clip_image014

l 用<a>的target属性为<a>起名字:<a name=”last”>这就是最后</a>

这样可以通过<a href=http://www.mamicode.com/”#last”>跳到平台来跳转到超链接的部分。

l 案例:去评论、回到正文。多敲几个回车

图片

l <img src=http://www.mamicode.com/”a.jpg”/>注意图片是连接的,不是插入的,所以如果src指向的文件不存在了,就看不了了。Alt属性为图片无法显示使得显示文本,鼠标方式也会有悬浮提示“点击查看大图”;border属性指定边框,border=“0”不显示边框;width、height属性指定图片的显示大小,如果不指定则是原始大小。

l 最好指定width、height,哪怕是原始尺寸大小,因为如果不指定大小,图片不占位置,图片下载后才调整大小,会造成页面很乱。如果知道那个了width、height哪怕图片没有加载完成,也会先把位置占上。

<a href="http://www.mamicode.com/images/00.jpg"><img src="http://www.mamicode.com/images/00.jpg" width="50" height="50"/></a>

l 如果网页上要显示小图(比如缩略图),不要仅仅是把大图设定一下width、height来缩小,因为仍然会下载大图,使得加载速度很慢。

列表、表格

列表:<ul><li>灌水区</li><li>版务区</li><li>原创贴图</li></ul>

l (unordered list)

l clip_image015

l 还有有序列表<ol></ol>,很少用。Ordered list

l 表格:<table></table>为表格,在内部用过<tr>创建行,<tr>内部通过<td>创建单元格。可以讲table的border属性设为0来隐藏表格线

clip_image012[1]clip_image016

n <tr>属性:align,水平对齐,可选值left、right、center;valign,垂直对齐,可选值top、middle、bottom。

n <td>也有align和valign。<tr align=”right”><td>tom</td><td align=”left”>20</td><td>男</td>:子标签默认则继承父标签的属性,如果自己单组设定了属性,则会覆盖父标签的属性。

clip_image017clip_image018

n 还可以使rowspan、colspan来进行单元格的合并,vs可视化的功能来做就行。

n 表头的td可以用th代替,这样就会表示粗体、居中显示。

n 建议将表头用<><thead>代替<tr>

表单

l 网站表单于填单

l <form>标签为表单标签。如果要把数据提交到服务器,则需要将<input>、<textarea>、<select>等表单元素放到form中。

l <input>是主要的表单元素,type的可选值:submit(提交按钮)、button(普通按钮)、checkbox(复选框)file(文件选择框)、hidden(隐藏字段)、img(图片按钮)、password(密码框)、radio(单选按钮)、reset(重置按钮)、text(文本框)

clip_image019clip_image021

input表单详解

submit:点击submit按钮表单就会被提交给服务器,中文IE下默认按钮文本为“提交查询”,可以设置value属性修改按钮的显示文本

text:size属性为宽度,value为值,maxlength为可以输入的最大长度,readonly只读。<input type="text" readonly/>(只写属性名,不写属性值)或者<input type="text" readonly="readonly" />(推荐)

clip_image022

clip_image023

checkbox:checked属性表示是否被选中,<input type="checkbox" checked />或者<input type="checkbox" checked="checked" />(推荐)checked、readonly等这种一个可选值的属性都可以省略属性值。

radio:相同name属性的为一只有组,不同radio设定不同的value值,这样通过取指定name的值就可以知道谁被选中了,不用单独的判断。

<input type="text"/>

<input type="checkbox"/>

<input type="button" value="http://www.mamicode.com/注册"/>

<input type="submit" value="http://www.mamicode.com/注册一下下"/>

<input type="checkbox" checked="checked"/>

</br>

<input type="radio" name="gender" />男

<br>

<input type="radio" name="gender"/>女

</br

<br>

<input type="radio" name="gender"/>保密

</br>

<input type="radio" name="habit" />篮球

<br>

<input type="radio" name="habit"/>足球

</br

<br>

<input type="radio" name="habit"/>排球

</br>

clip_image024

file:使用file,则form的enctype必须设置为multipart/form-data、method属性为POST(*)

image:使用src属性指定图片的地址,用来实现美化的“登录按钮”。用图片实现的submit按钮,同时提交了用户点击图片的坐标。

<select>标签

用来创建类似于WinForm中的ComboBox或者ListBox

如果size属性大于1就是ListBox(size的值为显示出来的列表数量),否则就是ComboBox。<select multiple>或者<select multiple="multiple">(推荐)multiple有且只有一个值,那么就是可以多选的ListBox。

<select >

<option>北京</option>

<option>上海</option>

<option>南京</option>

</select>

<select size="2">

<option>1</option>

<option>2</option>

<option>3</option>

</select>

clip_image025

Size控制同时显示多少个值

select中的项是<option>,<option>北京</option>还可以设定项的值<option value="http://www.mamicode.com/1">北京</option>。

将一个option设置为选中:<option selected>333</option>或者<option selected="selected">333</option>(推荐)就可以将这个项设定为选择项

如何实现“不选择”,添加一个<option value="http://www.mamicode.com/-1">--不选择--<option>,然后编程判断select选中的值如果是-1就认为是不选择。

select分组选项,可以使用optgroup对数据进行分组,分组本身不会被选择,无论对于下拉列表还是列表框都适用。见备注。

<form>

<select name="城市" size=9>

<optgroup label="直辖市">

<option>北京</option>

<option>上海</option>

<option>天津</option>

</optgroup>

<optgroup label="广东">

<option>深圳</option>

<option>佛山</option>

<option>广州</option>

</optgroup>

<optgroup label="经济特区">

<option>厦门</option>

<option>珠海</option>

<option>海南</option>

</optgroup>

</select>

</form>

clip_image026

其他标签

l <textarea>多行文本(也是表单元素):<textarea>文本</textarea>,cols=“50”、rows=“15”属性表示行数和列数。

l <textarea cols="10" rows="10">

l <label>:在<input type=“text”>前可以写普通的文本来修饰,但是单击修饰文本的时候input并不会得到焦点,而用label则可以,for属性指定要修饰的控件的id,<label for=“txt1” >asdfad</label>;”txt1”为被修饰的控件设置一个唯一的id。(label的accesskey=“r”属性指定快捷键,FF不支持)

l

l 姓名:<input type="text"/>

l 婚否:<input type="checkbox"/>

l </br>

l <label for="name">姓名:</label><input id="name" type="text"/>

l <label for="ma">婚否:</label><input id="ma" type="checkbox"/>

clip_image027

用label主要是点击“姓名”、“婚否”,鼠标就会在该方框里面。

clip_image028

l <label for="ma">婚否</label> <input id="ma" type="checkbox" />

l fieldset:GroupBox效果,将控件划分一个区域,看起来更规整

<fieldset style=“设置样式”>

<legend>常用</legend>

<input type="text" />

</fieldset>

<fieldset>

<legend>常¡ê用®?</legend>

<input type="text"/>

<input type="text"/>

<input type="text"/>

<input type="text"/>

<input type="text"/>

</fieldset>

clip_image030

l submit(提交)、reset(恢复为默认值)

l *滚动文字 <marquee>

l *播放声音(dw中添加媒体→插件)、显示flash,见备注。

练习

练习1:实现登录界面,有用户名、密码、验证码(使用普通图片代替)、“记住密码”复选框、登录按钮、重置按钮。使用Table进行布局。使用label来写修饰文本。

<table border="1">

<tr><td><label for="username">用户名:</label></td><td><input id="username" type="text" /></td ></tr>

<tr><td><label for="password">密码:</label></td><td><input id="password" type="text"/></td ></tr>

<tr><td><label for="remember">记住密码:</label></td><td><input id="remember" type="checkbox"/></tr>

</table>

clip_image031

练习2:实现注册页面,分为两个页面,第一个页面是协议显示页面,点击“我同意”超链接进入第二个注册页面,填写内容:用户名、密码、重复密码、省份(下拉列表)、性别(男、女、保密三个Radio)、职业(学生、公司职员、其他三个Radio)、爱好(登山、篮球、足球、读书、游泳五个CheckBox)。使用label来写修饰文本。将爱好几个CheckBox放到一个fieldset(GroupBox)中

clip_image033

clip_image034

clip_image035

样式表、CSS

CSS(层叠样式表,Cascading Style Sheets)是用来美化页面用的,可以对页面元素进行更精细的设置,样式主要描述元素的字体颜色、背景颜色、边框等。CSS是描述元素的皮肤。

使用CSS的好处:

外观美化 布局、定位

样式表能实现内容与样式的分离,方便团队开发

方便统一定义格式,修改也方便.

HTML标签的外观样式比较单一

页面色彩不生动

样式修改不方便

样式表的作用:为网页设置外观,相当于华丽的衣服。

例如:背景颜色:

<input type="text" value="http://www.mamicode.com/123" style="background-color:red"/>

clip_image036

边框颜色:

<input type="text" value="http://www.mamicode.com/123" style="border-color:red"/>

clip_image037

使用CSS的三种方式

CSS主要有元素内联、页面嵌入和外部引用三种使用方式。CSS是描述元素的皮肤!

元素内联(行内样式表),直接将样式写入元素的style属性中,<input type="text" readonly="readonly" style="background-color: #FF00FF" />,适用于样式没有可复用性的场合。

页面嵌入(内嵌样式表):在head中加入

<style type="text/css">

input{border-color:Yellow;color:Red;}

</style>

表示页面中所有input都是采用指定的样式。适合于样式复用,减小页面体积

外部引用(外部样式表),将css内容写入css后缀的文件

textarea{background:yellow}

然后在页面中引用,在head中加入

<link type="text/css" rel=“stylesheet" href="http://www.mamicode.com/s1.css" />

适合于多个页面共享css。

clip_image039

clip_image041

一列全部显示颜色:

层(DIV)

clip_image042

clip_image044

文本颜色:

clip_image046clip_image047clip_image048

语法:

<style>

p{}

</style>

<p></p>

clip_image049

把CSS申明在一个文件里面

clip_image050

clip_image051

Div层(块级元素)、Span(行内元素)

div:<div></div>将内容放到层中,就以将这些内容当成一个整体进行处理,比如整体隐藏、整体移动等。div非常强大和常用。类似于WinForm的Panel。

span:div是将内容放到一个矩形的区块中,会影响布局(两端会换行),而span只是把一段内容定义成一个整体进行操作,但不影响布局、显示(两端没有换行)。演示:一行文字用span与div截取部分文字的区别。

Div在网页布局中使用非常多。

Span一般用来圈住一小段文字,设置不同的样式。为什么不用<font>标签,因为用<span>可以通过CSS来设样式。

html这些标签去哪里查?Msdn目录→ web开发 → HTML and CSS → HTML and DHTML Reference → Objects

clip_image052clip_image054

常见CSS样式

Css样式的属性的键值对之间用“:”(冒号)隔开,而不同的属性之间用”;”(分号)隔开。

css计量单位:css中表示宽度、距离时有多种计量单位:px(像素)、30%(百分比)、em(相对单位)等。width:20px。

background-color:Red;背景颜色;

color:文本颜色

border-style:solid;边框风格,实线(默认是没有),还有dotted(点)等值;

border-color:边框颜色;

border-width:边框宽度(默认是0)。

例子:style="border-color:Red;border-width:1px;border-style:dotted;"

display:元素是否显示,可选值none(不显示)、block (显示为块级元素,此元素前后会带有换行符。)、inline(显示为内联元素,元素前后没有换行符 ,为div增加display:inline;样式后与span显示效果一致。注意:【

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"> 】)等。

cursor,style cursor:鼠标在元素上时显示的光标图标,可选值:cursor(默认光标)、pointer(超链接上的手)、text(输入Bean)、wait(忙沙漏)、help(帮助)等。还可以通过cursor:url(dinosau2.ani)使用ani、cur格式的自定义光标图片。

LI不显示圆点:LIST-STYLE-TYPE: none;一般设在li或者ul上

clip_image055设置光标(格式必须是ani或者cur)

margin(与表格的cellspacing属性类似)、padding(与表格的cellpadding类似。)

margin:值1; //上右下左都是 值1。

margin:值1 值2; //上下为值1,左右为值2.

margin:值1 值2 值3; //上为值1 左右为值2 下为值3;

margin:值1 值2 值3 值4; //每个值分别是:上 右 下 左;(顺时针方向)

例如:

clip_image056

clip_image057

风格是inline

clip_image059

clip_image060

样式选择器

对于非元素内联的样式需要定义样式选择器,通俗的说就是这个样式适合于哪些元素,三种:标签选择器、class选择器和id选择器。

标签选择器 input{border-color:Yellow;color:Red;},对于指定的标签采用统一的样式

class选择器,以定义一个命名的样式,然后在用到它的时候设定元素的class属性为样式的名称,还可以同时设定多个class,名称之间加空格

样式名称开头加“.”

.warning{background:Yellow;}

.highlight{font-size:xx-large;cursor:help;}

<table><tr><td class="highlight">aaa</td><td class="warning">bb</td><td class="highlight warning">ccc</td></tr></table>

同一个标签可以应用多个类选择器(空格隔开)。如果样式表中

clip_image061clip_image061[1]

clip_image063

style="background-color:Green"的权优先于

<style>

.warning{background:Yellow;}

.highlight{font-size:xx-large;cursor:help;}

</style>

的class, 所以背景变为绿色,原先class设置为黄色。

clip_image065

标签+class选择器

class选择器也可以针对不同的标签,实现同样的样式名对于不同的标签有不同的样式,只要在样式名前加标签名即可。

input.accountno{text-align:right;color:Red;}

label.accountno{font-style:italic;}

<input class="accountno" type="text" value="http://www.mamicode.com/11111111111" />

<label class="accountno">333333333333333333</label>

clip_image066

执行:

clip_image067

id选择器

为指定id的元素设定样式,id前加#

#username

{

font-size:10px;

}

<input id="usersname" type="text" value="http://www.mamicode.com/aaaaaaaaaaaa" />

style、class可以同时组合使用

<input id="username" class="accountno" style="font-size:40px;color:red" type="text" value="http://www.mamicode.com/aaaaaaaaaaaa“ />

clip_image068clip_image069

更多选择器(*)

包含选择器:

P strong{ background-color:Yellow}

表示P标签内的strong标签内的内容使用的样式

<strong>fadsfasdfads</strong>

<p><strong>adfasfd</strong></p>

组合选择器,同时为多个标签设定一个样式

H1,H2,input{background-color:Green}

<h1>nihao</h1>

<input type="text" value="http://www.mamicode.com/test" />

(*)其他CSS选择器:div > p(子选择器)、div + p(相邻选择器)、…。IE7以下不支持。在jQuery中还会学习。

clip_image071

clip_image072

伪选择器

伪选择器:为标签的不同状态设定不同的样式:

A:visited:超链接点击过的样式;A:active:选中超链接时的样式;A:link:超链接未被访问时的状态;A:hover:鼠标移到超链接时的状态。

A:visited {TEXT-DECORATION: none}

A:active {TEXT-DECORATION: none}

A:link {TEXT-DECORATION: none}

A:hover {TEXT-DECORATION: underline}

说明:TEXT-DECORATION: none表示超链接不显示下划线。

不是所有的元素都支持伪选择器。(不同浏览器支持情况不一样,IE7以下不支持input:hover等标签。),目前大多数只在A标签时使用。

注意浏览器缓存问题。

思考:页面上 部分超链接默认是红色、部分超链接默认是白色。怎么实现?(.myAnchor:link)

clip_image073clip_image074 clip_image075