CSS定位(position)
定位概述
- 定位(position)是一种更加高级的布局手段
- 通过定位可以将元素摆放到页面的任意位置
- 使用position属性来设置定位
- 可选值
- static 默认值,元素是静止的则没有开启定位
- relative 开启元素的相对定位
- absolute 开启元素的绝对定位
- fixed 开启元素的固定定位
- sticky 开启元素的粘滞定位</font>
- 可选值
相对定位(relative position)
- 当元素的position属性设置值为relative则开启相对定位
- 相对定位的特点:
- 元素开启相对定位以后,如果不设置偏移量元素,则不会发生任何变化
- 相对定位是参照于元素在文档流中的位置进行定位的
- 相对定位会提升元素的层级
- 相对定位不会使元素脱离文档流(即不会改变元素性质)
- 偏移量(offset)
- 当元素开启了定位以后,可以通过偏移量来设置元素的位置
- 可选值:
- top
- 定位元素和定位位置上边的距离
- top值越大,定位元素越向下移动
- bottom
- 定位元素和定位位置下边的距离
- 定位元素垂直方向的位置由top和bottom两个属性来控制
- 通常情况下我们只会使用其一
- bottom值越大,定位元素越向上移动
- left
- 定位元素和定位位置的左侧距离
- left值越大,定位元素越向右移动
- right
- 定位元素和定位位置的右侧距离
- right值越大,定位元素越向左移动
- 定位元素水平方向的位置由left和right两个属性来控制
- 通常情况下我们只会选择其一
- top
绝对定位(absolute position)
- 当元素的position属性的值设置为absolute时,则开启了元素的绝对定位
- 绝对定位的特点
- 开启绝对定位后,如果不设置偏移量,元素不会发生任何变化
- 开启绝对定位后,元素会从文档流中脱离
- 绝对定位会改变元素的性质,行内变成块,块的宽度被内容撑开
- 绝对定位会使元素提升一个层级
- 绝对定位元素是相当于其包含块进行定位的
- 包含块(containing block)
- 正常情况下:
- 包含块就是高于当前元素最近的祖先块元素
- 绝对定位的包含块:
- 包含块就是离它最近的开启了定位的祖先元素
- 如果所有祖先元素都没有开启定位则根元素就是它的包含块(根元素—html,也称初始包含块)
- 包含块就是离它最近的开启了定位的祖先元素
- 正常情况下:
固定定位
- 当元素的position属性设置为fixed时,则开启了元素的固定定位
- 固定定位也是一种特殊的绝对定位,因此固定定位的大部分特点和绝对定位一样
- 唯一不同的是固定定位永远参照于浏览器的视口进行定位
粘滞定位
- 当元素的position属性设置为sticky是,则开启了元素的粘滞定位
- 粘滞定位与相对定位类似</font>
元素的层级
对于开启了定位元素,可以通过position属性来指定元素的层级
- Z-index需要一个整数作为参数,值越大元素层级越高
- 元素的层级越高越优先显示
如果元素的层级一样,则优先显示靠下的元素
- 祖先的元素的层级再高也不会盖住后代元素
字体
字体样式
- color 用来设置字体颜色
- font-size 字体的大小
- em 相当于当前元素的一个font-size
- rem 相当于根元素的一个font-size
- font-family字体格式
- 可选值:
- serif 衬线字体
- sans-serif 非衬线字体
- monospace 等宽字体
- 定义:
font-family
可以同时指定多个字体,多个字体键使用,
隔开 - 字体生效时优先使用第一个,第一个无法使用则使用第二个 以此类推
<style> p{ color: red; font-size: medium; font-family: 'Courier New', Courier, monospace; } </style>
- 可选值:
当客户的电脑上没有指定的字体时,我们选择的字体无法在客户机上使用,此时可以通过
@font-face
让客户在服务器上把字体下载下来- 关于
@font-face
的使用- 代码示例
<style> @font-face { /* 自定义字体名称 */ font-family: 'my-font-face'; /* 资源的网站 */ src: url('my-font-face'); } </style>
- 注意:使用```@font-face```可能会出现的版权的问题,或者服务器资源堵塞的问题,导致字体无法使用,因此该方法请谨慎使用
- 代码示例
- 关于
图标字体
简介
我们在制作网页的时候,可能会用到大量的图片,他们可能很小,例如:
- 此时我们可以使用图标字体来把图片做成字体,
- 只需要导入字体即可使用这些小的图片
- 然后通过font-face来对字体进行引用
- 推荐一个字体网站:http://www.fontawesome.com.cn/
- 使用该网站下载的字体文件需要进行解压,然后把文件移入项目中
- 注意:该文件必须和css文件放在同一个文件夹中,否则会出现路径问题,无法引入
- 最后在引入
all.css
<link rel="stylesheet" href="./fa/css/all.css">
- 直接通过类名使用图标字体
<i class="fa fa-car"></i> <i class="fa fa-car" style="font-size:48px;"></i> <i class="fa fa-car" style="font-size:60px;color:red;"></i>
- 详细的font awesome教程尽在https://www.runoob.com/font-awesome/fontawesome-tutorial.html
方法二:
- 可以通过伪元素对图标字体进行插入
- 首先使用
before
或after
伪元素标签来选中需要的图标字体 - 然后在
content
中输入对应图标字体的编码 - 设置字体样式
font-family
和font-weight
即可
- 首先使用
- 可以通过伪元素对图标字体进行插入
方法三:
- 通过实体来使用图标字体
- 在实体中加入
&#
+图标字体编码
- 在实体中加入
- 通过实体来使用图标字体
关于图标字体库——-iconfont
- 可以使用阿里的字体库:https://www.iconfont.cn/
- 不过可能存在版权问题,商用的项目不建议使用
- 在使用该网站的图标字体时
- 如果使用彩色的图标字体,就直接使用图片的格式进行下载
- 如果是黑白的图标字体,则直接添加到项目中打包下载
- 也可以使用font awesome :http://www.fontawesome.com.cn/
- 不过该网站有的需要付费使用,免费的太过拉胯
- 可以使用阿里的字体库:https://www.iconfont.cn/
具体使用的代码展示
<style> i.iconfont { font-size: 100px; } p::before { content: '\e686'; font-family: "iconfont"; font-size: 150px; } </style> <body> <p> 住在山里真不错 </p> <i class="fa fa-car"></i> <i class="fa fa-car" style="font-size:48px;"></i> <i class="fa fa-car" style="font-size:60px;color:red;"></i> <!-- 使用阿里图标字体库方法一:通过实体使用编码 --> <i class="iconfont"></i> <i class="iconfont"></i> <i class="iconfont"></i> <i class="iconfont"></i> <i class="iconfont"></i> <!-- 也可以使用类名来使用 --> <i class="iconfont icon-biaozhi1"></i> <!-- 也可以使用伪元素对图标字体进行插入 --> <p> 传奇永不谢幕 </p> </body>
行高(line height)
- 定义:
- 行高指文字占用页面的实际高度
- 属性值:
line-height
- 可以直接设置一个大小(单位为px或em)
- 也可以设置一个整数(1===100px,即单倍行高,与word中的行距相类似)
字体距
字体框就是字体存在的格子,可以设置大小和边框的宽度
通过
font-size
设置大小
```htmldiv{ font-size: 50px; line-height: 200px;
/* 边框设置 */
border: 1px red solid;
}
</style>
```
字体的简写属性
<style>
div {
line-height: 2;
/*
font 可以设置字体相关的所有属性(字体的简写属性)
标准语法:
font: 字体大小 /行高 字体族
该简写中的行高可以省略不写,但不代表没有设置
而是会以默认值使用(并且覆盖上面设置的行高line-height)
*/
border: 1px red solid;
/* font-family: Verdana, Geneva, Tahoma, sans-serif; */
font: 50px/3 Verdana, Geneva, Tahoma, sans-serif;
}
</style>
<body>
<div>
三年前在南京我亻主的地方有一道后门,每晚我打开后门,便看见一个静寂的夜。下面是一片菜
园,上面是星群密布的蓝天。星光在我们的肉眼里虽然微小,然而它亻吏我们觉得光明无处不在。那
时候我正在读一些关于天文学的书,也认得一些星星,好像它们是我的朋友,它们常常在和我谈话
</div>
</body>
字体的水平对齐和垂直对齐
Text-align
文本的水平对齐- 可选值:
- left:左端对齐
- right:右端对齐
- center:居中对齐
- justify:两端对齐
- 可选值:
vertical-align
文本的垂直对齐- 可选值:
- baseline 默认值 基线对齐
- top 顶部对齐
- bottom 底部对齐
- middle 居中对齐
- 可选值:
代码演示:
```htmldiv{ border: 1px red solid; width: 800px; line-height: 5; text-align: center; } span{ border: 1px red solid; font-size: 20px; vertical-align: baseline;
}
</style>
<body>
<div>
三年前在南京我亻主的地方有一道后门,每晚我打开后门,便看见一个静寂的夜。下面是一片菜
园,上面是星群密布的蓝天。星光在我们的肉眼里虽然微小,然而它亻吏我们觉得光明无处不在。那
时候我正在读一些关于天文学的书,也认得一些星星,好像它们是我的朋友,它们常常在和我谈话
</div>
<span>住在山里真不错</span>
</body>
```
- 效果:

其他的文本样式
文本修饰
text-decoration
设置文本修饰- 可选值:
- none 什么都没有
- underline 下划线
- line- through 删除线
- overline 上划线
```html
- 可选值: