表格 table
<!-- border:边框线,0-无边框
cellspacing: 单元格之间的间距
cellpadding: 单元格的内边距
子表签:
tr: 行
th: 表头的列,文字是粗体
td: 数据行的列
caption: 表格名称,显示在表格上面
thead,tbody: 当有thead和tbody时,标签的顺序无关,
不管thead放在什么位置,都会把thead显示在第一行
-->
<table border="1" cellspacing="0" cellpadding="10">
<caption>学生表</caption>
<thead>
<tr>
<th>姓名</th>
<th>性别</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>男</td>
</tr>
<tr>
<td>小王</td>
<td>女</td>
</tr>
</tbody>
</table>
- 行列合并
<table border="" cellspacing="" cellpadding="">
<tr>
<th>姓名</th>
<th>科目</th>
<th>成绩</th>
<th colspan="2">联系方式</th>
<!-- <th>电话</th>
<th>QQ</th> -->
</tr>
<tr>
<!-- 列合并:
只会影响一行,
在要合并的第一列加colspan属性,值就是要合并的列数
后面的列删掉
-->
<!-- 行合并:
在要合并的第一行的列上加rowspan属性,值是要合并的行数
然后把后面行的对应列都删掉 -->
<td rowspan="2">张三</td>
<td>Java</td>
<td>80</td>
<td>1234</td>
<td>10086</td>
</tr>
<tr>
<!-- <td>张三</td> -->
<td>Web</td>
<td>90</td>
<td>1234</td>
<td>10086</td>
</tr>
<tr>
<td rowspan="2">李四</td>
<td colspan="">Java</td>
<td>85</td>
<td>1234</td>
<td>10086</td>
</tr>
<tr>
<!-- <td>李四</td> -->
<td>Web</td>
<td>95</td>
<td>1234</td>
<td>10086</td>
</tr>
</table>
练习:表格合并
-
表格的样式
table的border-collapse样式让边框双线重叠在一起变单线
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>表格样式</title>
<style type="text/css">
table{
/* 边框线折叠(重叠) */
border-collapse: collapse;
} t
h,td{
border: 1px solid black;
width: 150px;
height: 30px;
text-align: center;
} t
h{
background-color: lightgrey;
}
</style>
</head>
<body>
<table>
<tr>
<th>商品ID</th>
<th>商品名称</th>
<th>商品类别</th>
<th>商品价格</th>
<th>商品图片</th>
<th>商品描述</th>
</tr>
<tr>
<td>1940392</td>
<td>Meta60</td>
<td>手机</td>
<td>6999</td>
<td>phone1.jpg</td>
<td>华为Metal60手机</td>
</tr>
<tr>
<td>1940392</td>
<td>Meta60</td>
<td>手机</td>
<td>6999</td>
<td>phone1.jpg</td>
<td>华为Metal60手机</td>
</tr>
<tr>
<td>1940392</td>
<td>Meta60</td>
<td>手机</td>
<td>6999</td>
<td>phone1.jpg</td>
<td>华为Metal60手机</td>
</tr>
<tr>
<td>1940392</td>
<td>Meta60</td>
<td>手机</td>
<td>6999</td>
<td>phone1.jpg</td>
<td>华为Metal60手机</td>
</tr>
</table>
</body>
</html>
表单 form
表单就是在网页上填表格,在数据的修改,新增等时候用到表单
表单类型的输入框包含文本,单选,复选,下拉框,提交按钮
表单提交后就会把我们输入的数据发送给服务器
- 基本表单
<!-- 表单
action:后台接收数据的接口的URL
method:提交方式,get-把数据附加在url提交,长度有限制,
如:http://127.0.0.1:8848/login?userName=aaa&userPwd=123
url与参数之间是?分割;参数名与值之间是=分割;多个参数之间用&分割
post-数据隐藏提交 ,长度不受限制
enctype="multipart/form-data": 如果要上传文件,form标签需要添加这个属性
-->
<form action="/login" method="get" >
<!-- 文本输入框,可以输入字符,数字 -->
用户名:<input type="text" name="userName">
<!-- 密码输入框,输入的内容以星号显示 -->
密码:<input type="password" name="userPwd">
<!-- 提交按钮,点击时form表单提交到后台服务器 -->
<input type="submit" value="提交"/>
</form>
- form 标签
<form action="#" method="get">
<!-- 表达标签的公共的属性:
id: 标签唯一识别码,每个页面上不能有重复的id
name: 标签名,后台根据name来获取输入值
value: 输入的值
autocomplete: 是否显示历史记录, 设为off就不显示
-->
学生姓名:<input type="text" name="stuName" value="张三"
autocomplete="off">
<br>
学生年龄:<input type="number" name="stuAge">
<br>
<!-- 单选框:
同一组单选框name要一样
checked: 选中, 单选框和复选框都有这个属性
-->
学生性别:<input type="radio" name="stuSex" value="男">男
<input type="radio" name="stuSex" value="女" checked>女
<br>
学生爱好:<input type="checkbox" name="stuHobby" value="唱歌" checked>
唱歌
<input type="checkbox" name="stuHobby" value="跳舞" checked>
跳舞
<input type="checkbox" name="stuHobby" value="运动">运动
<input type="checkbox" name="stuHobby" value="旅游">旅游
<br>
<!-- 下拉框:
option标签的value是提交到后台的值;标签体的值是显示的内容
selected属性表示当前选项被选中
select标签上添加 multiple属性,可以多选
-->
学生籍贯:<select name="stuNativePlace">
<option value="">请选择...</option>
<option value="cq">重庆</option>
<option value="sc">四川</option>
<option value="gz" selected>贵州</option>
<option value="yn">云南</option>
</select>
<br>
<!-- 文本域:
cols: 宽度(列)
rows: 高度(行)
-->
自我评价:<textarea name="stuDesc" cols="30" rows="10"></textarea>
<br>
<!-- 上传文件标签:
会打开文件浏览器让你选择文件
-->
上传照片:<input type="file" name="stuPhoto">
<br>
<input type="submit" value="提交"/>
</form>
练习:表单
CSS
选择器分组和class组合
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
/* 多个标签使用同样的样式,在选择器中逗号分割多个选择器
*/
.p1,.p2,.p3{
color: red;
} .
font20{
font-size: 20px;
} .
font30{
font-size: 30px;
} .
font40{
font-size: 40px;
}
</style>
</head>
<body>
<!-- 标签的class可以写多个,用空格分割
写样式时经常把公共的样式抽出来单独写,特有的样式另外再写一个,设置class属性用多个
样式
-->
<p class="p1 font20">第一个p标签</p>
<p class="p2 font30">第二个p标签</p>
<p class="p3 font40">第三个p标签</p>
</body>
</html>
其它选择器
- 后代选择器
- 子元素选择器
- 相邻兄弟选择器
- 后续兄弟选择器
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
/* 两个选择器之间空格,表示后代选择器
前一个选择器限定范围, 第二个选择器第一个选择器的所有后代(所有子子孙孙标签)
标签中再次筛选
*/
.box1 p{
color: red;
}
/* 子元素选择器,用>分隔
只有儿子(下一层)的标签受影响
*/
.box2>p{
font-size: 30px;
} /
* 相邻兄弟,用+分隔
紧挨它的后续的第一个兄弟标签
*/
.first-p+p{
background-color: gainsboro;
} /
* 后续兄弟,用~分隔
它后面的所有兄弟标签
*/
.first-p~p{
color: blue;
}
</style>
</head>
<body>
<div class="box1">
<div class="box2">
<p>box2下的p标签</p>
<div class="box3">
<p>box3下的p标签</p>
<span>span标签</span>
</div>
<p>box2下的第二个p标签</p>
</div>
</div>
<div class="boxb">
<p class="first-p">boxb下的第一个p标签</p>
<p>boxb下的第二个p标签</p>
<p>boxb下的第三个p标签</p>
</div>
</body>
</html>
- 伪类选择器
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>a标签的伪类选择器</title>
<style type="text/css">
/* 未访问之前的样式 */
a:link{
color: aqua;
} /
* 已访问的样式 */
a:visited{
color: gray;
}
/* 鼠标移到链接上的样式
hover必须要放在link和visited之后才生效
*/
a:hover{
color: blue;
} /
* 鼠标键按下时的样式
active必须要放在hover之后
*/
a:active{
color: red;
}
</style>
</head>
<body>
<a href="index.html">首页</a>
</body>
</html>
背景
background-image
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.box1{
background-image: url('img/boy.jpg');
height: 500px;
width: 400px;
border: 1px solid black;
/* contain等比例放大图片,直到高或宽跟容器相等
cover直接把图片拉伸跟容器的高宽一致(填满整个容器),图片可能会变形
*/
background-size: cover;
/* 背景图片不会重复(平铺) */
background-repeat: no-repeat;
/* 背景图片居中显示 */
background-position: center;
/* 透明度,取值范围0~1,0-完全透明; 1-不透明 */
opacity: 0.5;
}
</style>
</head>
<body>
<div class="box1">
明星图片
</div>
</body>
</html>
边框
border
border-style
border-width
border-color
border-radius
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.box1{
/* border: 1px solid red; */
height: 100px;
width: 100px;
/* 四个值:上 右 下 左
两个值:上下 左右
*/
border-width: 1px 3px 5px 7px;
border-style: dashed dotted solid dotted;
border-color: red green blue gold;
} /
* 用div边框实现三角形 */
.box2{
height: 0px;
width: 0px;
border-width: 20px;
/* transparent透明 */
border-color: transparent transparent transparent gold;
border-style: solid;
} /
* 阴影效果 */
.box3{
width: 200px;
height: 60px;
background-color: red;
box-shadow: 5px 5px darkgray;
}
</style>
</head>
<body>
<div class="box1">
</div>
<br>
<br>
<div class="box2">
</div>
<div class="box3">
</div>
</body>
</html>
盒子模型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>盒子模型(内外边距)</title>
<style type="text/css">
.box1{
border: 1px solid red;
margin: 0px;
} /
* 每个块标签有内边距,外边距,边框. 它实际占用的尺寸是高/宽+内边距+边框+外边距 */
.box2{
border: 20px solid blue;
width: 50px;
height: 50px;
/* 外边距 */
margin: 20px;
/* 内边距 */
padding: 20px;
}
</style>
</head>
<body style="margin: 0px;">
<div class="box1">
<div class="box2">
文字内容文字内容
</div>
</div>
</body>
</html>
标签的显示和隐藏
display:none
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>通过hover让标签显示</title>
<style type="text/css">
.box1{
height: 100px;
width: 100px;
background-color: red;
/* 隐藏标签: none-隐藏; block-显示 */
display: none;
} .
show:hover+.box1{
/* 显示标签 */
display: block;
} .
show{
/* 光标为手形 */
cursor: pointer;
}
</style>
</head>
<body>
<span class="show">显示</span>
<div class="box1">
</div>
</body>
</html>