以下是CSS3的一些主要功能点、使用场景及对应示例:
选择器
-
基本选择器
- 标签选择器:用于选择特定标签的元素。例如,设置所有段落文字颜色为蓝色:
p { color: blue; }
。适用于对同一类型的所有元素进行统一样式设置,如页面中的全部段落都采用相同的文本颜色。 - 类选择器:针对具有特定类名的元素。比如,让类名为“red-text”的元素显示红色字体:
.red-text { color: red; }
。常用于给具有共同特征或功能的一组元素定义独特样式,像网页中多个需要突出显示的重要提示信息可以使用同一个类名来统一设置样式。 - ID选择器:选取具有特定ID的元素。若想让ID为“main-heading”的元素字体大小变为24像素:
#main-heading { font-size: 24px; }
。由于ID在页面中通常是唯一的,所以该选择器适合用于定义某个特定元素的专属样式,比如网页的主标题。
- 标签选择器:用于选择特定标签的元素。例如,设置所有段落文字颜色为蓝色:
-
伪类选择器
- :hover:当鼠标悬停在元素上时应用样式。例如,使链接在鼠标悬停时变为绿色:
a:hover { color: green; }
。常见于交互元素,增强用户体验,让用户清楚知道哪些元素可点击。 - :active:元素被激活(如按钮被按下)时的样式。比如,按钮被点击时背景色变为灰色:
button:active { background-color: gray; }
。用于提供视觉反馈,表明用户的操作已被接收。
- :hover:当鼠标悬停在元素上时应用样式。例如,使链接在鼠标悬停时变为绿色:
-
伪元素选择器
- ::before和::after:在元素前后插入内容。例如,在每个段落前添加一个红色的圆点符号:
p::before { content: "• "; color: red; }
。可用于装饰文本、添加图标等,丰富页面视觉效果。
- ::before和::after:在元素前后插入内容。例如,在每个段落前添加一个红色的圆点符号:
颜色和字体
-
颜色格式
- RGBA:支持透明度设置。例如,设置页面背景为半透明的白色:
body { background-color: rgba(255, 255, 255, 0.8); }
。常用于创建透明效果,使下层内容能够部分透出,增加层次感。 - HSLA:基于色相、饱和度和亮度的颜色表示。比如,设置一个带有透明度的亮绿色文字:
div { color: hsla(120, 100%, 50%, 0.5); }
。更适合精确调整颜色的色彩属性。
- RGBA:支持透明度设置。例如,设置页面背景为半透明的白色:
-
Web字体:使用
@font-face
引入自定义字体。先定义字体族及其来源文件,然后在页面中使用该字体。例如:
@font-face {
font-family: 'MyFont';
src: url('path/to/font.woff') format('woff');
}
body {
font-family: 'MyFont', sans-serif;
}
这允许设计师突破系统默认字体的限制,使用个性化的字体来提升品牌形象和设计感。
边框和背景
-
圆角边框:通过
border-radius
属性实现元素的圆角效果。例如,创建一个带有圆角的矩形框:div { border: 2px solid blue; border-radius: 10px; }
。可以使原本生硬的矩形边框变得柔和圆润,常用于卡片、按钮等元素的设计。 -
渐变背景
- 线性渐变:如设置页面主体背景从红色到黄色的水平渐变:
body { background-image: linear-gradient(to right, red, yellow); }
。能营造出丰富的色彩过渡效果,吸引用户注意力。 - 径向渐变:以圆形为中心向外扩散的渐变效果。例如,创建一个从白色到浅灰色的圆形渐变背景:
.radial-gradient { background: radial-gradient(circle, #ffffff, #f0f0f0, #e0e0e0); }
。可用于模拟光源照射、球体等效果。
- 线性渐变:如设置页面主体背景从红色到黄色的水平渐变:
动画和过渡
- 过渡效果(transition):实现元素从一种样式平滑过渡到另一种样式。例如,当鼠标悬停在按钮上时,按钮的背景色和大小发生变化:
.button {
background-color: #3498db;
color: white;
padding: 10px 20px;
border: none;
border-radius: 4px;
transition: all 0.3s ease 0s;
}
.button:hover {
background-color: #2980b9;
transform: scale(1.05);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
适用于简单的交互效果,如按钮的高亮、菜单项的展开等,让页面变化更加自然流畅。
2. 关键帧动画(animation)
- 淡入滑动效果:定义动画的关键帧,使元素从透明且向下偏移的位置逐渐变为完全不透明并回到原始位置。例如:
@keyframes fadeInSlide {
0% { opacity: 0; transform: translateY(20px); }
100% { opacity: 1; transform: translateY(0); }
}
.card {
animation: fadeInSlide 0.5s ease-out 0s 1 normal;
opacity: 0; /* 初始状态 */
}
常用于页面加载时的动态展示,吸引用户关注重要内容。
- 无限旋转动画:让元素持续旋转。例如,创建一个加载指示器:
.loader {
width: 40px;
height: 40px;
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
可用于表示系统正在处理任务,提醒用户等待。
布局革新
-
Flexbox弹性布局
- 容器属性:将父容器设置为弹性布局,如
.container { display: flex; justify-content: space-between; }
。适用于导航栏、横向卡片列表、垂直居中等一维布局场景,能够自动调整子元素的排列方式和空间分配。 - 项目属性:设置子元素的伸缩比例等。例如,让子元素等比例伸缩:
.item { flex: 1; }
。方便实现响应式的布局,适应不同屏幕尺寸。
- 容器属性:将父容器设置为弹性布局,如
-
Grid网格布局
- 二维网格定义:创建二维的网格系统,如
.grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
。常用于网页主结构布局、图片墙、表格替代等,可以精确控制行列的数量、间距以及每个网格项的位置。 - 跨行/列设置:指定某些网格项跨越多行或多列。例如,让某个网格项跨越两列:
.item-2 { grid-column: span 2; }
。有助于构建复杂的页面结构。
- 二维网格定义:创建二维的网格系统,如
文本效果
-
文本阴影:为文本添加阴影效果,增加立体感和层次感。例如,给标题添加阴影:
h1 { text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7); }
。可使文字在页面上更加突出。 -
首字母样式:放大段落的第一个字母。例如,
p::first-letter { font-size: 2em; }
。常用于文章开头,起到装饰作用。
盒模型相关属性
-
box-sizing:定义如何计算元素的总宽度和总高度。
box-sizing: content-box;
表示宽度和高度只包括内容区(默认行为);box-sizing: border-box;
则包括内容区、边框和内边距。后者在布局时更方便控制元素的实际占用空间。 -
resize:指定元素是否可由用户调整大小。例如,允许用户调整一个可编辑区域的大小:
.resizable { width: 300px; height: 200px; border: 1px solid #000; resize: both; overflow: auto; }
。但要注意与其他属性的配合使用,以确保良好的用户体验。 -
outline:绘制于元素周围的一条线,用于表示元素已获取焦点或处于活动状态。与边框不同,轮廓不占用空间。例如,为输入框设置轮廓并在其获取焦点时改变颜色:
.outline-demo {
width: 100px;
height: 100px;
border: 2px solid #000;
outline: 5px solid #0f0;
outline-offset: 10px;
}
.outline-demo:focus {
outline-color: #00f;
}
媒体查询(Media Query)
-
响应式设计:根据屏幕大小或设备类型自动调整布局和样式。例如,当屏幕宽度小于等于600px时改变背景颜色:
@media screen and (max-width: 600px) { body { background-color: lightblue; } }
。这是实现响应式网页的关键,确保网站在不同设备上都能良好显示。 -
打印样式:为打印文档提供不同的样式。例如,定义打印时的纸张背景颜色、字体大小和页码分割:
@media print { body { background-color: white; font-size: 12pt; } h1 { page-break-before: always; } }
。保证打印出来的文档格式正确、美观。 -
语音合成:为语音合成器提供适当的样式,以提高无障碍访问体验。例如,在语音合成器播放时隐藏所有的图片:
@media speech { img { display: none; } }
。考虑到特殊用户群体的需求。
CSS自定义属性(变量)
语法为--color-primary: #f00;
,使用时通过color: var(--color-primary);
引用。用途包括主题切换、模块化样式、统一管理等。例如,定义一组颜色变量,方便在整个项目中统一修改主题色:
:root {
--primary-color: #3498db;
--secondary-color: #2ecc71;
}
.button {
background-color: var(--primary-color);
color: white;
}
这样只需修改变量的值,就能快速改变整个页面的颜色风格。
滤镜效果(filter)
用途是图像处理,如模糊、灰度、对比度等。例如,将图像转换为灰度:img { filter: grayscale(100%); }
。还可以实现图片悬停时的灰度到彩色效果:
.image {
transition: filter 0.5s ease;
}
.image:hover {
filter: grayscale(0%);
}
常用于图片展示、相册等场景,增加交互性和趣味性。
backdrop-filter
用途是模糊背景内容,实现半透明玻璃效果。例如,创建毛玻璃UI效果:.glass { backdrop-filter: blur(10px); background-color: rgba(255, 255, 255, 0.3); }
。适用于模态框背景、对话框等,提升设计的现代感和时尚感。
clip-path
用途是遮罩裁剪图形。例如,将元素裁剪为圆形:.circle { clip-path: circle(50% at 50% 50%); }
。可用于创建各种形状的独特元素,如圆形按钮、不规则的图片形状等。
scroll-behavior: smooth
用途是平滑滚动,用于锚点跳转等场景。例如,当点击链接跳转到页面内的某个位置时,页面会平滑滚动到该位置,而不是瞬间跳转,提升了用户体验。
:has()选择器
用途是父元素根据子元素状态变化。例如,如果文章中包含二级标题,则给文章添加左边框:article :has(h2) { border-left: 4px solid green; }
。可以在不使用JavaScript的情况下实现一些复杂的交互效果。