5.13
昨日回顾
-
表格标签
<table> <thead> <tr> <th>加粗文本</th </tr> </thead> <tbody> <tr> <td>表单里的用数据即可</td> </tr> </tbody> </table>
table有一个border属性可以加边框,针对tr可以设置rowspan,colspan,合并单元格
-
form表单
能够获取用户数据发送给后端
<form action='' method='' enctype=''></form> <!-- action: 不写action默认向当前地址提交 写全路径 写 /index/,发送给当前地址+后缀,能够偶自动补全当前页面所在的后端服务器和端口 --> <!-- method:请求方式,默认是get,可以改成post --> <!-- enctype 默认是urlencoded,只能发送文本 如果要发送文件,要改成formdata 发送文件必须要修改的两个参数:method改为post,enctype改为formdata -->
-
input获取用户输入
用于获取用户数据,包括用户输入、选择、上传
可以改type把input变成其他类型
-
input的type类型
- text 输入普通文本
- password 展示密文
- date 日期
- radio 单选:默认选择可以加
checked
- checkbox:默认选择可以加
checked
- file:获取本地的文件,加multiple可以上传多个文件
- submit:触发form表单提交动作
- button:什么功能都没有,一个普通的按钮
- reset:重置按钮
-
触发form表单的两种方式
触发提交的真正的按钮只有2种: input[type=submit], <button></button>
-
select标签
下拉框选择,默认是单选,可以加multiple变成多选
下拉框选项里面是一个个option标签,加selected默认选择
<select> <option value="111">111</option> <option value="222">222</option> <option value="333" selected>333</option> </select>
-
textarea
获取大段文本内容,个性签名,论坛评论
-
lable标签
给input框加上注释信息,不写其实也没事
input写在lable里面,或着给lable的for属性关联input的id值
-
placeholder:给输入框加一个默认的提示
-
补充小点
获取用户数据的标签都应该有
name
属性,作为给后端发送数据的数据名,相当于字典的key,输入的数据相当于value需要用户选择的标签,需要自己加value值,作为给后端传数据的value
如果给用户输入的标签加value值,就类似于直接加了默认值
-
flask框架
后端框架
-
CSS
/*注释*/
由于前端代码比较多,所以一般会用注释来帮助维护代码语法结构:选择器{属性:值;}
-
CSS选择器
emmt插件:
p# d1 .ci
快捷键输入一个id为d1,类为c1的p标签基本选择器
- id选择器井号 #
- 类选择器点 .
- 标签选择器 标签名
- 通用选择器 *
组合选择器
我们将前端标签的嵌套定义为父亲,儿子,后代,兄弟等
-
后代选择器:拿到内部所有的标签
div p {} 只要div内部的p都拿到
-
儿子选择器:拿到内部第一层的p
div>p {} div内部第一层的p
-
毗邻选择器:拿到紧挨着的下一个
div+p {}
-
弟弟选择器:同级别下所有的p
div~p {} 同级别下所有的p
属性选择器
- [属性名] {} :含有属性名的标签
- [属性名=属性值] {}:含有属性名,属性名是属性值的所有标签
- input[属性名=属性值] {}:含有属性名,属性名是属性值的所有input标签
-
标签也可以有自定义的属性并且支持多个
今日内容
- 分组与嵌套
- 伪类选择器
- 伪元素选择器
- 选择器优先级
- CSS属性相关,操作标签样式
分组与嵌套
想要给多个标签添加一样的样式的方法
在CSS中用逗号分割开(空格表示后代,逗号表示并列),不同的选择器可以相互混用
/*在CSS中用逗号分割开并列关系*/
div,p,span {
color:yellow;
}
#d1,.c1,span {
color:red;
}
伪类选择器
/*给a标签各个状态设置颜色*/
a:link { /*访问之前的状态*/
color:red;
}
a:hover { /* 鼠标悬浮态*/
color:aqua;
}
a:active { /*激活态*/
color:black;
}
a:visited { /*访问之后的状态*/
color:darkgrey;
}
input:focus { /*输入框获取焦点:鼠标选中*/
background-color:red;
}
重点掌握:hover,focus
伪元素选择器
/*给p标签的第一个字调大变色*/
p:first-letter {
font-size:40px;
color:orange;
}
/*通过css,在p标签的最开始添加内容,这个内容无法选中*/
p:before {
content:'yes!';
color:blue;
}
/*也可以在最后面添加*/
p:before {
content:'no!';
color:blue;
}
/*befor和after多是用来清除浮动带来的问题:父标签他先*/
选择器优先级
-
选择器相同,书写顺序不同,选择的规则:就近原则,谁离标签近就是谁的属性
html加载的顺序是从上往下加载的,所以下面的样式会覆盖掉上面的样式
-
选择器不同,行内选择器 > id > 类 > 标签,总结就是:匹配越精确优先级越高
<p id='d1' class='c1' style='color:blue;'>111</p>
#d1 { color:aqua; } .c1 { color:orange; } p { color:red; }
CSS属性相关
长宽设置
width,height
/*块级标签可以设置长宽,width,height*/
p,div {
background-color: red;
height:200px;
400px;
}
span {
background-color: green;
}
字体属性
font-family设置字体,
p,span {
font-family: AmpleSoundTab,'...';
/*第一个无法使用会用后面的*/
font-size: 24px; /*字体大小*/
font-weight: bolder; /*字体粗细*/
/*inherit 继承父元素的粗细值*/
/*color: #EEEEEE;*/
/*可以直接写颜色英文,或着颜色编号,或着
rgb(255,255,255);*/
rgba(200,1,22,45,0.4) /*第四个参数是颜色的透明度,0~1,数字越大颜色越深*/
}
pycharm提供了取色器,微信截图,qq截图也能取色
文字属性
p {
text-align: center; /*居中*/
text-align: justify; /*两段对齐*/
text-decoration: line-through; /*删除线*/
font-size:16px;
text-indent: 32px; /*缩进32px*/
}
a {
text-decoration: none; /*主要用于a标签去除自带的下划线*/
}
背景属性
#d1 { /*设置颜色*/
height:400px;
200px;
background-color: red;
}
#d2 { /*设置背景图片*/
/* 默认全部铺满,多出的截取*/
background-image: url("封面.jpg");
/*设置不平铺*/
background-repeat:no-repeat;
/*浏览器上不是一个平面的结构,有z轴,z轴越大离用户越近*/
/*可以设计在哪个方向上平铺:repeat-x / repeat-y*/
/* 背景图片默认是在div的(0,0)位置,可以调背景图片在div中的位置*/
background-position: center center;
/* 如果出现了多个属性名前缀是一样的,看可以简写,只写前缀*/
background: red url("封面.jpg") no-repeat center center;
/* 空格隔开,位置可以随便写*/
}
background-attachment: fixed;
边框
p {
background-color: gold;
/*设置整个边框,四边的宽度,类型,颜色*/
border- 2px;
border-style: solid;
border-color: black;
/* 也可以给每一个边设置不同的边框*/
/*top,left,right,bottom*/
border-top- 5px;
border-top-style: dotted;
border-top-color: pink;
}
/* 前缀一样,同样可以简写*/
/* 用边框画一个圆,指定radius,长宽一致就是圆,不一致就是椭圆*/
p{
border: 3px solid red;
100px;
height:100px;
border-radius: 50%;
}
display属性
block,inline,inline-block
<div id='d1'>01</div>
<div id='d2'>02</div>
#d1 {
display: none; /*隐藏标签不展示,并且原来的位置也让出来*/
display: inline; /*将标签设置为行内标签的属性,在一行显示,没法修改长宽*/
display: block; /*将标签设置成块级标签的特点*/
display:inline-block; /*既可以一行显示,又可以设置长宽*/
height: 100px;
100px;
background-color: red;
}
#d2 {
display: none; /*隐藏标签不展示,并且原来的位置也让出来*/
height: 100px;
100px;
background-color: red;
}
display:none; 和 visibility:hidden; 的区别
响应式布局
马上要研究的知识点
盒子模型
以快递盒为例:
- 盒子与盒子之间的距离:标签与标签的距离:margin 外边距
- 盒子的厚度:标签的边框 border
- 盒子里面的物体到盒子之间的距离:内容到边框的距离 padding 内边距
- 物体的大小:内容 content
margin
可以通过调节margin,调标签之间的距离
浏览器会自带8px的margin,内容并不会紧贴着浏览器,所以在写页面的时候会先将body的margin去除
body {
margin: 0;
}
margin写不同个数参数
div{
margin: 10px 20px;
/* 上下10,左右20*/
margin: 10px 20 px 30px;
/* 上10 左右20 下30*/
margin: 10px 20 px 30px 40px;
/* 上10 右20 下30 左40*/
}
两个标签都有margin,则取最大的margin,不会叠加啊
auto 标签水平居中
/*让标签左右居中,竖直方向没有用*/
div {
margin 0 auto;
}
padding
内边距,标签内的元素的布局,
div{
padding: 0;
/* 上下左右无内边距*/
padding: 10px 20px;
/* 上下10,左右20*/
padding: 10px 20 px 30px;
/* 上10 左右20 下30*/
padding: 10px 20 px 30px 40px;
/* 上10 右20 下30 左40*/
}
浮动
float,让元素脱离底层的平面。浮动的元素没有块级一说,设置float之后,本身多大,就要占多大,不会再占一行
只要涉及到布局,一般都用浮动
<div id='d1'></div>
<div id='d2'></div>
body{
margin:0;
padding:0;
}
#d1{
100px;
height: 100px;
background-color: red;
}
#d2{
100px;
height: 100px;
background-color: yellow;
}
块级标签会独占一行,如果想让两个div在一行,可以设置浮动:float:left
#d1{
100px;
height: 100px;
background-color: red;
float: left; /*左浮动,向左*/
}
#d2{
100px;
height: 100px;
background-color: yellow;
float: right; /*右浮动,靠右*/
}
/* 效果:d1在左边,d2在右边。*/
例子:博客页面,左边是固定的,放链接可以跳转,右边是上下可以翻动的文章