【前端学习2】CSS知识点总结(0.1版本)

前言:由于css内容实在是太多,我发现仅凭我一个人根本写不完,于是我会在本文档引用一些外部链接,可以跳转去看其他人的文档。
我现在还在思考怎么去写这个css笔记,它和html不一样,html好总结,所以我会陆续进行修改更新。等我完全完成了这些任务,会发到github上。

接下来我们将要学习css,如果要讲完所有css知识点,对我来说是不可能的,因为css太多了。曾经有本砖头厚的书、记录的全是css,所以我只能总结常用的。css是个博大的学问,具体要实现什么需求时、再具体去学习。不过我会在其他文章记录一些比较流行的css特效。

我建议读者在学习时,自己建个html文件,把我写的css粘贴到里边看效果(博客展示不方便,容易乱,因为我文章用html写的)

css知识点

基础语法

css规则由两个主要部分:选择器和声明,一个生命有一条属性和一个值,属性间用分号隔开。
1
2
3
4
5
6
<style>
.hljs {
background: #f5f5f5;
}
</style>
.hljs是选择器,background是属性、#f5f5f5是值

css的引入方式

1.内联样式 直接在标签内部写css语句,如:
1
<p style="color: red;font-size: 30px;">我是一个段落</p>

缺点是维护成本高,如果是几千行代码,想修改css时得翻找半天,效率低下,一般不建议使用。

2.内部样式
 把样式写到head中的style标签中。这里涉及到元素选择器的知识,以下代码中,p标签和h2标签会受到css影响产生效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
p{
color: blueviolet;
font-size: 15px;
}
h2{
color:coral;
}
</style>
</head>
<body>
<h2>我是h2标题</h2>
<p>我是第二个段落</p>
</body>
</html>

优点上,比内联样式要好很多,可以直接根据标签名使用了。缺点上,感觉还是不太好维护、显得冗杂(我们css一般都要写一大堆的,就这样塞head里不合适)

3.外部样式
这是目前最推荐、也最常用的方法:专门创建后缀为css的文件,在里边写,然后html文件引用。
这里我在同级目录下创建名为style.css的文件,写入

1
2
3
4
5
p{
color: darkorange;
font-size: 75px;
}
/*style.css文件 与下面的html位于同一目录下*/

然后在html头部添加语句:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<link rel="stylesheet" href="./style.css">(我们添加的语句)
</head>
<body>
<h2>我是h2标题</h2>
<p>我是第二个段落</p>
</body>
</html>

在添加的语句中,rel必须是stylesheet,表示我们引用的是css文件,href填的是我们css文件的本地相对路径。

外部样式表的优点在于:易于维护、方便引用。在做网站时很多人喜欢把css文件直接托管到服务器上,不光自己可以引用、别人也能用。
优先级上,(内联样式)Inline style > (内部样式)Internal style sheet >(外部样式)External style sheet > 浏览器默认样式


css的选择器

多多少少能找到的选择器,大概有十余种,其中最主要的也就五种。

五大基础选择器


1.元素选择器

会给被标签包裹的元素加上css效果,如示例代码我们给span标签和p标签加了个color属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
span{
color: red;
}
p{
color: green;
}
</style>
</head>
<body>
<p>边学Unity,边学<span>前端</span></p>
</body>
</html>

2.类选择器
选择器格式为”.+类名”,为当前类下的元素加上css效果:
下面我们定义两个类分别叫“oneclass”和“twoclass”,加上color属性

1
2
3
4
5
6
7
8
9
10
11
12
13
<style type="text/css">
.oneclass/*定义类选择器*/{
color: red;
}
.twoclass{
color: green;
}
</style>
</head>
<body>
<h2 class="oneclass">你好</h2>
<p class = "twoclass">我不好</p>
</body>

3.id选择器
规定用#来定义,与类选择器比较像,但它只能用一次,用完就销毁了,把html比作食物,那id选择器就是配套的一次性筷子。

