前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS笔记

CSS笔记

作者头像
matt
发布2022-10-25 16:11:12
2.2K0
发布2022-10-25 16:11:12
举报
文章被收录于专栏:CSDN迁移CSDN迁移

CSS笔记

一、基本知识

CSS 指层叠样式表 (Cascading Style Sheets)

1.1 CSS选择器

  1. 派生选择器 通过依据元素在其位置的上下文关系来定义样式,你可以使标记更加简洁。
代码语言:javascript
复制
/* 在<li><strong>标签得联合作用下的样式 */
li strong {
	font-style: italic;
	font-weight: normal;
}
  1. id 选择器 id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。id 选择器以 “#” 来定义。
代码语言:javascript
复制
/* 标签id为red的样式 */
#red {color:red;}

<p id="red">这个段落是红色。</p>
  1. 类选择器 在 CSS 中,类选择器以一个点号显示。
代码语言:javascript
复制
/* 类为center的样式 */
.center {text-align: center}

<h1 class="center">
	This heading will be center-aligned
</h1>
  1. 属性选择器 对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。
代码语言:javascript
复制
/* title属性值中包含hello的样式 */
[title~=hello] { color:red; }

1.2 创建

  1. 外部样式表
代码语言:javascript
复制
<head>
	<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
  1. 内部样式表
代码语言:javascript
复制
<head>
	<style type="text/css">
		  hr {color: sienna;}
		  p {margin-left: 20px;}
		  body {background-image: url("images/back40.gif");}
	</style>
</head>
  1. 内联样式
代码语言:javascript
复制
<p style="color: sienna; margin-left: 20px">
	This is a paragraph
</p>

二、样式

1. 背景

属性

描述

background

简写属性,作用是将背景属性设置在一个声明中。

background-attachment

背景图像是否固定或者随着页面的其余部分滚动,防止滚动时图形消失 fixed。

background-color

设置元素的背景颜色。

background-image

把图像设置为背景,url(/i/eg_bg_04.gif)。

background-position

设置背景图像的起始位置。

background-repeat

设置背景图像是否及如何重复。(repeat-x、repeat-y、no-repeat)

2. 文本

CSS中长度单位: px:像素(Pixel);em:相对长度单位,相对于当前对象内文本的字体尺寸;pt:点(Point),绝对长度单位;pc:派卡(Pica);in:英寸(Inch);mm:毫米;cm:厘米。 1 in = 2.54 cm = 25.4 mm = 72 pt = 6 pc

属性

描述

color

设置文本颜色

background-color

设置文本的背景颜色

direction

设置文本方向,ltr默认从左到右、rtl、inherit继承父元素。

line-height

设置行高。

letter-spacing

设置字符间距。

text-align

对齐元素中的文本,默认left,right、center、justify两端对齐。

text-decoration

向文本添加修饰,none、underline、overline、line-through、blink。

text-indent

缩进元素中文本的首行。

text-shadow

设置文本阴影。CSS2 包含该属性,但是 CSS2.1 没有保留该属性。

text-transform

控制元素中的字母,uppercase、lowercase、capitalize首字母大写。

unicode-bidi

设置文本方向。

white-space

设置元素中空白的处理方式,pre不忽略空白符、nowrap忽略换行、pre-wrap、pre-line。

word-spacing

设置字间距。

3. 字体

CSS 字体属性定义文本的字体系列、大小、加粗、风格(如斜体)和变形(如小型大写字母)。

属性

描述

font

简写属性。作用是把所有针对字体的属性设置在一个声明中。

font-family

设置字体系列。

font-size

设置字体的尺寸。

font-size-adjust

当首选字体不可用时,对替换字体进行智能缩放。(CSS2.1 已删除该属性。)

font-stretch

对字体进行水平拉伸。(CSS2.1 已删除该属性。)

font-style

设置字体风格。

font-variant

以小型大写字体或者正常字体显示文本。

font-weight

设置字体的粗细。

4. 链接

a:link - 普通的、未被访问的链接 a:visited - 用户已访问的链接 a:hover - 鼠标指针位于链接的上方 a:active - 链接被点击的时刻

