这是我参与「第五届青训营」笔记创作活动的第一天
CSS基础知识
CSS(Cascading Style Sheets)是用来定义页面元素样式,定义网页排版;使用CSS方法有三种,分别为:
1.外链(rel href)
<link rel="stylesheet" href="url">
2.嵌入<style></style>
3.内联(在标签类定义<p style="font-size:16px">)
CSS工作过程
step1解析HTML
step2创建DOM树
step3加载CSS
step4解析CSS
step5添加样式到DOM树
step6展示页面
选择器Selector
- 通配选择器(*{}) 标签选择器 id选择器(唯一) 类选择器 属性选择器 [属性]{} 或者 标签[type=""]
属性选择器例子
<label>用户名:</label>
<input value:"nihao" disabled/> <!--disabled禁用-->
<style>
[disabled]{
background:#eee;
color:#999;
}
</style>
<label>密码:</label>
<input value:"nihao" type="password"/> <!--disabled禁用-->
<style>
input[type="password"]{
color:#999;
}
</style>
- ^=匹配符以#开头 $=以什么结尾
伪类
- 不基于标签和属性定位元素
- 伪类分类:状态伪类 结构性伪类
<a href="http://baidu.com">
Baidu.com
</a>
<style>
a:link {
color: black;
}
a:visited {
color: gray;
}
a:hover {
color: orange;
}
a:active {
color: red;
}
</style>
<li>你好</li>
<li>初见</li>
<li>大家好</li>
<li>拜拜</li>
</ol>
<style>
li {
border-bottom: 1px solid;
padding: 0.5em
}
li:first-child {
color: coral
}
li:last-child {
border-bottom: none;
}
</style>
伪类:通过父级节点的相对位置选中
组合说明
直接组合 AB 满足A且B 后代组合 A B 选中B,A的子孙 亲子组合 A>B 选中B,A的子元素 兄弟选择器 A~B 选中B,A的后边且同级 相邻选择器 A+B 选中B,紧跟A之后
颜色
- RGB 0-255 红,绿,蓝
- HSL 色相0-360 饱和度0-100% 亮度0-100%,hsl(,%,%)
- alpha 不透明度且1为完全不透明度[放置hsl RGB最后一位]
字体
- font-family 设置多个——适应不同设备访问
- 通用字体族(一种字体分类)一般放置在font-family最后
- 如果要预先涉及好字体则使用web fonts
- font-size:关键词 长度 百分数
- font-style italic nromal
- 字重font-weight100-900 加粗 normal bold
- line-height:行高 设置行间距离
- font:斜体 粗细 大小/行高 字体族
- text-align:left center right justify字定位
- spacing:letter-spacing word-spacing字体间距
- text-indent:首行缩进
- text-decoration:underline overline line-through
- white-sapce:控制空白符
-
- normal 合并剩下一空格
-
- nowrap强制不换行不保留空格
-
- pre 保留所有空格换行
-
- pre-wrap保留空格保留换行且一行显示不下则自动换行
-
- pre-line合并空格保留换行且一行显示不下则自动换行
- 更详细定位则优先级更高
CSS继承
某些属性会自动继承其父元素的计算值除非显式指定一个值 eg:.父类.子类
- 属性值inherit显示继承父类
box-sizing内属性取值
content-box(盒子):
[padding]和border不被包含在定义的[width]和height之内。( Element width = width + border + padding),此属性表现为标准模式下的盒模型。
border-box(较为常见):
padding和border被包含在定义的width和height之内。( Element width = width ),此属性表现为[怪异模式]模型。
CSS布局方式及相关技术
- 常规流
- 浮动
- 绝对定位
常规流
- 包括:行级 块级 表格布局 FlexBox Grid布局 auto依赖父级
- padding :10px 四边 10px 20px 上下 左右
- 百分比为相对于所在容器
- border:颜色粗细样式 顺时针(可以画三角形)
- margin-left/right:auto(水平居中)
- margin:垂直方向上合并 只取最大值并不相加(一般情况下)
- overflow:visible 内容超出容器大小还是显示完全内容
- hidden 截取超出部分 scroll 显示滚动条滚动
- overflow-wrap:break-word超出换行
块级VS.行级
1.Block Level Box
- 不和其他盒子并列摆放,使用所有盒模型属性
- 例如:body article div main section h1-6 p ul li等
- display:block
2.Inline Level Box
- 和其他行级盒子一起放或者拆开多行(有可能中间嵌套了块级) 盒模型中的属性部分不适用(width\height不适用是由内容决定)
- span em strong cite code等
- display:inline
- display:inline-block 不能拆散成多行
根元素 浮动 和绝对定位的元素会脱离常规流
行级排版上下文:
IFC只包含行级盒子的容器就会创建一个IFC 规则
- 盒子在一行内水平摆放
- 一行放不下,换行显示
- vertical-align决定一个盒子在行内的垂直对齐
- 避开float元素
块级排版上下文:
BFC规则:
- 根元素
- 浮动、绝对定位、inline-block
- Flex子项和Grid子项
- voerflow值不是visble的块盒
- display:flow-root;
Flex Box排版上下文:
一种新的排版上下文:可以控制子级盒子
- display:flex;//受flex布局上下文的规则流式单一布局模式
- justify-content主轴
- align-items侧轴
- Flexibility:可以设置子项的弹性
- flex-grow:number向外扩展(number剩余量分成的量的比值)
- flex-shrink是否换行(看flex属性)
- Flexiblility可以设置子项的弹性:当容器有剩余空间时,会伸展,容器空间不够时,会收缩。
- flex-grow有剩余空间的伸展能力
- flex-shrink容器空间不足时收缩能力
- flex-basis没有伸展或收缩时的基础长度
Grid布局二维布局模式:
将网页划分为网格 display:grid
使用grid-template相关属性将容器划分为网格
设置每个子项占N行/列
grid-template-columns: 100px 100px 200px;
grid-template-rows: 100px 100px
grid line网格线:即把页面划分为一个个格子并给线编序号(第一条横线、竖线为1......)
grid-row-start:1;
grid-column-start:1;
grid-row-end:1;
grid-column-end:1;
grid area网格区域:
四个数字表示:开始横线/开始竖线/结束横线/结束竖线
eg:grid-area:2/2/4/4;
- grid-template-columns:第一个网格 ......(列)
- grid-template-row(行)
- 1fr 单位为一份,剩下的平均分为N份
总结:学习完该课程对CSS有了更深入的了解,课后将阅读MDN文档和W3C CSS规范进一步了解CSS。