总结不易,点个赞在走吧
文章目录
- 1.介绍一下CSS的盒子模型
- 2.怪异盒模型/IE盒模型
- 3.line-height和height的区别?
- 4.CSS选择符有哪些?
- 5.哪些属性可以继承?
- 6.CSS优先级算法如何设计
- 7.用CSS画一个三角形
- 8.一个盒子不给宽高如何水平垂直居中?
- 9.dispaly有哪些值,作用是什么?
- 10.BFC是什么
- 11.清除浮动的方式?
- 12.CSS中有几种定位?分别根据什么定位的?
- 13.写一个左中右布局占满屏幕,其中左,右固定宽度200,中间自适应宽度,要求先加载出中间块,写出结构和样式(双飞翼布局)
- 14.CSS sprite(雪碧图)是什么?
- 15.display:none;与 visibility:hidden;的区别
- 16.opacity 和 rgba的区别?
- 17.隐藏元素的方法有哪些?
- 18.px和rem的区别
- 19.重绘和重排有什么区别
- 20.CSS3有哪些新特性
1.介绍一下CSS的盒子模型
CSS盒子模型是理解网页布局和元素尺寸的基础,它描述了每个HTML元素如何作为一个矩形盒子来呈现,这个盒子由四个部分组成:内容区(Content)、内边距(Padding)、边框(Border)和外边距(Margin)。下面是对这四个部分的详细说明:
- 内容区(Content):这是盒子模型的核心部分,用于放置文本、图片或其他媒体内容。内容区的尺寸可以通过width和height属性来设置。
- 内边距(Padding):内边距位于内容区的外围,用于控制内容区与边框之间的空间。通过设置padding属性,可以调整内边距的大小,使内容与边框之间保持一定的距离。padding可以分别设置上、右、下、左四个方向的值,也可以统一设置所有方向的值。
- 边框(Border):边框围绕在内边距之外,用于定义盒子的边界。边框的样式、宽度和颜色可以通过border属性来设置。例如,border: 1px solid black;表示创建一个1像素宽的实线黑色边框。
- 外边距(Margin):外边距位于边框之外,用于控制当前盒子与其他元素之间的间距。通过设置margin属性,可以控制盒子之间的距离,避免元素过于拥挤。与padding类似,margin也支持设置四个方向的值。
此外,还需要注意的是,盒子模型的尺寸计算方式有两种:标准盒模型和IE盒模型(或称为怪异盒模型)。在标准盒模型中,元素的总宽度等于width + padding + border + margin;而在IE盒模型中,width属性包含了padding和border,即元素的实际内容宽度等于width - padding - border。可以通过设置box-sizing属性来选择使用哪种盒模型,例如,box-sizing: content-box;对应标准盒模型,而box-sizing: border-box;则对应IE盒模型。
2.怪异盒模型/IE盒模型
怪异盒模型(Quirks Mode Box Model),也被称为IE盒模型,是一种不同于标准盒模型(W3C盒模型)的尺寸计算方式。在怪异盒模型中,元素的width和height属性包括了内容区、内边距(padding)和边框(border)的总和,而不像标准盒模型那样仅指内容区的尺寸。
如何启用怪异盒模型
怪异盒模型通常在浏览器的“怪异模式”(Quirks Mode)下启用。怪异模式是为了兼容旧版浏览器和一些老网站而存在的,当浏览器检测到某些特定的DOCTYPE声明或完全缺少DOCTYPE声明时,会进入怪异模式。
* {
box-sizing: border-box;
}
使用场景
● 标准盒模型:适用于大多数现代Web开发,因为它更符合W3C标准,且更容易理解和预测。
● 怪异盒模型:在需要保持固定外部尺寸,同时内部内容区域随padding和border变化时,使用box-sizing: border-box;可以达到类似的效果
3.line-height和height的区别?
line-height 和 height 是 CSS 中两个常用的属性,它们在控制元素的高度和行间距方面有着不同的用途和行为。下面是这两个属性的具体区别和用法:
height
● 定义:height 属性用于设置元素的高度。
● 作用对象:主要应用于块级元素(如 div、p)和具有固定高度的行内块级元素(如 img、input)。
● 影响范围:height 直接控制元素的内部高度,不包括内边距(padding)、边框(border)和外边距(margin)。
● 常见用法:
div {
height: 100px; /* 设置元素的高度为100像素 */
}
line-height
● 定义:line-height 属性用于设置行间距,即行与行之间的垂直距离。
● 作用对象:主要用于文本内容,尤其是行内元素(如 span)和文本节点。
● 影响范围:line-height 控制的是文本行的高度,而不是整个元素的高度。它会影响文本的垂直对齐方式。
● 常见用法:
p {
line-height: 1.5; /* 设置行间距为字体大小的1.5倍 */
line-height: 30px;
}
主要区别
- 用途不同:
○ height 用于设置元素的整体高度。
○ line-height 用于设置文本行的间距。 - 影响对象不同:
○ height 影响整个元素的高度,包括内容区、内边距、边框。
○ line-height 仅影响文本行的高度,主要用于控制文本的垂直对齐和行间距。 - 单位和计算方式不同:
○ height 可以使用绝对单位(如 px、em)或百分比。
○ line-height 可以使用绝对单位、相对单位(如 em)或无单位的数字(表示相对于字体大小的比例)。
代码实现
height 示例
<div style="height: 100px; background-color: lightblue;">
这是一个高度为100像素的div。
</div>
line-height 示例
<p style="line-height: 1.5; font-size: 16px;">
这是一个设置了行间距为1.5倍字体大小的段落。<br>
每一行之间的距离会增加。
</p>
总结
● height:当你需要精确控制一个元素的高度时,使用 height。例如,设置一个固定高度的导航栏或容器。
● line-height:当你需要改善文本的可读性或调整文本的垂直对齐时,使用 line-height。例如,设置段落的行间距,使文本更易阅读。
4.CSS选择符有哪些?
- 标签选择符(Type Selector)
○ 选择特定类型的 HTML 元素。
○ 示例:p { color: blue; } 选择所有的元素。
- 类选择符(Class Selector)
○ 选择具有特定类名的元素。
○ 示例:.my-class { color: red; } 选择所有类名为 my-class 的元素。 - ID 选择符(ID Selector)
○ 选择具有特定 ID 的元素。
○ 示例:#my-id { font-size: 20px; } 选择 ID 为 my-id 的元素。 - 通用选择符(Universal Selector)
○ 选择文档中的所有元素。
○ 示例:* { margin: 0; padding: 0; } 重置所有元素的外边距和内边距。 - 属性选择符(Attribute Selector)
○ 选择具有特定属性或属性值的元素。
○ 示例:[type=“text”] { width: 100px; } 选择所有 type 属性值为 text 的元素。 - 伪类选择符(Pseudo-class Selector)
○ 选择处于特定状态的元素。
○ 示例:a:hover { color: green; } 选择鼠标悬停在链接上的状态。 - 伪元素选择符(Pseudo-element Selector)
○ 选择元素的特定部分。
○ 示例:p::first-line { font-weight: bold; } 选择段落的第一行。 - 后代选择符(Descendant Selector)
○ 选择某个元素内的特定后代元素。
○ 示例:div p { color: blue; } 选择所有在 内的元素。
- 子选择符(Child Selector)
○ 选择某个元素的直接子元素。
○ 示例:ul > li { color: red; } 选择所有- 的直接子元素
- 。
- 相邻兄弟选择符(Adjacent Sibling Selector)
○ 选择紧接在另一个元素之后的元素。
○ 示例:h1 + p { margin-top: 0; } 选择紧跟在<h1> 后面的 <p>
元素。 - 通用兄弟选择符(General Sibling Selector)
○ 选择同级的后续元素。
○ 示例:h1 ~ p { font-style: italic; } 选择所有在<h1> 后面的 <p>
元素。
5.哪些属性可以继承?
- 颜色 (color):文本颜色。
- 字体 (font):包括 font-family、font-size、font-weight、font-style 等。
- 文本 (text):包括 text-align、text-decoration、text-indent、text-transform 等。
- 列表 (list):包括 list-style、list-style-type、list-style-image、list-style-position 等。
- 行高 (line-height):行间距。
- 字母间距 (letter-spacing):字符之间的间距。
- 单词间距 (word-spacing):单词之间的间距。
- 文本缩进 (text-indent):段落首行缩进。
- 可见性 (visibility):元素的可见性。
- 引用 (quotes):引号的样式。
- 方向 (direction):文本的方向(从左到右或从右到左)。
- Unicode 范围 (unicode-bidi):双向文本的嵌入方向。
- 白空间处理 (white-space):空白字符的处理方式。
6.CSS优先级算法如何设计
CSS的特性:继承性,层叠性,优先级
优先级比较: !import > 内联样式 > id > class > 标签 > 通配符
7.用CSS画一个三角形
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.sanjiao_wrap{
width: 400px;
height: 100px;
outline: 1px solid red;
display: flex;
}
.sanjiao1 {
/*
border-top/bottom:设置三角形不要设置宽度
border-left/right:设置三角形不要设置高度
*/
width: 0px;
height: 0px;
border-top: 50px solid transparent;
border-bottom: 50px solid transparent;
border-left: 50px solid yellow;
border-right: 50px solid transparent;
}
.sanjiao2 {
width: 0px;
height: 0px;
border-top: 50px solid red;
border-bottom: 50px solid transparent;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
.sanjiao3 {
width: 0px;
height: 0px;
border-top: 50px solid transparent;
border-bottom: 50px solid blue;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
.sanjiao4 {
width: 0px;
height: 0px;
border-top: 50px solid transparent;
border-bottom: 50px solid transparent;
border-left: 50px solid transparent;
border-right: 50px solid green;
}
.div2 {
/* linear-gradient */
width: 100px;
height: 100px;
/* background: linear-gradient(45deg, deeppink, yellowgreen); */
/* background: linear-gradient(45deg, deeppink, deeppink 50%, yellowgreen 50%, yellowgreen 10%); */
/* 只展示一个三角形 */
background: linear-gradient(45deg, deeppink, deeppink 50%, transparent 50%, transparent 100%);
}
</style>
</head>
<body>
<div class="sanjiao_wrap">
<div class="sanjiao1"></div>
<div class="sanjiao2"></div>
<div class="sanjiao3"></div>
<div class="sanjiao4"></div>
</div>
<div class="div2"></div>
</body>
</html>
8.一个盒子不给宽高如何水平垂直居中?
方法一:Flexbox
Flexbox 是一种非常强大且灵活的布局方式,可以轻松实现水平和垂直居中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flexbox Centering</title>
<style>
.container {
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
height: 100vh; /* 容器高度为视口高度 */
border: 1px solid black; /* 边框便于观察 */
}
.box {
padding: 20px;
background-color: lightblue;
}
</style>
</head>
<body>
<div class="container">
<div class="box">
我是一个居中的盒子
</div>
</div>
</body>
</html>
方法二:Grid
CSS Grid 也是一种强大的布局方式,可以轻松实现多维布局,包括水平和垂直居中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Grid Centering</title>
<style>
.container {
display: grid;
place-items: center; /* 水平和垂直居中 */
height: 100vh; /* 容器高度为视口高度 */
border: 1px solid black; /* 边框便于观察 */
}
.box {
padding: 20px;
background-color: lightblue;
}
</style>
</head>
<body>
<div class="container">
<div class="box">
我是一个居中的盒子
</div>
</div>
</body>
</html>
方法三:绝对定位 + transform
使用绝对定位和 transform 也可以实现水平和垂直居中,但这种方法需要更多的 CSS 代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Absolute Positioning Centering</title>
<style>
.container {
position: relative;
height: 100vh; /* 容器高度为视口高度 */
border: 1px solid black; /* 边框便于观察 */
}
.box {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* 水平和垂直居中 */
padding: 20px;
background-color: lightblue;
}
</style>
</head>
<body>
<div class="container">
<div class="box">
我是一个居中的盒子
</div>
</div>
</body>
</html>
方法四:表格布局
虽然表格布局不如 Flexbox 和 Grid 那么现代化,但在某些情况下仍然有效。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Table Centering</title>
<style>
.container {
display: table;
height: 100vh; /* 容器高度为视口高度 */
width: 100%; /* 容器宽度为视口宽度 */
border: 1px solid black; /* 边框便于观察 */
}
.cell {
display: table-cell;
vertical-align: middle; /* 垂直居中 */
text-align: center; /* 水平居中 */
}
.box {
display: inline-block;
padding: 20px;
background-color: lightblue;
}
</style>
</head>
<body>
<div class="container">
<div class="cell">
<div class="box">
我是一个居中的盒子
</div>
</div>
</div>
</body>
</html>
9.dispaly有哪些值,作用是什么?
● none 隐藏元素
● block 把某某元素转换成块元素
● inline把某某元素转换成内联元素
● inline-block把某某元素转换成行内块元素
10.BFC是什么
BFC是一个页面上的一个隔离的独立容器,容器里面子元素不会影响到外面的元素
BFC原则:如果一个元素具有BFC,那么内部元素再怎么,都不会影响到外面的元素
创建BFC
- 根元素(HTML):根元素始终会创建一个新的 BFC。
- 浮动元素(float 不为 none):浮动元素会创建一个新的 BFC。
- 绝对定位元素(position 为 absolute 或 fixed):绝对定位的元素会创建一个新的 BFC。
- 行内块元素(display 为 inline-block):行内块元素会创建一个新的 BFC。
- 表单元格(display 为 table-cell,HTML 表格中的默认值):表单元格会创建一个新的 BFC。
- 表标题(display 为 table-caption,HTML 表格中的默认值):表标题会创建一个新的 BFC。
- 匿名表格元素(display 为 table、inline-table、table-row-group、table-header-group、table-footer-group、table-row、table-column-group、table-column、table-cell、table-caption):这些元素会创建一个新的 BFC。
- 溢出值不为 visible 的块元素(overflow 不为 visible):溢出值为 auto、scroll 或 hidden 的块元素会创建一个新的 BFC。
- display 为 flow-root 的元素:这是 CSS3 引入的一个新值,明确用于创建一个新的 BFC。
如何触发BFC
● float的值非none
● overflow的值非visible
● display的值为:inline-block、table-cell…
● position的值为:absoute、fixed
11.清除浮动的方式?
- 触发BFC
- 多创建一个盒子,添加样式:clear:both;
- .after方式
div:after{
content:'';
Hisplay: block;
clear: both;
}
12.CSS中有几种定位?分别根据什么定位的?
● 静态定位(static):默认定位,元素按正常文档流布局。
● 相对定位(relative):元素相对于其正常位置进行定位。
● 绝对定位(adsolute):元素相对于最近的非 static 定位的祖先元素进行定位。
● 固定定位(fixed):元素相对于浏览器窗口进行定位,不随页面滚动。
● 粘性定位(sticky):元素根据用户的滚动位置进行定位,达到阈值时固定在某个位置。
13.写一个左中右布局占满屏幕,其中左,右固定宽度200,中间自适应宽度,要求先加载出中间块,写出结构和样式(双飞翼布局)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Left-Middle-Right Layout</title>
<style>
/* 基本样式 */
body,
html {
margin: 0;
padding: 0;
height: 100%;
}
.container {
display: flex;
height: 100vh;
/* 占满整个视口高度 */
flex-wrap: nowrap;
/* 不换行 */
}
.left,
.right {
width: 200px;
background-color: #f0f0f0;
padding: 20px;
box-sizing: border-box;
/* 包括内边距和边框在宽度内 */
}
.middle {
flex-grow: 1;
/* 自适应宽度 */
background-color: #e0e0e0;
padding: 20px;
box-sizing: border-box;
/* 包括内边距和边框在宽度内 */
}
/* 重新排序以实现正确的布局 */
.left {
order: -1;
/* 左侧块顺序为 -1 */
}
.right {
order: 1;
/* 右侧块顺序为 1 */
}
.middle {
order: 0;
/* 中间块顺序为 0 */
}
</style>
</head>
<body>
<div class="container">
<div class="middle">
<!-- 中间内容 -->
<h1>中间块</h1>
<p>这里是中间块的内容。</p>
</div>
<div class="left">
<!-- 左侧内容 -->
<h2>左侧块</h2>
<p>这里是左侧块的内容。</p>
</div>
<div class="right">
<!-- 右侧内容 -->
<h2>右侧块</h2>
<p>这里是右侧块的内容。</p>
</div>
</div>
</body>
</html>
14.CSS sprite(雪碧图)是什么?
雪碧图一种把多个小图标或图像合并成一张大图的技术
优点
- 减少HTTP请求
- 提高缓存效率
- 优化用户体验
使用
- 准备雪碧图
- 通过使用 background-image 和 background-position 属性来显示所需的图像部分。
15.display:none;与 visibility:hidden;的区别
display: none; 和 visibility: hidden; 都是 CSS 中用于控制元素可见性的属性,但它们的行为和效果有很大的不同
● display: none;:完全移除元素,不占据空间,不参与布局计算。
● visibility: hidden;:隐藏元素,但保留其占据的空间,参与布局计算。
1. display: none;
● 作用:完全移除元素,使其不占据任何空间。
● 布局影响:元素及其后代元素都不会参与布局计算,不会影响页面的其他部分。
● 渲染:元素不会被渲染到页面上,浏览器不会对其进行任何绘制操作。
● DOM 存在:虽然元素不在页面上显示,但仍然存在于 DOM 中,可以通过 JavaScript 访问和操作。
2. visibility: hidden;
● 作用:隐藏元素,但保留其占据的空间。
● 布局影响:元素仍然参与布局计算,占据其应有的空间,只是不可见。
● 渲染:元素会被渲染到页面上,但透明度为 0,不可见。
主要区别
- 布局影响:
○ display: none;:元素完全从布局中移除,不会占据任何空间。
○ visibility: hidden;:元素仍然占据空间,只是不可见。 - 渲染:
○ display: none;:元素不被渲染,浏览器不会对其进行任何绘制操作。
○ visibility: hidden;:元素会被渲染,但透明度为 0,不可见。 - 使用场景:
○ display: none;:适用于需要完全移除元素的情况,例如在响应式设计中隐藏某些内容,或者在页面加载后通过 JavaScript 动态显示或隐藏内容。
○ visibility: hidden;:适用于需要保留元素空间但暂时隐藏内容的情况,例如在动画效果中,或者在某些情况下需要保留元素的空间以保持布局稳定。
16.opacity 和 rgba的区别?
opacity 和 rgba 都是 CSS 中用于控制元素透明度的属性,但它们在应用和效果上有明显的区别。下面详细解释这两种属性的区别:
● opacity:设置整个元素及其子元素的透明度,影响范围广。
● rgba:仅设置颜色的透明度,不影响子元素,适用于需要单独控制颜色透明度的场景。
1. opacity
● 作用:设置元素及其所有子元素的透明度。
● 取值范围:0.0(完全透明)到 1.0(完全不透明)。
● 影响范围:不仅影响当前元素,还会影响其所有的子元素。
● 背景透明:设置透明度后,元素的背景和内容都会变得透明。
2. rgba
● 作用:设置颜色的透明度,仅影响指定的颜色。
● 取值格式:rgba(red, green, blue, alpha),其中 red、green 和 blue 是 0 到 255 之间的整数,alpha 是 0.0(完全透明)到 1.0(完全不透明)之间的浮点数。
● 影响范围:仅影响指定的颜色,不会影响子元素。
● 背景透明:可以单独设置背景色或边框色的透明度,而不影响其他部分。
主要区别
- 影响范围:
○ opacity:影响当前元素及其所有子元素的透明度。
○ rgba:仅影响指定的颜色,不影响子元素。 - 透明度控制:
○ opacity:设置整个元素的透明度,包括背景、文本和子元素。
○ rgba:仅设置颜色的透明度,可以单独控制背景色、边框色等。 - 使用场景:
○ opacity:适用于需要整体透明效果的场景,例如模态对话框的背景遮罩。
○ rgba:适用于需要单独控制颜色透明度的场景,例如半透明的背景色或边框色。
17.隐藏元素的方法有哪些?
- display:none;
a. 元素消失在页面上不占据空间 - opacity:0
a. 设置元素的透明度为0,元素不可见,占据空间位置 - visibility:hidden
a. 让元素消失,占据空间位置 - position:absolute
a. 通过定位将元素移出可视区
18.px和rem的区别
● px:是像素单位,是显示器上呈现画面的像素,是绝对单位
● rem:相对单位,相对于html根节点的font-size值的大小
body{
font-size:16rpx;
}
div{
width:5rem; // 5 * 16px
height:8rem: // 8 * 16px
}
19.重绘和重排有什么区别
1. 重排(Reflow)
● 定义:重排是指浏览器为了重新计算元素的几何属性(如位置和大小)而进行的布局过程。当页面的布局发生变化时,浏览器需要重新计算所有相关元素的位置和大小,这个过程称为重排。
● 触发原因:
○ 添加或删除可见的 DOM 元素。
○ 元素的几何属性变化(如宽度、高度、边距、填充等)。
○ 内容的变化(如文本内容、图片大小等)。
○ 浏览器窗口的大小变化。
○ 计算某些布局相关的属性(如 offsetWidth、offsetHeight、clientWidth、clientHeight 等)。
● 影响范围:重排通常会影响到整个页面或至少一部分页面,因为它涉及到了布局的重新计算。
● 性能影响:重排是一个昂贵的操作,因为它需要重新计算所有相关元素的位置和大小,尤其是当页面包含大量元素时,性能影响会更加明显。
2. 重绘(Repaint)
● 定义:重绘是指浏览器为了重新绘制元素的视觉效果而进行的过程。当元素的样式发生变化但不涉及布局时,浏览器只需要重新绘制该元素,这个过程称为重绘。
● 触发原因:
○ 元素的可见性变化(如 visibility 属性)。
○ 元素的背景颜色、文字颜色、边框颜色等视觉属性变化。
○ 元素的透明度变化。
● 影响范围:重绘通常只影响到发生样式变化的元素本身,不会影响其他元素的布局。
● 性能影响:重绘相对于重排来说成本较低,因为它不需要重新计算布局,只需重新绘制元素的视觉效果。
主要区别
- 定义:
○ 重排:重新计算元素的几何属性(位置和大小)。
○ 重绘:重新绘制元素的视觉效果。 - 触发原因:
○ 重排:涉及布局变化的操作,如添加或删除 DOM 元素、几何属性变化等。
○ 重绘:涉及视觉效果变化的操作,如背景颜色、文字颜色等。 - 影响范围:
○ 重排:通常影响整个页面或部分页面,因为需要重新计算布局。
○ 重绘:通常只影响发生样式变化的元素本身。 - 性能影响:
○ 重排:成本较高,因为需要重新计算布局。
○ 重绘:成本较低,因为只需重新绘制视觉效果。
优化建议
- 减少重排:
○ 批量修改样式:尽量将多个样式修改操作合并在一起,减少重排的次数。
○ 使用 transform 和 opacity:这些属性不会触发重排,只会触发重绘。
○ 避免频繁读取布局属性:如 offsetWidth、offsetHeight 等,这些操作会触发重排。 - 减少重绘:
○ 使用 CSS 动画:利用 CSS 动画而不是 JavaScript 动画,因为 CSS 动画可以更好地利用硬件加速。
○ 使用 will-change 属性:提前告知浏览器哪些属性会发生变化,帮助浏览器优化性能。
20.CSS3有哪些新特性
- 选择权增强
a. 伪类选择器: :nth-child()、:first-child、:last-child、:only-child 等
b. 属性选择器:如 [type=“text”],可以根据元素的属性和属性值进行选择 - 边框和背景
a. 圆角边框:border-radius
b. 盒子阴影:box-shadow
c. 边框图像:border-image
d. 渐变背景:linear-gradient() 和 radial-gradient() 函数可以创建线性渐变和径向渐变背景 - 文本效果
a. 文本阴影:text-shadow,可以为文字添加阴影效果
b. 多列布局: 使用 column-count 和 column-gap 属性可以创建多列布局
.multi-column {
column-count: 3;
column-gap: 20px;
}
- 布局
a. 弹性布局:display:flex
b. 网格布局:display:grid - 动画和过渡
a. 过渡:使用 transition 属性可以创建平滑的过渡效果
b. 动画:使用 @keyframes 和 animation 属性可以创建复杂的动画效果 - 媒体查询
a. 响应式设计:使用媒体查询可以创建响应式布局,根据不同的屏幕尺寸应用不同的样式 - 变量
a. css变量使用 --variable-name 可以定义变量,并在样式中使用 var() 函数引用变量 - 滤镜和混合模式
a. 滤镜:使用 filter 属性可以应用各种滤镜效果,如模糊、灰度、亮度等
b. 混合模式:使用 mix-blend-mode 属性可以创建混合模式效果。 - 用户界面
a. 滚动条样式:使用 ::-webkit-scrollbar 等伪元素可以自定义滚动条的样式 - 字体和文本
a. 自定义字体:使用 @font-face 可以加载自定义字体