代码语言:javascript
复制
/* 使用 */
a:link {color:#FF0000;text-decoration:none;}

5. 列表

CSS 列表属性允许你放置、改变列表项标志,或者将图像作为列表项标志。

属性

描述

list-style

简写属性。用于把所有用于列表的属性设置于一个声明中。

list-style-image

将图象设置为列表项标志。

list-style-position

设置列表中列表项标志的位置。

list-style-type

设置列表项标志的类型。

marker-offset

6. 表格

属性

描述

border-collapse

设置是否把表格边框合并为单一的边框。

border-spacing

设置分隔单元格边框的距离。

caption-side

设置表格标题的位置。

empty-cells

设置是否显示表格中的空单元格。

table-layout

设置显示单元、行和列的算法。

  1. 轮廓 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。CSS outline 属性规定元素轮廓的样式、颜色和宽度。

属性

描述

outline

在一个声明中设置所有的轮廓属性。

outline-color

设置轮廓的颜色。

outline-style

设置轮廓的样式。

outline-width

设置轮廓的宽度。

8. js 中获取高/宽

代码语言:javascript
复制
dom.style.width/height  
window.getComputedStyle(dom).width/height

9. 隐藏模块

  • opacity 属性 指定了一个元素的透明度,0:元素完全透明(即元素不可见);(0.0-1.0):元素半透明(即元素后面的背景可见);1:元素完全不透明(即元素后面的背景不可见)。
  • z-index 属性 设定了一个定位元素及其后代元素或 flex 项目的 z-order,当元素之间重叠的时候, z-index 较大的元素会覆盖较小的元素在上层进行显示。 可以被设定为关键词 auto 或<integer>,设置为负数可以降低显示优先级。
  • overflow 属性 overflow:hidden——溢出,坍塌,清除浮动
代码语言:javascript
复制
1. 隐藏溢出
当父div拥有固定的高度时
2. 清除浮动
当父元素的高height:auto时
3. 解除坍塌

10. :nth-child

这个 CSS 伪类首先找到所有当前元素的兄弟元素,然后按照位置先后顺序从1开始排序,选择的结果为CSS伪类:nth-child括号中表达式(an+b)匹配到的元素集合(n=0,1,2,3…)。

11. vh/vw与%区别

单位

依赖于

%

元素的祖先元素

vh/vw

视口高度/宽度的尺寸(横屏/竖屏会自动变化)

12. export default 和 export 区别

  1. export 与 export default 均可用于导出常量、函数、文件、模块等
  2. 你可以在其它文件或模块中通过 import+ (常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用
  3. 在一个文件或模块中,export、import 可以有多个,export default 仅有一个
  4. 通过 export 方式导出,在导入时要加 { },export default 则不需要

13. undefined与null的区别

null表示"没有对象",即该处不应该有值。 undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。

最初的解释:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

14. 击穿Scoped

使用 scoped 后,父组件的样式将不会渗透到子组件中。如果希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 >>> 操作符。

代码语言:javascript
复制
<style scoped>
	.a >>> .b { /* ... */ }
</style>

上述代码将会编译成:
	.a[data-v-f3f3eg9] .b { /* ... */ }

Scoped CSS

三、进阶

1. 盒模型

每个盒子有四个边界:

  • 内容边界 Content edge:容纳着元素的“真实”内容
  • 内边距边界 Padding Edge:扩展自内容区域,负责延伸内容区域的背景
  • 边框边界 Border Edge:扩展自内边距区域,是容纳边框的区域
  • 外边框边界 Margin Edge:用空白区域扩展边框区域,以分开相邻的元素
在这里插入图片描述
在这里插入图片描述

标准盒子模型中 content 不包括其他元素,IE盒子模型中 content 包含了 border、padding。

代码语言:javascript
复制
// content-box为标准盒子模型,默认,最后会汇总content + border + padding的值
// border-box为IE盒子模型,内容区的实际宽度是width减去(border + padding)的值
box-sizing: content-box;  
width: 100%;
border: solid #5B6DCD 10px; // 内容的边框大小
padding: 5px;  // 定义元素边框与元素内容之间的空间,即上下左右的内边距(简写,可填四个值)

2. display 属性 + position属性 + float属性

  • display 属性 指定了一个DOM元素说使用的盒子模型(box),即元素应该生成的框的类型。
代码语言:javascript
复制
1. block
div是一个标准的块级元素。一个块级元素会新开始一行并且尽可能撑满容器,其他常用的块级元素包括 p、 form和header、 footer、 section等。

2. inline
span是一个标准的行内元素。一个行内元素可以在段落中 <span> 像这样 </span>包裹一些文字而不会打乱段落的布局,其他有a元素。

3. none
一些特殊元素的默认display值是它,例如 script 。
display:none 通常被 JavaScript 用来在不删除元素的情况下隐藏或显示元素。它和visibility属性不一样,把 display:none 不会保留元素本该显示的空间,但是 visibility:hidden 还会保留。

4. inline-block
同时具有block的宽高特性又具有inline的同行元素特性。
在这里插入图片描述
在这里插入图片描述
  • position 属性 指出一个元素的定位方法。有四种可能值:static、relative、absolute、fixed。
  • float 属性 定义元素在哪个方向浮动,用于实现横向多列布局,主要值取 none、left、right。 实际使用参考博客
代码语言:javascript
复制
1. 对元素本身的影响 
2. 对父容器的印象
3. 对相邻元素的影响

3. 行内元素和块级元素

  • 行内元素 display:inline 行内元素会在一条直线上排列(默认宽度只与内容有关),都是同一行的,水平方向排列。 行内元素设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效
  • 块级元素 display:block 块级元素各占据一行(默认宽度是它本身父容器的100%(和父元素的宽度一致),与内容无关),垂直方向排列。
  • inline-block 如input、img,既具有 block 元素可以设置宽高的特性,同时又具有 inline 元素默认不换行的特性。

4. Flex 布局

Flex布局——语法 Flex布局——实例

1)定义

Flex 是 Flexible Box 的缩写,意为"弹性布局"。子元素的float、clear和vertical-align属性将失效。

代码语言:javascript
复制
.box {
  display: flex/inline-flex;
}

2)概念

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。 容器默认存在两根轴:水平的主轴main axis)和垂直的交叉轴cross axis)。

