初识CSS
1. 三种导入方式
1.1 行内样式
1 | <h1 style="color: red">Title</h1> |
1.2 内部(HTML文件中)样式
1 | <style> |
# 当存在多种时,最靠近代码的style的会被执行,其他的会被覆盖
1.3 外部(CSS文件中)样式
使用 link
标签引入外部样式文件,需要注意以下几点。
- link 标签放在
head
标签内部 - 样式文件要以
.css
为扩展名 - 一个页面往往需要引入多个样式文件
属性 | 说明 |
---|---|
rel | 定义当前文档与被链接文档之间的关系 |
href | 外部样式文件 |
type | 文档类型 |
1 | <link rel="stylesheet" href="houdunren.css" type="text/css"> |
2. 三种基本选择器
2.1 基本选择器
标签选择器:选择页面上所有的这个标签
使用
*
可为所有元素设置样式。1
2
3
4
5
6
7
8
9
10*{
xx: xx;
}
h1 or p or h2{
xx: xx;
}
/*同时设置多个元素组合*/
h1,h2 {
color: red;
}类选择器:.class的名称,根据相同的class可以复用
1
2
3
4
5<h1 class="nh"></h1>
.nh{
corlor: red;
}id选择器:#id的名称,全局唯一
1
2
3
4
5<h1 id="nh"></h1>
#nh{
corlor: red;
}ID选择器 > 类选择器 > 标签选择器
层次选择器:元素里面的元素
后代选择器
1
2body p{}
/*body里面所有的p标签*/子选择器
1
2body>p{}
/*与body差一个缩进的p标签*/亲弟弟选择器,只有一个,而且是后面的
1
2.class + p{}
/*在.class后面的那个p*/通用选择器,可以是多个
1
2.class~p{}
/*在.class后面所有的p*/
2.2 结构伪类选择器
不用class & id的情况下,结构选择
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22<body>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<ul>
<li>li1</li>
<li>li2</li>
<li>li3</li>
</ul>
</body>
<style>
ul li:first-child{}
/*ul里的第一个li元素*/
ul li:last-child{}
/*ul里的最后一个li元素*/
p:nth-child(1){}
/*定位到p的父元素,选择当前的父元素的第一个元素*/
/*前提是这个父元素的第一个元素必须是p元素,否则无效*/
p:nth-of-type(1){}
/*选择p的父元素下的第一个p元素,不会因为被其他元素隔开而被影响*/
</style>伪类
状态 示例 说明 :link a:link 选择所有未被访问的链接 :visited a:visited 选择所有已被访问的链接 :hover a:hover 鼠标移动到元素上时 :active a:active 点击正在发生时 1
2
3
4
5
6
7
8
9
10
11/*鼠标悬浮的状态*/
a:hover{
background: yellow;
}
<a href="">变色</a>
/*鼠标按住不放的状态*/
a:active{
background: yellow;
}
<a href="">变色</a>
/*以及a:link未访问的链接;a:visited已访问的链接*/格式 示例 说明 ::first-letter p:first-letter 选择每个元素的首字母 ::first-line p:first-line 选择每个元素的首行 ::before p:before 在每个元素的内容之前插入内容 ::after p:after 在每个元素的内容之后插入内容 1
2
3
4
5
6
7
8
9
10
11
12
13
14span::before {
content: '⇰';
color: red;
}
span::after {
content: '⟲';
color: green;
}
p::first-letter {
font-size: 30px;
}
p::first-line {
font-size: 20px;
}
2.3 属性选择器
优势:匹配属性,可以用正则表达式,然后将符合描述的全部匹配到
1 | /*比如p属性里面有一堆a属性*/ |
3. 美化网页元素
3.1 为什么要美化网页
- 有效传递页面信息
- 凸显主题
- 提高用户体验
span标签:重点要突出的字,用span包起来
3.2 字体样式
1 | p{ |
可以使用 font
一次将字符样式定义,但要注意必须存在以下几点:
- 必须有字体规则
- 必须有字符大小规则
1 | span { |
上例中的 20px 为字体大小,1.5为1.5倍行高定义
3.3 文本样式
颜色
1
2
3
4
5
6
7
8p{
color: red;
color: #000000;
color: rgb(255, 23,43);
color: rgba(23,56,245,0.9);
}
/*颜色可以直接单词,也可以RGB(#000000-#FFFFFF)或者rgb(0,0,0)或者rgba(0,0,0,0.5)*/
/*rgba的a是用来调整透明度的,0-1*/对齐方式
1
2
3
4span{
text-align: center;
/*或者left,right*/
}首行缩进
1
2
3
4span{
text-indent: 2em;
/*em表示字符,px表示像素*/
}行高
1
2
3
4
5
6span{
background: cyan;
height: 100px;
line-height: 100px;
/*如果线高和高一样的话就是居中了,有点类似行距,height是这一行占多高*/
}装饰
1
2
3
4
5
6
7span{
text-decoration: underline;
text-decoration: line-through;
text-decoration: overline;
/*分别是下划线,中划线,上划线*/
/*decoration=none的话就是没有任何线,可以用来去掉超链接的下划线*/
}文本图片对齐
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
<meta charset="utf-8">
<title>文档标题</title>
<style>
img, span{
/*middle, bottom, top*/
vertical-align: middle;
}
</style>
</head>
<body>
<p>
<img src="E:/PY/单词/Save.ico" alt="">
<span>你好</span>
</p>
</body>
</html>文字阴影
1
2
3
4#shadow{
text-shadow: black 5px 10px 3px;
/*阴影的颜色,水平偏移,竖直偏移,阴影半径*/
}
3.4 超链接伪类
结合上面的小知识,超链接伪类界面
1 |
|
3.5 列表样式优化
做一个导航栏例子,具体如何优化详见代码
1 |
|
1 | #nav{ |
3.6 背景
1 |
|
1 | div{ |
选项 | 说明 |
---|---|
scroll | 背景滚动 |
fixed | 背景固定 |
1 | background-attachment: fixed; |
图片摆放位置
1
2
3background-position: 100px 100px;
/*也支持使用负值*/
background-position: -200px 100px;
==可以使用一条指令设置背景==
1 | background: red url(xxx.png) no-repeat right 50% fixed; |
3.7 渐变
1 | background-image: linear-gradient(to top, #fbc2eb 0%, #a6c1ee 100%); |
4. 盒子界面
4.1 什么是盒子模型
margin:外边距
padding:内边距
border:边框
具体可查看浏览器测试
4.2 边框
body里面总会有一些默认值,所以要自行初始化
1
2
3
4
5
6/*初始化一些设定*/
body{
margin: 0;
padding: 0;
text-decoration: none;
}
border用法:粗细,样式,颜色
border: 3px solid red
边框设计
类型 | 描述 |
---|---|
none | 定义无边框。 |
dotted | 定义点状边框。在大多数浏览器中呈现为实线。 |
dashed | 定义虚线。在大多数浏览器中呈现为实线。 |
solid | 定义实线。 |
double | 定义双线。双线的宽度等于 border-width 的值。 |
groove | 定义 3D 凹槽边框。其效果取决于 border-color 的值。 |
ridge | 定义 3D 垄状边框。其效果取决于 border-color 的值。 |
inset | 定义 3D inset 边框。其效果取决于 border-color 的值。 |
outset | 定义 3D outset 边框。其效果取决于 border-color 的值。 |
4.3 内外边距
1 | #box{ |
注:盒子的计算方式是margin+border+padding+内容宽度
4.4 圆角边框和阴影
==border-radius==
==box-shadow==
1 | div{ |
小结:很多的前端后端无论是登陆界面还是门面啥的都不是原创的,因为很累,做出来还不一定好看。白嫖真香,稍加修改即可
5. 浮动
5.1. 引入
标准文档流(由上至下顺序排列)
块级元素:独占一行
h1~h6 p div list....
行内元素:不独占一行
span a img....
行内元素可以被包在块级元素中,反之不行
==float==:left or right 左右浮动
5.2. diplay
选项 | 说明 |
---|---|
none | 隐藏元素 |
block | 显示为块元素 |
inline | 显示为行元素,不能设置宽/高 |
inline-block | 行级块元素,允许设置宽/高 |
1 | div{ |
5.3. overflow
选项 | 说明 |
---|---|
hidden | 溢出内容隐藏 |
scroll | 显示滚动条(有些浏览器会一直显示,有些在滚动时显示) |
auto | 根据内容自动处理滚动条 |
5.4 父级边框塌陷
1 | a{ |
增加增加父级元素高度(不建议)
添加一个新的div(代码)
1
2
3
4
5
6
7
8
9<div class='oc'></div>
<style>
.oc{
clear: both;
margin: 0;
padding: 0;
}
</style>父级元素增加 overflow:hidden;
父类添加一个after伪类(推荐)
1
2
3
4
5#father:after{
content: '';
display: block;
clear: both;
}
5.5. 尺寸
选项 | 说明 |
---|---|
width | 宽度 |
height | 高度 |
min-width | 最小宽度 |
min-height | 最小高度 |
max-width | 最大宽度 |
max-height | 最大高度 |
fill-available | 撑满可用的空间 |
fit-content | 根据内容适应尺寸 |
6. 定位
- 课前纯手写一个小定位,九宫格的div,然后排列……
1 |
|
1 | div{ |
6.1 相对定位
对自己原来的位置进行偏移(依然在标准文档流中,原来的位置会被保留下来,只是看不到了)
position: relative;
1
2
3
4#{
position: relative;
top: -100px; /*top,bottom,right,left都行;往哪儿移动就写对应的方向,然后像素加个‘-’号*/
}
6.2 绝对定位
定位条件
- 没有父级元素定位的前提下,相对于浏览器定位(如果需要父级元素定位,就给父级元素加一个position: relative;)
- 有父级元素存在定位,就相对父级元素定位
- 如果是浏览器定位的话,只能定位到第一界面的屏幕范围内
position: absolute;
1
2
3
4
5#{
position: absolute;
right: 30px; /*距离上级框架(父级或者浏览器)最右侧30px*/
/*移动范围不会超出父级元素*/
}
6.3 固定定位
- 比如一些网站的导航栏是一直不变的,就是固定定位
- position: fixed;
6.4 z-index
相当于ppt里面的多层图片,哪个置顶,哪个置后一样
置于第几层就写几层,比如
==z-index: 77; opacity: 0.5;==
1
2
3
4
5
6
7#{
z-index: 77; /*置于最上层通常用77*/
}
#{
backgournd: black;
opacity: 0.5; /*透明了*/
}