表单和高级选择器
1、什么是表单
表单用于收集用户的信息,是浏览器和用户之间沟通的桥梁。
就是你在注册账号时,让你输手机号,输密码那个小框框,明白了吧
还不明白? 来 给你个图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CGdfat5P-1629718059913)(.\assetis\表单.png)]
现实中的表单,类似我们去银行办理信用卡填写的单子。 如下图
目的是为了收集用户信息。
在我们网页中, 我们也需要跟用户进行交互,收集用户资料,此时也需要表单。
在HTML中,一个完整的表单通常由表单控件(也称为表单元素)、提示信息和表单域3个部分构成。
表单控件:
包含了具体的表单功能项,如单行文本输入框、密码输入框、复选框、提交按钮、重置按钮等。
提示信息:
一个表单中通常还需要包含一些说明性的文字,提示用户进行填写和操作。
表单域:
他相当于一个容器,用来容纳所有的表单控件和提示信息,可以通过他定义处理表单数据所用程序的url地址,以及数据提交到服务器的方法。如果不定义表单域,表单中的数据就无法传送到后台服务器。
2、input 控件(重点)
在上面的语法中,<input />标签为单标签,type属性为其最基本的属性,其取值有多种,用于指定不同的控件类型。除了type属性之外,<input />标签还可以定义很多其他的属性,其常用属性如下表所示。
<body>
<form method="post" action="a.html">
<p> 名字:<input name="name" type="text"> </p>
<p> 密码:<input name="pass" type="password"> </p>
<p>
<input type="submit" name="Button" value="提交">
<button>提交</button>
</p>
<p><input type="image" src="./图片.png" style="width: 100px;height: 40px;">
<input type="reset" name="Reset" value="重填">
</p>
</form>
</body>
3、radio单选框多个选项只能选择一个的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lfj2Ztp5-1629718059915)(.\assetis\radio.png )]
解决方法,给两个input框添加一个相同的name,关联起来,这样就只能选择一个了
<body>
<form action="">
请选择性别:
<input type="radio" name="sex">男
<input type="radio" name="sex">女
</form>
</body>
4、label标签(理解)
label 标签为 input 元素定义标注(标签)。
作用: 用于绑定一个表单元素, 当点击label标签的时候, 被绑定的表单元素就会获得输入焦点
如何绑定元素呢?
for 属性规定 label 与哪个表单元素绑定。
<label for="male">Male</label>
<input type="radio" name="sex" id="male" value="male">
<body>
<form action="">
请选择性别:<input type="radio" name="sex" id="man">
<label for="man">男</label>
<input type="radio" name="sex" id="woman">
<label for="woman">女</label>
</form>
</body>
type=”checkbox”的时候,复选框。可重复选择,应用场景,接受协议
type=”button”的时候,是登陆框。想让文字出现在登陆框里面,需要在input里面添加value属性,value后面跟要添加的文字。
例:
效果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NJUQUdcu-1629718059917)(.\assetis\wps1.jpg)]
按钮效果也可以直接用butto双标签,效果一样,注册
input框设置提醒字符,打字的时候会自动消失,比如某些输入框会提醒,请输入 账号等
语法:在input标签内添加placeholder=”要提示的内容”
请输入姓名:<input type="text" placeholder="请输入用户名:">
5、textarea控件(文本域 了解)
如果需要输入大量的信息,就需要用到<textarea></textarea>标签。通过textarea控件可以轻松地创建多行文本输入框,其基本语法格式如下:
<textarea cols="每行中的字符数" rows="显示的行数">
文本内容
</textarea>
开发中评论输入框一般使用可编辑的div进行操作
<div contenteditable="true">这是一个div标签,点击可以编辑</div>
6、下拉菜单
使用select控件定义下拉菜单的基本语法格式如下
<select>
<option>选项1</option>
<option>选项2</option>
<option>选项3</option>
...
</select>
注意:
- <select></select>中至少应包含一对<option></option>。
- 在option 中定义selected =" selected "时,当前项即为默认选中项。
7、表单域
在HTML中,form标签被用于定义表单域,即创建一个表单,以实现用户信息的收集和传递,form中的所有内容都会被提交给服务器。创建表单的基本语法格式如下:
<form action="url地址" method="提交方式" name="表单名称">
各种表单控件
</form>
常用属性:
- Action
在表单收集到信息后,需要将信息传递给服务器进行处理,action属性用于指定接收并处理表单数据的服务器程序的url地址。 - method
用于设置表单数据的提交方式,其取值为get或post。 - name
用于指定表单的名称,以区分同一个页面中的多个表单。
注意: 每个表单都应该有自己表单域。
8、表单的高级应用
- 在表单内部添加disabled,即禁用该表单,或者禁用按钮
例子:
提交
应用场景:填写信息不完整,不同意服务选项等等,此时可以设置表单按钮不可用
readonly 只读 只能读 不能修改 直接写在表单里面
disable 禁用
hidden 隐藏 (提交一些信息,想要保存在页面中,但是不想让用户看到)
9、CSS复合选择器
复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,目的是为了可以选择更准确更精细的目标元素标签。
交集选择器
交集选择器由两个选择器构成,其中第一个为标签选择器,第二个为class选择器,两个选择器之间不能有空格,如h3.special。
记忆技巧:
交集选择器 是 并且的意思。 即…又…的意思
h3.specila{}
比如: p.one 选择的是: 类名为 .one 的 段落标签。
用的相对来说比较少,不太建议使用。
<head>
<meta charset="UTF-8">
<title>交集选择器</title>
<style>
/* 标签名为.tag的p标签 */
p.tag{
color: red;
}
</style>
</head>
<body>
<p>我是p标签</p>
<p class="tag">我是类名为tag的p标签</p>
</body>
并集选择器
并集选择器(CSS选择器分组)是各个选择器通过逗号连接而成的,任何形式的选择器(包括标签选择器、class类选择器id选择器等),都可以作为并集选择器的一部分。如果某些选择器定义的样式完全相同,或部分相同,就可以利用并集选择器为它们定义相同的CSS样式。
记忆技巧:
并集选择器 和 的意思, 就是说,只要逗号隔开的,所有选择器都会执行后面样式。
比如 .one, p , #test {color: #F00;} 表示 .one 和 p 和 #test 这三个选择器都会执行颜色为红色。 通常用于集体声明。
他和他,在一起, 在一起 一起的意思
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
h1,p{
color: red;
}
</style>
</head>
<body>
<h1>老陈真帅</h1>
<p>楼上说的对呀</p>
</body>
后代选择器
后代选择器又称为包含选择器,用来选择元素或元素组的后代,其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。
子孙后代都可以这么选择。 或者说,它能选择任何包含在内 的标签。
示例:
<style>
h1 em{
color: red;
}
</style>
</head>
<body>
<h1>This is a <em>important</em> heading</h1>
<h1>我是第二个h1 <span>span包裹起来了 <em>我是em</em></span></h1>
<p>This is a <em>important</em> paragraph.</p>
</body>
子元素选择器(子代选择器)
子元素选择器只能选择作为某元素子元素的元素。其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个 > 进行连接,注意,符号左右两侧各保留一个空格。
白话: 这里的子 指的是 亲儿子 不包含孙子 重孙子之类。
子代和后代的区别,后代只要是后代的都发生变化,即爸爸选中后,儿子,孙子,只要名字一样都发生变化。
子带,爸爸选中后,只有儿子发生变化。
比如: .demo > h3 {color: red;} 说明 h3 一定是demo 亲儿子。 demo 元素包含着h3。
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
h1>strong{
color: red;
}
</style>
</head>
<body>
<h1>This is <strong>very</strong> <strong>very</strong> important.</h1>
<h1>This is <em>really <strong>very</strong></em> important.</h1>
</body>
属性选择器
只要具备某个属性,或者属性=属性值,就会被选中执行某些操作。
语法:
[属性]{
声明;
}
也可以:
[属性=”值”]{
声明;
}
^= 以某某开头
$= 以某某结尾
*= 包含某某
<head>
<meta charset="UTF-8">
<title>属性选择器</title>
<style>
/* 只要包含href属性的标签全部选中 */
[href]{
color: red;
}
/* href属性的值必须完全是 'aqiyi.com' */
[href='aqiyi.com']{
color: rgb(161, 30, 30);
}
/* href属性的值是以 h 开头的选中 */
[href ^='h']{
color: yellow;
}
/* href属性的值是以 n 结束的选中 */
[href$='n']{
color: red;
}
/* href属性值中包含baidu的 选中 */
[href *='baidu']{
color: seagreen;
}
</style>
</head>
<body>
<p><a href="http://www.baidu.com">百度</a></p>
<p><a href="www.google.cn">谷歌</a></p>
<p><a href="aqiyi.com">爱奇艺</a></p>
</body>
</html>
[href ^='h']{
color: yellow;
}
/* href属性的值是以 n 结束的选中 */
[href$='n']{
color: red;
}
/* href属性值中包含baidu的 选中 */
[href *='baidu']{
color: seagreen;
}
</style>
```