在这里插入图片描述
在这里插入图片描述

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

3)容器的属性

(1)flex-direction属性 决定主轴的方向(即项目的排列方向)。

代码语言:javascript
复制
// row(默认值):主轴为水平方向,起点在左端。  (从左到右)
// row-reverse:主轴为水平方向,起点在右端。   (从右到左)
// column:主轴为垂直方向,起点在上沿。        (从上到下)
// column-reverse:主轴为垂直方向,起点在下沿。(从下到上)
.box {
  flex-direction: row | row-reverse | column | column-reverse;
}

(2)flex-wrap 默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行

代码语言:javascript
复制
// nowrap(默认):不换行。          (不换行)
// wrap:换行,第一行在上方。        (正常换行)
// wrap-reverse:换行,第一行在下方。(后来居上)
.box{
  flex-wrap: nowrap | wrap | wrap-reverse;
}

(3)flex-flow flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

代码语言:javascript
复制
.box {
  flex-flow: <flex-direction> || <flex-wrap>;
}

(4)justify-content 定义了项目在主轴上的对齐方式

代码语言:javascript
复制
// flex-start(默认值):左对齐
// flex-end:右对齐
// center:居中
// space-between:两端对齐,项目之间的间隔都相等。
// space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
.box {
  justify-content: flex-start | flex-end | center | space-between | space-around;
}

(5)align-items 定义项目在交叉轴上如何对齐

代码语言:javascript
复制
// flex-start:交叉轴的起点对齐。
// flex-end:交叉轴的终点对齐。
// center:交叉轴的中点对齐。
// baseline: 项目的第一行文字的基线对齐。
// stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
.box {
  align-items: flex-start | flex-end | center | baseline | stretch;
}

(6)align-content 定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

代码语言:javascript
复制
// flex-start:与交叉轴的起点对齐。
// flex-end:与交叉轴的终点对齐。
// center:与交叉轴的中点对齐。
// space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
// space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
// stretch(默认值):轴线占满整个交叉轴。
.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
在这里插入图片描述
在这里插入图片描述

4)项目的属性

(1)order 定义项目的排列顺序。数值越小,排列越靠前,默认为0,可以是负值。

(2)flex-grow 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。与其他比例相比。

在这里插入图片描述
在这里插入图片描述

(3)flex-shrink 定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。 如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

(4)flex-basis 定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。 它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间,且优先级高于width。

代码语言:javascript
复制
.item {
  flex-basis: <length> | auto; /* default auto: original size */
}

(5)flex 是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。 该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

(6)align-self 允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

代码语言:javascript
复制
.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

5)实例

Flex布局——实例

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CSS笔记
  • 一、基本知识
    • 1.1 CSS选择器
      • 1.2 创建
      • 二、样式
        • 1. 背景
          • 2. 文本
            • 3. 字体
              • 4. 链接
                • 5. 列表
                  • 6. 表格
                    • 8. js 中获取高/宽
                      • 9. 隐藏模块
                        • 10. :nth-child
                          • 11. vh/vw与%区别
                            • 12. export default 和 export 区别
                              • 13. undefined与null的区别
                                • 14. 击穿Scoped
                                • 三、进阶
                                  • 1. 盒模型
                                    • 2. display 属性 + position属性 + float属性
                                      • 3. 行内元素和块级元素
                                        • 4. Flex 布局
                                          • 1)定义
                                          • 2)概念
                                          • 3)容器的属性
                                          • 4)项目的属性
                                          • 5)实例
                                      相关产品与服务
                                      容器服务
                                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档