CSS笔记
CSS(Cascading Style Sheets,层叠样式表)是用于描述HTML或XML(包括如SVG, MathML等XML语言)文档外观和格式的样式表语言。通过CSS,开发者可以控制网页的布局、颜色、字体和其他视觉特性。以下是一些CSS的基本概念和示例代码。
1. 基本语法
CSS规则由两个主要部分组成:选择器(Selector)和声明块(Declaration Block)。
css复制代码
selector {property: value;
property: value;
...
}
- 选择器(Selector) :用于选择要应用样式的HTML元素。
- 声明块(Declaration Block) :包含一组声明,每个声明由一个属性和值组成,它们用冒号分隔,并以分号结束。
2. 选择器类型
-
元素选择器(Type Selector) :选择所有特定类型的HTML元素。
css复制代码 p { color: blue; } -
类选择器(Class Selector) :选择具有特定类属性的HTML元素。
css复制代码 .myClass { font-size: 20px; } -
ID选择器(ID Selector) :选择具有特定ID属性的HTML元素。
css复制代码 #myId { background-color: yellow; } -
属性选择器(Attribute Selector) :选择具有特定属性的HTML元素。
css复制代码 a[target="_blank"] { color: red; } -
伪类选择器(Pseudo-class Selector) :选择元素的特定状态。
css复制代码 a:hover { text-decoration: underline; } -
伪元素选择器(Pseudo-element Selector) :选择元素的一部分内容。
css复制代码 p::first-line { font-weight: bold; }
3. 盒子模型(Box Model)
CSS盒子模型描述了HTML元素的空间和布局。每个元素都被表示为一个矩形盒子,由内容(content)、内边距(padding)、边框(border)和外边距(margin)组成。
css复制代码
div {
width: 200px;
padding: 10px;
border: 5px solid black;
margin: 20px;
}
4. 响应式设计(Responsive Design)
响应式设计是指网页能够在不同设备和屏幕尺寸上良好显示。使用媒体查询(Media Queries)可以实现这一点。
css复制代码
/* 默认样式 */
body {
font-size: 16px;
}
/* 平板电脑上的样式 */
@media (min-width: 600px) {
body {
font-size: 18px;
}
}
/* 桌面电脑上的样式 */
@media (min-width: 1000px) {
body {
font-size: 20px;
}
}
5. Flexbox 和 Grid 布局
-
Flexbox:用于一维布局,可以很方便地实现水平或垂直方向的对齐和分布。
css复制代码 .container { display: flex; justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ } -
Grid:用于二维布局,可以创建复杂的网格布局系统。
css复制代码 .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); /* 三列,每列等分 */ grid-gap: 10px; }
6. 动画(Animations)
CSS动画允许你创建平滑的过渡效果。
css复制代码
/* 定义动画关键帧 */
@keyframes example {
from {background-color: red;}
to {background-color: yellow;}
}
/* 应用动画 */
div {
animation-name: example;
animation-duration: 4s;
}
7. 导入和链接外部样式表
可以通过<link>标签在HTML中链接外部CSS文件,或使用@import规则在CSS文件中导入其他CSS文件。
-
链接外部样式表:
html复制代码 <link rel="stylesheet" type="text/css" href="styles.css"> -
导入外部样式表:
css复制代码 @import url('styles.css');
示例代码
以下是一个完整的HTML和CSS示例,展示如何应用上述一些概念。
HTML:
html复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Example</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
</div>
</body>
</html>
CSS (styles.css) :
css复制代码
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
.container {
display: flex;
justify-content: space-around;
flex-wrap: wrap;
background-color: #f0f0f0;
padding: 20px;
}
.item {
background-color: #4CAF50;
color: white;
padding: 20px;
margin: 10px;
border-radius: 5px;
flex: 1 1 200px; /* Flex grow, shrink, basis */
text-align: center;
transition: background-color 0.3s ease;
}
.item:hover {
background-color: #45a049;
}
@media (max-width: 600px) {
.item {
flex: 1 1 100%; /* 在小屏幕上每行一个元素 */
}
}
这个示例展示了如何使用Flexbox进行布局,以及如何使用媒体查询实现响应式设计。通过CSS,我们可以非常灵活地控制网页的外观和布局。