CSS在html中的位置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#此处为CSS内容
</style>
</head>
<body>
</body>
</html>
选择器
#id //id选择器
.class //类选择器
伪类选择器
当鼠标对其修饰的标签进行操作后后,会相应地改变其颜色
<style>
/*初始状态*/
id:link{
color:yellow;
}
/*访问之后*/
id:visited{
……
}
/*鼠标移上去后*/
id:hover{
...
}
/*点击激活*/
id:active{
...
}
</style>
顺序不可以改变
选择器权重
id>class>元素
文本属性
字体本身属性
font-size:16px //文本字体大小,默认16px
font-family //字体
字体可以同时设置多个
font-family: 楷书,宋体,仿宋;
如果第一个不支持,就会显示第二个,如果第二个不支持,就会显示默认字体微软雅黑
文本装饰
颜色
color //字体颜色
//通过英文单词设置
.test{
color:red;
}
//通过rgb值来设置
.text2{
color:rgb(0,255,255);
}
//十六进制写法
//正常人不会用
.text3{
color:#ffffff//白色
//每两位未一组 ff ff ff
}
//或者直接通过VScode工具直接量取颜色
粗细
font-wright:100; //加粗 取值为100-900
//100 细体 ,400正常, 700加粗, 900更粗体
font-weight:lighter; //细
font-weight:normal; //普通
font-weight:bold; //粗体
font-weight:bolder; //更粗
倾斜
font-style:italic; //斜体字
font-style:oblique; //倾斜的文字,强调作用
font-style:notmal; //常规显示
文本位置
text-align//用来指示文本位置
text-align:center//中间显示
text-align:right//右边
text-align:left//左边
text-align:justify//两端对齐,最大限度地利用文本空间(多行文本使用)
<div>
weight: 500px;
height: 100px;
line-height:100px;//将其设置为与垂直方向大小一直
text-align:center;
</div>
文本间距
letter-spacing:10px #字间距 h e l l o w o r l d
word-spacing:10px#词间距 hello world
#以上两个值默认是0px
首行缩进
text-indent:32px #默认字体大小下,正好空出两个汉字
text-indent:2em #字体两倍大小的空格
文本修饰
text-decoration: underline //下划线
text-decoration: line-through //删除线
text-decoration: overline //上划线
text-decoration: none //空白修饰
注意:四个属性无法分行声明多个,最后一行总是会覆盖前面的修饰
若要一次性设置多个属性,如下
text-decoration: line-through underline overline;
检索大小写
注意: 更适合英文
text-transform: capitalize #首字母全部大写
text-transform: lowercase #全部小写
text-uppercase: uppercase #全部大写
复合写法
font:intalic bold 20px/1em 宋体
顺序:修饰 字号/行高 字体
列表属性
列表修饰
list-style-type: disc #实心圆
list-style-type: circle #空心圆
list-style-type: square 实心正方形
list-style-type: none #不使用自带图形内容
list-style-image: url(path/number.jpg)
#一般通过id选择器逐个设置
自定义列表效果如下:
列表边框
boder: 1px solid red;
list-style-position: outside;
boder: 1px solid red;
list-style-position: inside;
复合选择
list-style: none url(img/1.jpg) inside;
三者的位置可以随意互换
背景属性
纯色背景
background-color: red;
#还可以通过十六进制,rgb等方法设置,先前已经有案例了
background-color: rgba(0,0,0,0.5); #0~1 逐渐不透明
图片背景
图片属性
图片默认是平铺效果
weight:100px;
height:100px;
background-image: url(path.jpg);#默认是图片平铺效果
#平铺:如果图片没有div标签的空间大,则会复制出多份显示
#如果图片太大,则会裁剪后显示
#方法见下
background-repeat: repeat;#默认值
background-repeat: repeat-x;#横向平铺
background-repeat: repeat-y;纵向平铺
background-repeat: no-repeat;#不平铺
background-position: 30px 30px ;#笛卡尔坐标系第四象限中坐标的绝对值
background-position: 10% 10&;#取整块区域的百分数
background-position: center center;#通过英文单词来设置
图片大小
background-size: 400px 400px
如果图片和背景区域一样大,则会出现如下情况图片变形,强行被放大
background-size: 100% 100%
此处的百分比为图片所占背景区域的比例
如果背景框与图片比例不协调或背景区域太大,则图片仍然会出现如上的变形失真
background-size: cover
将图片扩展至足够大,使其能够完全覆盖背景区域,如下但是可能导致一部分无法显示在背景区域中
background-size:contain
把图片扩大到最大尺寸,使其宽度和高度完全适应内容区
可能铺不满背景区域,有留白,如下
背景的固定和滚动
当背景区域太长时,会出现如下情况
可见,其右边出现了滑动条
但是在滑动该条时,图片仍然会保持在原来的位置,不会随着屏幕的移动而移动,使得容易消失在视野中
background-attachment: scroll; #默认状态,图片位置固定
background-attachment: fixed;
此时图片会保持在屏幕的那个位置,无论怎么滑动,始终在用户的视野中
复合写法
background:yellow url(...) no-repeat center fixed
以上属性的顺序可以调换(除center top 这样的位置属性外,两个值要紧挨着)
如果一次性没有设置完,前面有分开设置的属性,那么会默认那一部分未设置完的属性为没有设置,覆盖那些分开设置的属性
注意:background-size 不能复合设置,要单独使用
浮动属性
普通浮动
浮动属性的意义就在于让本身独占一行的div标签能够与相互平起平坐
设置浮动属性前
现在,对红色div添加如下属性
float: left
使用此代码后,红色的div相当于漂浮起来了(从3维层面上讲),绿色div就空位补齐到了红色的下方,呈如下情况
为了更清晰,现在将绿色放大
注意:如果设置文字,文字不会被挡住,会见缝插针地显示
但如果给以上三个div全都设置成float:left属性,则会出现一下情况
如果n多个标签全都设置成了浮动,一行排不满,则会排到第二行,如下
如果将红色设置成右浮动,即
float:right;
则会发生如下情况
越先设置浮动的就越先排列
清浮动
清浮动的含义是 “清理某一元素对周围元素的浮动影响”,即设置清浮动的那个元素不会影响它周围未浮动的元素
活着用后面要学的bfc,让浮动元素计算高度
overflow:hidden
该代码相当于 clear:both;
盒子模型
内边距
padding: 30px;
四面都空出一段距离
但如果想要将上下与左右的内边距设置成不一样的值,需要两个参数
padding: 30px 40px; #30px是上下 40px是左右
或三个参数
padding:10px 20px 30px; # 上 左右 下
最多能够设置四个参数
padding:10px 20px 30px 40px; 上 右 下 左
也可以指定方向设置
padding-left:
padding-right:
padding-bottom:
padding-top
注意:padding值不得设置为负数
边框
基础
border: 10px solid red; #大小 样式 颜色
solid 实线
double 双线
dashed 虚线
dotted 点虚线
注意:盒子内部模型会蔓延到边框上(特别是当边框为虚线时)
边框也可以指定特定方向设置
border-left: 2px solid red;
border-right
border-top
border-bottom
可以将这几个属性分开设置
border-weith:10px;
border-color:red;
border-style: solid;
同时这三个属性可以一次性设置四个方向
border-width:10px 20px 30px 40px
border-color:yellow blue black red
border-style:solid double dashed dotted
遵循顺序: 上 右 下 左
外边距
属性
margin: 50px
以上代码意味着这个盒子的四个方向都与其他盒子相隔50个像素
margin:50px 60px 20px
margin:50px 40px 30px 20px
也可以单独设置属性的方向
margin-top:10px
...
注:
1.背景色不会蔓延到外边距
2.margin支持负值
此时盒子会往反方向移动
在屏幕水平居中
margin:0 auto; #上下为0,左右自动
注意:在垂直方向上无法用此方法居中
外边距特性
外边距的合并
垂直方向,外边距取最大值
若同时写了两个盒子,一个设置了下外边距,在上面;一个设置了上外边距,在上一个盒子的下方。那么此时会将中间相交部分的外边距取最大值显示。
水平方向,两个盒子的外边距会一起显示
若此时存在水平两个盒子,左边的盒子向右的外边距为20px;右边的盒子向左的外边距为10px;那么总共的边距为30px,并显示。
父子间的边距兼容
如果两个盒子具有父子关系,子盒子所加的外边距属性会被父盒子吞并,并且作为父盒子的属性显示,如下
可以通过对父盒子设置内边距来实现想要达到的效果
padding-top: 100px;
或者通过给父盒子设置边框的方法:
border:1px solid transparent; #透明边框
也可以让子盒子或父盒子浮动起来解决:
float: left;
也能用后面要学的BFC
overflow:hidden
溢出属性
overflow: visiable; #默认属性,过多的文本会被挤出
overflow: hidden; #溢出隐藏,文本会被裁切
overflow: scroll; #会创建一个滚动条(无论文本是否溢出)
overflow: auto; #自动适配,文本过大则会自动创建滚动条
overflow: inherit; #继承父元素的效果
overflow-x:
overflow-y:
white-space:normal;#默认
溢出属性的应用
white-space:nowrap;
overflow:hidden;
text-overflow: sllipsis;
文本中溢出部分会出现小点
元素
注意:千万不能在
标签里嵌套任何块级元素,否则块级元素会自动跳出来
可以通过元素互相转换的方法来让一个标签同时具有块元素与行内元素特征
diaplay:inline;#让块元素强行变成行内元素
display:inline-block;#将行内元素转换变成块元素
定位
层级
z-index:10;
z-index越大,标签越靠上显示
在盒子中水平居中
子盒子绝对定位,父盒子相对定位(子绝父相)
.father{
width: 500px;
height: 500px;
background:yellow;
margin:0 auto;
position: relative;
}
.son{
width: 200px;
height: 200px;
background:red;
position:avsolute;
top:50%;
left:50%
margin-top:-100px;
margin-left:-100px;
}
浮动与定位的区别
浮动会挤压文字
定位会覆盖文字
锚点
精灵图
background-position: x y;
注意:x与y使用负值
定位一张综合图中的元素显示
从图片的左上角定位
宽高自适应
/*宽度自适应:与浏览器宽度保持一致*/
weight:auto; 或 不设置宽度
/*高度自适应:*/
默认:根据所填充的文本内容自动扩张
//最小高度:保持最小100px的高度,超过则撑开
min-height:100px
//最大高度:保持最大100px的高度,超过则不显示
max-height:100px
//以此类推,还有最小宽度和最大宽度
伪元素
div::first-lerrer{
background:blue;
}
#id::first-line{
......
}
.class::before{
content:"aaa"; //非元素,无法在网页中被选中
}
div::after{
}
隐藏
display:none;//不占位隐藏
display:hidden;//占位隐藏
窗口自适应
html,body{
height: 100%
}
这样设置之后便可以进行以下对其它标签的设置,使之直接占满一整个窗口
.class{
height:100%;//这种属性在未经以上设置时是无效的
}
两栏布局
这种左侧栏宽度不变,右侧栏宽度自适应的,即为两栏布局。
通常用于后台管理系统。
width: calc(100% - 200px);
//calc可以帮助完成数学计算
//200px 为左侧div宽度
html交互功能
选项框
单选框
<div>
<input type="radio" name="aaa">选项内容1
<input type="radio" name="aaa">选项内容2
</div>
如果不加 name 属性,则不能做到单选的效果
以上方法仅可以点击选项框来选中,点击文字没有反应
如果想要点击文字也有反应,则要改为如下代码
<div>
<input type="radio" name="aaa" id="1">
<label for="1">选项内容1</label>
<input type="radio" name="aaa" id="2">
<label for="1">选项内容2</label>
</div>
如果要在一开始就默认选中某一个选项,则做以下修改
<div>
<input type="radio" name="aaa" id="1" checked="checked">//有该属性的则为默认选中的选项
<label for="1">选项内容1</label>
<input type="radio" name="aaa" id="2">
<label for="1">选项内容2</label>
</div>
可以缩写成这样
<input type="radio" name="aaa" id="1" checked>
复选框
<input type="checkbox" name="aaa" id="1" checked>
<label for="1">选项内容1</label>
<input type="checkbox" name="aaa" id="2">
<label for="2">选项内容2</label>
<input type="checkbox" name="aaa" id="3" checked>
<label for="3">选项内容2</label>
除了type中的属性为checkbox以外,其它都具有和单选框一样的效果,但其可以同时预框选多个选项。
上传文件
<input type="file" name="" id="">
<input type="image">
//用来替代提交按钮
<input type="hidden" name="" id="" value="带给后端的信息">
<button disabled="disabled">
<input type="radio" disabled>
<input type="text" readonly>//只读
下拉菜单
<select size="4"> //size表示所显示的选项数量
<option>a</option>//选项
<option>b</option>
<option>c</option>
<option>d</option>
</select>
<select size="4" multiple> //multiple 表示按住ctrl+shift可以多选
<option value="a">a</option> //value值为传回后端的内容
<option selected>b</option> //selected表示默认选择
<option>c</option>
<option>d</option>
</select>
文本域
即一个大型的,可以输入多行文本的文本输入框
<textarea clos="10", rows="20"></textarea>
//textarea输入和显示的列数,rows为行数,由于灵活性太差,不使用,一般使用CSS来调节
textarea{
width: 300px;
height: 300px;
}
<textarea placeholder="预置文本内容"></textarea> //提示作用
<textarea value="预置内容"></textarea> //设置默认内容,直接自动填写在文本域里面
textarea{
resize: vertical; //水平方向上限制,只允许竖直方向改变大小
resize: horizontal; //限制竖直方向
resize: none; //大小永远无法改变
}
注意:写文本域标签的时候如果设置了默认内容,不能随便换行与在标签中添加内容
字段集
<fieldset> //字段集
<legend>性别</legend>> //字段集的缺口
<input type="radio" name="sex">男</input>
<br>
<input type="radio" name="sex">女</input>
</fieldset>>
可以用CSS修饰
fieldset{
border:200px solid blue;
wigth:500px;
height:500px;
}
legend{
border:1px dolid red;
text-align: center;
}
html5
语义化标签
<header>标题</header>
<section>内容</section>
<footer>脚注</footer>
语义化标签无实际效果,其目的是为了方便搜索引擎的爬虫,可以用来代替div标签用
音频标签
<audio src="" controls></audio>
src可以为一个相对相对地址或是超链接
controls意思是出现音频控制栏
还有一个loop属性,可以用来循环播放
autoplay为自动播放(注意:谷歌浏览器会为了用户体验,会在用户非主动的情况下禁止掉自动播放)
muted可以使音频一开始就处于静音状态
视屏标签
<video src="" poster=""></video>
poster可以在播放按钮点击前在视屏位置投放一个海报(封面图片)
可以通过weith和hight调整其大小,但视屏会被等比例缩放
其余各种属性与其效果与音频标签的属性一样
注意:如果同时添加了autoplay与muted属性,谷歌浏览器会自动播放
增强表单input
颜色选择器
<from>
<input type="color" name="color"></input>
</from>
增强型文本框
<input type="email"></input>
<input type="url"></input>
type="tel"
type= "number" min="0" max="10" value="5" step="2"
type="search"
输入限制属性
<input type="email" autofocus></input>
只能聚焦一个,后面若多写了会聚焦遇见的第一个
<input type="email" required></input>
可以同时修饰多个,每次提交如果有一个被修饰的输入框为空则不能提交
<input type="email" multiple></input>
在输入时用逗号隔开则同时返还给后端多个邮箱
<input type="email" pattern="[0-9][A-Z]{3}"></input>
pattern的""中填写正则表达式
滑动效果
<input type="range"></input>
默认为0~100
可以设置范围
<input type="range" min="100" max="200"></input>
每次滑动增加1
可以改滑动增加的数字
<input type="range" min="100" max="200" step="10"></input>
可以设置默认值
<input type="range" min="100" max="200" step="10" value="150"></input>
日期选择
type="date" 日期选择
type="mouth"月份选择
type"week"周数选择
type="datetime-local"精确到时间
下拉文本
<input type="text" list="alist">
<datalist id="alist">
<option value="a"></option>
<option value="b"></option>
<option value="c"></option>
</datalist>