1
2
3
4
5
6
7
8
9
10
11
12
13
<head>
<title>Document</title>
<style type="text/css">
#mytitle
{
border:3px dashed green;
}
</style>
</head>
<body>
<h2 id="mytitle">你好</h2>
</body>
之后mytitle这个id便销毁了,接下来不能再用了,只能换个id名字。

4.全局选择器
对全局生效的选择器,用*来定义。

1
2
3
4
5
6
7
8
9
10
11
12
<head>
<title>Document</title>
<style type="text/css">
*{
color: red;
}
</style>
</head>
<body>
<h2>所有标签都得听我的</h2>
<p>无论你是什么标签</p>
</body>

5.合并选择器
和上边的选择器基本一样。只不过可以把多个选择器合并起来,中间用逗号隔开。

1
2
3
4
5
6
7
8
9
10
<style type="text/css">
.oneclass,.twoclass{
color: red;
}
</style>
</head>
<body>
<h2 class="oneclass">你好</h2>
<p class = "twoclass">我不好</p>
</body>

高级选择器


接下来的选择器是比较复杂、高级的(要上难度了,但不算特别重要)

1.属性选择器

我感觉解释起来比较抽象,想起来我们学HTML时的input标签了吗,当时是不是有好多属性。如type、name(忘了的话再重新翻翻看),我们的属性编辑器就是针对这些的。属性选择器大概可以分为七类: 基本格式是:标签[属性] 1.存在选择器 选择所有具有指定属性的元素,不论其属性值为何。
1
2
3
p[type] {
选择p标签下,所有带有 'type' 属性的元素
}

2.完全匹配选择器
选择属性值完全等于指定值的元素,才会启用。

1
2
3
4
[href="https://www.example.com"]
{
选择href属性值完全等于指定URL的元素
}

3.开始匹配选择器
选择属性值以指定值开头的元素。下例子,href属性以https://开头的才能实现

1
2
3
4
a[href^="https://"]
{
选择a标签下,href属性值以'https://'开始的元素
}

4.结束匹配选择器
选择属性值以指定值结束的元素。下例子,href属性以.pdf结束的才能实现。

1
2
3
[href$='.pdf'] {
选择href属性值以'.pdf'结束的元素
}

5.包含匹配选择器
选择属性值包含指定字符串的元素。下例子p标签下的title属性,只要包含hello的都能实现,无论是hello1还是hello2

1
2
3
p[title*='hello'] {
选择p标签下title属性值包含'hello'字符串的元素
}

6.词匹配选择器
匹配含有特定单词的元素,下例中如果你把active拼错了,那就匹配不了了,这也是他与包含匹配选择器的区别。

1
2
3
[class~='active'] {
选择class属性值中包含'active'单词的元素
}

7.前缀匹配选择器
选择属性值以指定值开始或者完全等于指定值的元素,主要用于语言代码或者文档类型这样的属性。

1
2
3
[lang|='en'] {
/* 选择lang属性值以'en'开始或等于'en'的元素 */
}

下面是个简单的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Attribute Selectors Example</title>
<style>
/* 存在选择器 */
[type] {
color: blue;
}

/* 完全匹配选择器 */
[href="https://www.example.com"] {
font-weight: bold;
}

/* 开始匹配选择器 */
[href^="https://"] {
color: green;
}

/* 结束匹配选择器 */
[href$=".pdf"] {
color: red;
}

/* 包含匹配选择器 */
[title*="hello"] {
background-color: yellow;
}

/* 词匹配选择器 */
[class~="active"] {
border: 1px solid black;
}

/* 前缀匹配选择器 */
[lang|="en"] {
font-style: italic;
}
</style>
</head>
<body>

<!-- 存在选择器 -->
<input type="text" placeholder="Type something...">

<!-- 完全匹配选择器 -->
<a href="https://www.example.com">Example Domain</a>

<!-- 开始匹配选择器 -->
<a href="https://www.example.com/about">About Example</a>

<!-- 结束匹配选择器 -->
<a href="https://www.example.com/resume.pdf">Resume</a>

<!-- 包含匹配选择器 -->
<div title="hello world">Hello World</div>

<!-- 词匹配选择器 -->
<div class="container active">Active Container</div>

<!-- 前缀匹配选择器 -->
<p lang="en-US">English Paragraph</p>

</body>
</html>

这些请参考以下文章
伪类选择器、伪元素选择器、组合选择器


CSS背景

CSS 背景属性用于定义HTML元素的背景。 CSS 属性定义背景效果: background-color(定义了元素的背景颜色) background-image(描述了元素的背景图像) background-repeat(设置定位与不平铺) background-attachment(设置图像是否固定、是否随页面滚动) background-position(改变图像在背景中的位置) background-size(设置图像大小) 具体每个属性我建议你自己查,我发现我全写下来根本不现实()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
.example {
/* 设置背景颜色为浅蓝色 */
background-color: #add8e6;

/* 设置背景图像为一张图片 */
background-image: url('https://www.helloimg.com/i/2024/10/08/670526445bc46.jpg');

/* 设置背景图像不平铺 */
background-repeat: no-repeat;
常用的就repeat-y,repeat-x了

/* 设置背景图像固定,不随页面滚动 */
background-attachment: fixed;
具体参考
https://blog.csdn.net/m0_60744481/article/details/130582748

/* 设置背景图像的位置在右下角 */
background-position: bottom right;
几个英文单词组合,九宫格形式

/* 设置背景图像大小 */
background-size: 1000px 800px;
第一个参数填图像长,第二个宽
background-size: cover;
cover表覆盖,可能把图片剪切了,以适应屏幕
contain属性表完整的图片适应屏幕。
}

文字属性

具体参考这里 text-align: center/right/left;设置文字居中方式 text-decoration: underline(上划线);overline(下划线);line-through(定义删除线); text-transform: captialized(每个单词开头大写);uppercase(全部大写);lowercase(全部小写); text-indent: 50px;设置文字首行缩进;

表格属性
1
2
3
4
5
6
7
8
9
10
11
12
为表格添加边框,第一个值为边框大小,第二个为实线/虚线,第三个是边框颜色。
加了td后就是每个td标签、单元格都实现这种效果
tabel,td{
border: 1px solid red;
}
border-collapse: collapse;(边框折叠,把双边框变成单边框。)
width和height: 设置表格宽高
text-align: 设置文字左右对齐方式,right left center
vertical-align: 设置文字垂直对齐方式,top bottom center
padding: 20px;设置表格文字与上下左右四个边框的距离
background-color: 设置背景颜色
color: 设置表格文字颜色

盒子模型

因为其像盒子嵌套,所以叫“盒子模型” 参考菜鸟教程
1
2
3
4
5
6
padding: 50px 20px;内边距,第一个值上下,第二个值左右
border: 50px;边框
margin: 50px 20px;外边距,第一个值上下,第二个值左右
更高级的用法,分别表示上下左右,
如padding-left,margin-left,表示左
注意border比较特殊,不能border: 50px,20px;

弹性盒子模型

弹性盒子模型适用的场景是,一个大盒子装有好几个小盒子 参考CSDN
1
2
3
4
5
display: flex;启用弹性盒子模型
flex-direction: row(默认方式,横向从左到右对齐)|row-reverse(从右到左)|column(从上到下纵向排列)|column-reverse(从下到上)
justify-content: flex-start(垂直方向上居上摆放)|flex-end(垂直方向上居下摆放)|center(垂直方向居中)
align-items: 和上边参数一样,表左右方向,start居左,end居右
flex-grow: 1; 适用于子盒子的,子盒子分配比例(语言描述比较抽象,建议实际操作);

浮动流

float属性,只有left和right,新建一个层级。 清除浮动用clear