绝对定位的布局
- 水平布局
布局公式left + margin-left + border-left + padding-left + width + padding-right + border-right + margin-right + right = 包含块的内容区的宽度
当我们开启了绝对定位后:
水平方向的布局等式就需要添加left 和 right 两个值
此时规则和之前一样只是多添加了两个值:
当发生过度约束(即上面等式不成立):
如果9个值中没有 auto 则自动调整right值以使等式满足
如果有auto,则自动调整auto的值以使等式满足,如果都是aotu调整顺序:宽高>偏移量>外边距
- 可设置auto的值 margin width left right - 因为**left 和 right的值默认是auto**,所以如果不指定left和right则等式不满足时,会自动调整这两个值
垂直方向布局的等式的也必须要满足
top + margin-top/bottom + padding-top/bottom + border-top/bottom + height = 包含块的高度
<div class="box1"> <div class="box2"></div> </div> .box1{ width: 500px; height: 500px; background-color: #bfa; position: relative; } .box2{ width: 100px; height: 100px; background-color: orange; position: absolute; margin: auto; left: 0; right: 0; top: 0; bottom: 0; }
固定定位
固定定位:
将元素的position属性设置为fixed则开启了元素的固定定位
固定定位也是一种绝对定位,所以固定定位的大部分特点都和绝对定位一样
唯一不同的是固定定位永远参照于浏览器的视口进行定位
固定定位的元素不会随网页的滚动条滚动
<div class="box1">1</div> <div class="box4"> 4 <div class="box5"> 5 <div class="box2">2</div> </div> </div> <div class="box3">3</div> body{ font-size: 60px; height: 2000px; } .box1{ width: 200px; height: 200px; background-color: #bfa; } .box2{ width: 200px; height: 200px; background-color: orange; position: fixed; left: 0; top: 0; } .box3{ width: 200px; height: 200px; background-color: yellow; } .box4{ width: 400px; height: 400px; background-color: tomato; } .box5{ width: 300px; height: 300px; background-color: aliceblue; }
粘滞定位
粘滞定位
- 当元素的position属性设置为sticky时则开启了元素的粘滞定位一致,不同的是粘滞定位可以在元素到达某个位置时将其固定
- 不推荐使用,兼容性不高
<!-- 创建导航条的结构 --> <ul class="nav"> <li> <a href="#">HTML/CSS</a> </li> <li> <a href="#">Browser Side</a> </li> <li> <a href="#">Server Side</a> </li> <li> <a href="#">Programming</a> </li> <li> <a href="#">XML</a> </li> <li> <a href="#">Web Building</a> </li> <li> <a href="#">Reference</a> </li> </ul> body{ height: 3000px; } .nav{ width: 1210px; height: 48px; background-color: #E8E7E3; margin:100px auto; position: sticky; top: 10px; } /* 设置nav中li */ .nav li{ float: left; line-height: 48px; } /* 设置a的样式 */ .nav a{ display: block; text-decoration: none; color: #777777; font-size: 18px; padding: 0 39px; } .nav li:last-child a{ padding: 0 42px 0 41px; } /* 设置鼠标移入的效果 */ .nav a:hover{ background-color: #3F3F3F; color: #E8E7E3; }
练习
仿京东
字体与文字
文字字体
字体相关的样式
color 用来设置字体颜色 font-size 字体的大小 和font-size相关的单位 em 相当于当前元素的一个font-size rem 相对于根元素的一个font-size font-family 字体族(字体的格式) 可选值: serif 衬线字体 sans-serif 非衬线字体 monospace 等宽字体 - 指定字体的类别,浏览器会自动使用该类别下的字体 - font-family 可以同时指定多个字体,多个字体间使用,隔开 字体生效时优先使用第一个,第一个无法使用则使用第二个 以此类推 font-family: 'Courier New', Courier, monospace;
使用网络字体
font-face可以将服务器中的字体直接提供给用户去使用
问题:
1.加载速度
2.版权
3.字体格式
@font-face { /* 指定字体的名字 */ font-family:'myfont' ; /* 服务器中字体的路径 */ src: url('./font/ZCOOLKuaiLe-Regular.ttf') format("truetype"); }
图标字体
图标字体(iconfont)
- 在网页中经常需要使用一些图标,可以通过图片来引入图标
但是图片大小本身比较大,并且非常的不灵活 - 所以在使用图标时,我们还可以将图标直接设置为字体,
然后通过font-face的形式来对字体进行引入
这样我们就可以通过使用字体的形式来使用图标
fontawesome 使用步骤
1.下载 https://fontawesome.com/ 2.解压 3.将css和webfonts移动到项目中 4.将all.css引入到网页中 5.使用图标字体 - 直接通过类名来使用图标字体 class="fas fa-bell" class="fab fa-accessible-icon"
通过实体来使用图标字体: &#x+图标的编码;
<i class="fas fa-camera"></i> <span class="fas"></span> <link rel="stylesheet" href="./fa/css/all.css">
阿里图标库 使用步骤
使用帮助:https://www.iconfont.cn/help/detail?spm=a313x.7781069.1998910419.d8cf4382a&helptype=code <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> @font-face { font-family: 'iconfont'; /* project id 1794617 */ src: url('//at.alicdn.com/t/font_1794617_m4rwwizrot.eot'); src: url('//at.alicdn.com/t/font_1794617_m4rwwizrot.eot?#iefix') format('embedded-opentype'), url('//at.alicdn.com/t/font_1794617_m4rwwizrot.woff2') format('woff2'), url('//at.alicdn.com/t/font_1794617_m4rwwizrot.woff') format('woff'), url('//at.alicdn.com/t/font_1794617_m4rwwizrot.ttf') format('truetype'), url('//at.alicdn.com/t/font_1794617_m4rwwizrot.svg#iconfont') format('svg'); } .iconfont{ font-family:"iconfont" !important; font-size:16px;font-style:normal; -webkit-font-smoothing: antialiased; -webkit-text-stroke-width: 0.2px; -moz-osx-font-smoothing: grayscale;} </style> </head> <body> <i class="iconfont"></i> <i class="iconfont"></i> </body> </html>
图标字体库
- font awesome:https://fontawesome.com/
- 阿里巴巴矢量图标库:https://www.iconfont.cn/
行高
行高(line height)
- 行高指的是文字占有的实际高度
- 通过
line-height
来设置行高
行高可以直接指定一个大小(px em),也可以直接为行高设置一个整数
可以通过line-h - 如果是一个整数的话,行高将会是字体大小的指定的倍数
行高经常还用来设置文字的行间距
行间距 = 行高 - 字体大小
字体框 - 字体框就是字体存在的格子,设置font-size实际上就是在设置字体框的高度 行高会在字体框的上下平均分配
可以将行高设置为和高度一样的值,使单行文字在一个元素中垂直居中 line-height: 200px;
div{ height: 100px; border: 1px red solid; line-height: 100px; } <div class="box1">漳卅的那个散发的zhgnasdngaa</div> <div class="box1">漳卅的那个散发的zhgnasdngaa</div>
字体简写属性
如果使用简写属性,除设置的属性外所有字体属性均重置为默认值
div{ border: 1px red solid; /* font 可以设置字体相关的所有属性 语法: font: 字体大小/行高 字体族 行高 可以省略不写 如果不写使用默认值 */ /* font-size: 50px; font-family: 'Times New Roman', Times, serif; */ font-weight: bold; /* font: 50px/2 微软雅黑, 'Times New Roman', Times, serif; */ /* font: normal normal 50px/2 微软雅黑, 'Times New Roman', Times, serif; */ font: bold italic 50px/2 微软雅黑, 'Times New Roman', Times, serif; /* font:50px 'Times New Roman', Times, serif; line-height: 2; */ /* font-size: 50px; */ }
文字常用属性
font-weight自重
- normal 默认值 不加粗
- bold 加粗
- 100-900 九个级别(没什么用)
font-weight: bold;
font-style 字体风格
- normal 正常的
- italic 斜体
font-style: italic;
text-align 文本对齐方式
- left 左侧对齐
- right 右对齐
- center 居中对齐
- justify 两端对齐
text-align: justify;
vertical-align 元素垂直对齐方式
- baseline 默认值 基线对齐
- top 顶部对齐
- bottom 底部对齐
- middle 居中对齐
vertical-align:baseline;
text-decoration 设置文本修饰
- none 什么都没有
- underline 下划线
- line-through 删除线
- overline 上划线
text-decoration: overline;
white-space 设置网页如何处理空白
- normal 正常
- nowrap 不换行
- pre 保留空白
white-space: nowrap;