表单是什么?——表单不是表格。
用户可以在其中提供一定的数据或信息或选项的一些html元素。表单通常有一个“提交”按钮,然后可以将这些数据据/信息/选项提供给服务器上的程序使用——数据处理。
——表单的核心是数据。
表单标签的构成和形式:
到底有哪些表单项?
单行文本框:
其他属性:
value:设定其中的初始文字
size:设置其输入框的宽度(单位是“字符宽”)——其中能放置该数量的字符
maxlength:设置该输入框最多能输入的字符个数
readonly:这是一个“无值”属性,表示“只读”,则写法是:readonly=”readonly”
disable: 设置该输入框“无效”,即数据无效。
密码框:
其他属性:
value:设定其中的初始文字
size:设置其输入框的宽度(单位是“字符宽”)——其中能放置该数量的字符
maxlength:设置该输入框最多能输入的字符个数
单选项:
说明:单选项通常必须有value值;
其他属性:
checked: 表示该选项默认是选中的状态。也是一个“无值属性”
name特别说明:一组的单选项要求name值必须相同。
多选项:
说明:多选项通常必须有value值;
其他属性:
checked: 表示该选项默认是选中的状态。也是一个“无值属性”
提交按钮:
说明:点击提交按钮,则表单就会“被提交”,即数据会传入到表单的action所设定的文件中去。
图片按钮:
说明:图片按钮的功能其实也是“提交”,但其显示出来的效果是一张图片——这样有利于美化页面。
重置按钮:
说明:会将表单的所有用户填写或选择的数据恢复到初始状态
普通按钮:
说明:对表单没有影响,但可以从中产生“动作”以实现其他要求(js程序)
文件域:
说明:可以让用户选择本地的文件(并发送到服务器)——文件也是数据。
隐藏域:
说明:界面上不可见,但是作为一份“隐藏的数据”提交给服务器——编程所需。
下拉选择:使用select和option标签配合实现。但要把此当作“一个表单项”
………………….
说明:
option标签上可以使用selected属性,表明该select元素的默认选中的项(默认是第一项被选中)。
select标签上可以使用multiple属性,使该select元素可以“选择多项”(即默认只能选一个)
多行选项(也叫列表选项):多行选项其实只是下拉选择的一种“变形”——设置其size值大于等于就会成多行。
………………….
多行文本框:
说明:
rows设定的行数是一个数字,表示该多行文本框可以显示的文字的行数
cols设定的列数是一个数字,表示该多行文本框可以显示的一行文字中个数
此标签没有value属性。但其实际的“值”是放在此标签中间的所有内容。
注意:表单项都必须有name属性,以表明其“名字”——服务器取其中的数据就是凭此名字。
第一个观念:我们在打开的一个“窗口”中总是只会显示一个网页。
但是:
我们其实也可以在一个窗口中打开多个网页——其实其实质还是一个窗口显示一个网页,只是我们会使用某些特定标签(frameset)来将一个“大窗口”分割成若干个“小窗口”。
首先要明确:
1, 使用框架标签(frameset)就不能使用body标签——即body标签使用frameset标签代替
2, 使用frameset标签就要使用framseset文档类型
则具体分割代码如下:
cols的值是连续的表示列的宽度的数字或百分数,相互之间用(,)分开,其中“*”号表示“其余”的宽度。比如:
cols=”100,800” :表示将大窗口按列分割成两个小窗口,第一个为100宽,第二个为800宽
cols=”100,200,*” :表示将大窗口按列分割成3个小窗口,第一个为100宽,第二个为200宽,其余给第3个
cols=”15%, *”
rows的值是连续的表示行的宽度的数字或百分数,相互之间用(,)分开,其中“*”号表示“其余”的宽度。比如:
rows=”100,200,*”
row=”20%, *”
注意:一个frameset只能按某一个方向(列或行)进行分割
CSS:Cascading Style Sheet(层叠样式表)
CSS能够让我们将网页从以下两个方面来控制网页的外观:
1, 批量控制网页的外观,使我们节省劳力。
2, 精确控制网页的外观:到像素级别。
css的基本语法形式:
选择器 { css属性名1:值1;css属性名2:值2; ………… }
举例:
font{color:red; font-weight:bold; font-size:18px;}
dt{
font-size:14px;
font-weight:bold;
color:pink;
}
html属性:写在标签中,形式为: 属性名=“属性值”——此引号可以省略,但墙裂推荐不省略
——也可以叫“标签属性”
——html属性通常是“各个标签的自有属性,一般不一样”
——使用相同html属性的标签极少
css属性: 写在选择器的大括号中,形式为: 属性名:属性值——特别注意,值不可以加引号
——也可以叫“样式属性”
——css属性通常是 “对各个标签都可用”,一般都一样
——不使用相同css属性的标签极少
标签选择器:
形式: 标签名 { …….. }
含义: 指代(对应)网页中的所有该标签都应用其中的属性设置。
类选择器:
形式: .类名 { …… }
含义: 指代(对应)网页中的class的值为该类名的所有标签都应用该属性设置。
举例:
ID选择器:
形式: #id名{ …… }
含义: 指代(对应)网页中的id的值为该名称的该标签都应用该属性设置。
注意: 通常,一个网页中的id名不要相同,因为id本身就是表示“唯一”的意思。
举例:
通用选择器:
形式: *{ ….. } ——通用选择器只有这一个形式(符号)
含义: 其自动指代“所有标签”,即所有标签都应用该属性设置
注意: 通用选择器慎用,通常只用于设置基本的几个属性,比如文字颜色,文字大小,padding,margin
伪类选择器:
形式: :伪类名 { …… }
注意: 伪类名其实只有系统内部规定的不多的几个,不是我们自己定义的,比如:link, visited, hover, active.他们的含义也是特定的。通常上述几个伪类只用于a标签,则其形式和含义通常为:
a:link{ …… } :表示一个a链接标签在网页初始打开的时候的状态(初始链接状态)
a:visited{…..} :表示一个a链接标签在点击(访问)过之后的时候的状态(访问后状态)
a:hover{….} :表示一个a链接标签在鼠标放上去的时候的状态(悬停状态)
a:active{….} :表示一个a链接标签在鼠标摁住但还没有抬起的状态(活动状态)。
不过,最新的浏览器中,出于安全考虑,a的hover和visited效果有些属性不能用了。
复合选择器之:层级选择器
形式: 选择器1 选择器2 { ……… }
含义: 在选择器1所对应的标签中由选择器2所对应的那些标签。。。。。其中,选择器1和选择器2可以是前面所学的任意某种选择器,而且这种层级关系还可以多层次,比如:
#d1 div{…}
.cc1 p span{…..}
p .cc2 img{…..}
#d1 p a:hover{….}
举例:
div p{ color: red;}
段落1
段落2
复合选择器之:分组选择器
形式: 选择器1,选择器2 { ……… }
含义:指这两个选择器都使用同样的属性设置,其实无非是简缩代码的一种写法,否则他们得用两个选择器来写。
.a {color:red; font-size:15px;}
.b{ color:red; font-size:15px;}
è
.a, .b{ color:red; font-size:15px;}
其他复合形式(举例):
div.cc1{…} :代表具有class值为cc1的div标签,它跟 div .cc1{…}是完全不同的。
p#d1{…} :代表具有id值为d1的p标签,但这种形式其实并不推荐(意义不大)。
框架:
框架标签是用于将“当前窗口”进行瓜分成更小窗口的一种技术。framseset代替body标签,并要使用框架文档类型。
css基本概念:
css是用于这样一个目的: 将网页中的某个(些)标签(元素)的某(些)方面特性设置为某(些)个值。
css的语法基本模式为:
选择器 { css属性1:值1;css属性2:值2;……… }
所谓选择器,其实就是某种可以对应到网页中的某个(些)标签的语法形式。
css选择器分类:
标签选择器:
一个英文单词{….}
所谓一个英文单词,其实也就是一个应该存在的标签名
类选择器(class选择器)
.类名{…}
啊啊啊啊啊
id选择器:
#id名{…..}
特别注释:title, class, id就是我们所谓的“通用属性”——即谁都可以用。
通用选择器:
*{….}
伪类选择器:
a:link{…}
a:visited{…}
a:hover{。。。}
a:active{….}
注意:上述4个伪类用于a标签通常就必须按上述顺序写。
另外,实际应用中,常常简化为这样:
a{……}
a:hover{….}
含义是:a连接标签只分“鼠标放上去状态”和“其他状态”
层级选择器:
选择器1 选择器2{。。。。。}
分组选择器:
选择器1, 选择器2{。。。。。}
color:设定一个标签中的文字的颜色,颜色值可以使用英文单词,16进制语法和rgb语法:
color: red; color: #f0fcf8; color:rgb(123, 88, 205);
font-size: 设定文字大小,单位通常为像素(px)—— 一般的商业网站的文字大小通常都是12px。
font-weight: 设置文字粗体(bold)或非粗体(normal)。
font-style: 设置文字斜体(italic) 或非斜体(normal)
font-family:设置文字的字体名字,可以使用多个字体名,中间用逗号分开,表示的含义是:首先使用第一个字体,如果用户电脑中没有第一个,则是用第二个,以此类推。举例:
font-family: 宋体,仿宋,微软雅黑,arial, “Times New roman”;
line-height:设置文字的行高,单位通常也是px,即一行文字所占据的空间高度——行高不是文字的高度。
letter-spacing:设置字符(或字母)之间的间隔距离,中文其实就是“字”的间隔。
word-spacing:设置单词之间的间隔距离——通常只对西方拉丁语系的字符有效。
text-align:设定文字的水平对齐方式。其功能是相当于标签属性中的align属性。但要注意:align作为html属性,其实只在其中的某几个标签中使用,但text-align是几乎所有标签都可以用的。
text-indent: 设定一个段落中的首行缩进距离,单位通常也是px。
text-decoration:设置文字的“修饰线”:下划线(underline),中划线(line-through),上划线(overline),none(无)
vertical-align: 设定文字在一个表格盒子(单元格)的垂直对齐方式:top(顶对齐),middle(中对齐),bottom(底对齐)
盒子是css中最重要的概念。
盒子
首先先建立一个观念: 几乎所有标签其实都是一个盒子——而所谓盒子,无非就是一个“矩形的区域范围而已”。其实所谓网页,无非是一个盒子套一个盒子。
一个盒子有如下一些区域(结构)构成:
边框(border):一个线型的区域,可以是实线或虚线或其他形状。
外边距(margin):也叫“边界”,边框线之外的一块空白区域,其含义是“不能放置物体”
内边距(padding):也叫“补白”,边框线之内的一块空白区域,其含义也是“不能放置物体”
内容区(没有对应的css属性名):指一个盒子中可以放置“物体”的区域——也就是盒子的主要区域。其中放置的物体可以是普通的文字或其他标签——对应我们之前学的html中的“内容部分”。内容区通常只能设置其宽高属性(width,height)。
一个盒子的各个组成部分由下图所示:
我们以前学习html,说,标签具有“表形表意”之作用。其实也可以说,内容和其表现混在一起。
现在:
css技术其实可以将一个网页中的各个标签的表现都“提出来”放到一个专门的地方(比如style标签中),剩余的部分(标签和文字内容等)被整体上称为“结构/内容”。这种做法就被称为“内容与表现分离思想”
类似div的盒子:一个盒子自动“占据一行”(不管其内部内容多少):这就是“块盒子”(块元素)。常用块盒子:
p, hr, h1~h6, table, form, ul, li, ol, dl, dt, dd, blockquote, pre,
特点:可以设置固定的宽高,margin,padding,
类似span盒子:一个盒子中的内容会跟同类的盒子并排在一行出现,除非该行已满,则会自然到下一行——类似文字的表现特性。:这就是行内盒子(行内元素)。行内盒子通常放“最终的数据内容”,比如文本,图片。其他行内盒子:
b, strong, font, i, u, a, img, input, textarea, select,
特点:宽高不能设定,而是由其内容“撑出”,margin和padding没有上下方面的表现。
通常,行内盒子是“小盒子”,块盒子是“大盒子”,
所谓布局,其实是指的将网页内容以一定的方式放到合适的位置上去。
布局的基本步骤:
1, 将“当前版面”以视觉上界限明显的方式进行划分若干个区块,划分只用两种方式:
a) 上下结构:此时,只要使用若干个盒子,自然就是上下结构,无需其他设置。
b) 左右结构:此时使用若干个盒子,并进行相应的浮动,通常的模式:
浮动解释:
浮动就像水中的气泡,会“网上浮”
更形象的比喻:大家(所有标签)都在“地面上平铺着”,各自占据着一定的面积,浮动元素却“浮”到天花板上去了,其并占据大家通常的“地面面积”。
浮动除了表现上不跟别的元素抢占地盘之外,其最主要的特性(也就是破坏效果)其实是:使其父盒子失去合理高度——父盒子已经包不住其这些浮动的内部盒子了!这在布局中基本上是不允许的!那么我们就必须使用补充的做法来实现合理包含——父盒子包住子盒子。让父盒子获得正确有效高度的方法有3个:
1, 给父盒子设置一个固定的高度——通常设计时已知高度且不回改变的时候。
2, 给父盒子的内部最末尾加一个清除浮动的空盒子,如下:
3, 给父盒子设置一个css属性:overflow:hidden;
则最好总结:布局需要左右排列,左右排列需要浮动,浮动需要修正其破坏效果——让父盒子合理包住其子盒子。