今天主要介绍以下CSS的基础,做一个基本知识的混讲。
首先,什么是CSS,它的全名叫做Cascading Style Sheets(层叠样式表),全称CSS(注意,一定要大写),它是由李爵士的同事Håkon W Lie提出的,这个人也是个牛逼的,这是他的生平。
CSS因为它的不正交性,饱受业内各种大佬的诟病,但是现在,你几乎找不到一款浏览器禁用CSS的,可以说CSS已经是网页开发的标准配置了,所以,我们只能选择不读的练习CSS,这样才能将CSS学习好。CSS本身有很多坑和很多隐藏的技巧,这些我会慢慢通过一次次的整理做出来的。
CSS的选择器
CSS的选择器分为五种:基本选择器,分组选择器,组合选择器,伪类,伪元素分组来讲解:
- 基本选择器
- 通用选择器 *
- 元素选择器 div span
- 类选择器 .red .div
- ID选择器 #red #div
- 属性选择器 input[name="test"] [attr=value]
- 分组选择器
- div,span 这种方法将很多有相同CSS样式的分到了一组,方便编写
- 组合选择器
- 后代选择器:1.A B 2. A > B
- 兄弟选择器:1.A~B 2. A + B
- 列组合器:A || B
- 伪类,伪元素
- :hover
- ::hover 注意,在CSS中,本身是区分大小写的,所以选择器中,一定要按照正确的写
CSS的引入方法
- CSS的引入主要有三种:行内样式,内联样式,外部样式
- 行内样式:
<div style="color='red'"></div> - 内联样式:
<style text='text/css'></style> - 外部样式:
- 行内样式:
方法一:
<link rel="stylesheet" type="text/css" href="./xxx.css">
方法二:
<style type="text/css">
@import url("./xxx.css")
</style>
调试大法
请使用border调试大法,无论遇到什么,直接就用border:1px solid red,直接就能解决很多的问题
文档流Normal Flow
记住一句话,内联元素从左到右,块级元素从上往下
细节上,如果设置了float,position,那么元素就会跳出文档流之中,文档流的规则不再适用。
- 宽度
- inline的宽度是由内部的inline元素的和来决定,不能用width指定
- 块级的高度一般有自动的默认计算长度,但也可以写死宽度
- inline结合两者的特点,可以指定宽高
- 高度
- inline的宽高由line-height和font-size决定,height并不能指定
- block由内部的文档流高度决定,可以设置height
- inline-block也是由文档流高度,可以设置height
overflow溢出
当内容的宽度或者高度大于容器设置的大小时,内容就会溢出,此时可以用overflow。
- overflow可以设置的值
- auto 当内容多于容器时,显示滚动条,如果没有,就不显示
- scroll 无论何时都有滚动条
- hidden 直接隐藏溢出的部分
- visible 什么都不管,默认值 overflow可以设置只对垂直或者水平,也就是只写overflow-y,overflow-x
盒模型
总共有两种盒模型:1.content-box内容盒2.borber-box边框盒
此时计算两者的宽高的办法是:
content-box width = 内容宽度
border-box width = 内容宽度+padding+border
开发的时候一般用的是border-box
margin合并
- 父子合并
css:
.parent{
width: 100px;
height: 100px;
margin-top: 20px;
}
.son{
border: 1px solid red;
width: 50px;
height: 50px;
margin-top: 20px;
}
html:
<div class="parent">
<div class="son"></div>
</div>
此时可以看到,父元素的margin-top='20px'居然被吞了!
2. 兄弟合并
css:
.son1{
margin: 10px;
}
.son2{
margin: 10px;
}
html:
<div class="son1">你好,我是大毛</div>
<div class="son2">你好,我是小毛</div>
- 怎么解决
- padding/margin
- overflow:hidden
- display:flex
- inline-block 遇到一条条去试就好了,css能做出来就行