CMS

WEB前端-CSS篇

CSS3 新增属性

1. 选择器(Selectors)

CSS3 新增了许多强大的选择器,可以更精确地匹配元素。

选择器 示例 描述
属性选择器 input[type="text"] 匹配具有特定属性的元素
结构伪类 :nth-child(n) 匹配第 n 个子元素
:first-of-type 匹配同类型的第一个元素
:last-child 匹配最后一个子元素
:not(selector) 排除匹配的元素
UI 伪类 :checked 匹配被选中的表单元素(如复选框)
:disabled 匹配禁用的表单元素
:enabled 匹配可用的表单元素
目标伪类 :target 匹配当前 URL 的锚点目标元素

2. 盒模型(Box Model)

CSS3 提供了更灵活的盒模型控制方式。

属性 描述
box-sizing: border-box 使 widthheight 包含 paddingborder
resize 允许用户调整元素大小(bothhorizontalvertical
outline-offset 设置轮廓(outline)与边框的偏移距离

3. 背景与边框(Background & Border)

CSS3 增强了背景和边框的样式控制。

背景(Background)

属性 描述
background-size 控制背景图片大小(covercontain100% 100%
background-clip 定义背景绘制区域(border-boxpadding-boxcontent-box
background-origin 定义背景定位的基准区域
background-attachment: local 背景随内容滚动
background: url(img1.png), url(img2.png); 多背景

边框(Border)

属性 描述
border-radius 圆角边框(border-radius: 10px;
box-shadow 盒子阴影(box-shadow: 5px 5px 10px #888;
border-image 使用图片作为边框(border-image: url(border.png) 30 round;

4. 渐变(Gradients)

CSS3 支持线性渐变和径向渐变。

类型 示例 描述
线性渐变 background: linear-gradient(to right, red, blue); 从左到右渐变
径向渐变 background: radial-gradient(circle, red, yellow); 从中心向外渐变
重复渐变 background: repeating-linear-gradient(45deg, red, red 10px, blue 10px, blue 20px); 重复渐变

5. 过渡(Transitions)

CSS3 过渡允许属性在一定时间内平滑变化。

属性 描述
transition-property 指定过渡的属性(如 widthopacity
transition-duration 过渡持续时间(如 1s
transition-timing-function 过渡速度曲线(easelinearcubic-bezier()
transition-delay 过渡延迟时间
简写 transition: width 1s ease 0.5s;

6. 动画(Animations)

CSS3 动画比过渡更强大,支持关键帧控制。

属性 描述
@keyframes 定义动画关键帧
animation-name 指定动画名称
animation-duration 动画持续时间
animation-timing-function 动画速度曲线
animation-delay 动画延迟时间
animation-iteration-count 动画播放次数(infinite 表示无限循环)
animation-direction 动画方向(normalreversealternate
animation-fill-mode 动画结束后保持状态(forwardsbackwards
简写 animation: move 2s ease infinite;

示例:

@keyframes move {
  0% { transform: translateX(0); }
  100% { transform: translateX(100px); }
}
div {
  animation: move 2s ease infinite;
}

7. 变形(Transforms)

CSS3 变形允许对元素进行 2D/3D 变换。

2D 变形:

属性 描述
transform: translate(x, y) 移动元素
transform: rotate(45deg) 旋转元素
transform: scale(1.5) 缩放元素
transform: skew(30deg) 倾斜元素
组合变换 transform: rotate(45deg) scale(1.2);

3D 变形:

属性 描述
transform: translate3d(x, y, z) 3D 移动
transform: rotateX(45deg) 绕 X 轴旋转
transform: perspective(500px) 设置 3D 透视距离

8. 弹性布局(Flexbox)

CSS3 Flexbox 提供更灵活的布局方式。

属性 描述
display: flex 启用 Flex 布局
flex-direction 主轴方向(rowcolumn
justify-content 主轴对齐方式(centerspace-between
align-items 交叉轴对齐方式(centerstretch
flex-wrap 是否换行(wrapnowrap
flex-grow 定义项目的放大比例
flex-shrink 定义项目的缩小比例
flex-basis 定义项目的初始大小

9. 网格布局(Grid)

CSS3 Grid 提供二维布局系统。

属性 描述
display: grid 启用 Grid 布局
grid-template-columns 定义列宽(如 1fr 2fr
grid-template-rows 定义行高
grid-gap 定义行列间距
grid-column / grid-row 定义项目占据的网格区域
<!DOCTYPE html>
<html>
<head>
    <style>
        .grid-container {
            display: grid;
            grid-template-columns: 100px 200px auto; /* 三列:固定100px,固定200px,剩余空间 */
            gap: 10px;
            background-color: #2196F3;
            padding: 10px;
        }

        .grid-item {
            background-color: rgba(255, 255, 255, 0.8);
            border: 1px solid rgba(0, 0, 0, 0.8);
            padding: 20px;
            font-size: 30px;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="grid-container">
        <div class="grid-item">1</div>
        <div class="grid-item">2</div>
        <div class="grid-item">3</div>  
        <div class="grid-item">4</div>
        <div class="grid-item">5</div>
        <div class="grid-item">6</div>  
        <div class="grid-item">7</div>
        <div class="grid-item">8</div>
        <div class="grid-item">9</div>  
    </div>
</body>
</html>

10. 媒体查询(Media Queries)

CSS3 媒体查询允许针对不同设备应用不同样式。

/* 屏幕宽度小于 600px 时生效 */
@media (max-width: 600px) {
  body { background: lightblue; }
}

BEM 命名规范

BEM(Block-Element-Modifier)是一种流行的 CSS 命名方法论,旨在提高代码可读性、可维护性和可复用性。其核心思想是通过模块化的方式组织 CSS 类名,避免样式冲突。

1. BEM 基本结构

BEM 将界面拆分为三个部分: 部分 描述 示例
Block 独立的、可复用的组件(如按钮、卡片、导航栏)。 .btn.card
Element 属于 Block 的子元素,不能单独使用(如按钮的图标、卡片的标题)。 .btn__icon.card__title
Modifier 表示 Block 或 Element 的状态或变体(如禁用按钮、大号卡片)。 .btn--disabled.card--large

2. 命名规则

(1) Block(块)
  • 使用单一单词短横线连接-)的命名方式。
  • 代表一个独立的组件,不依赖其他元素。
.header { ... }       /* 页眉 */
.menu { ... }         /* 菜单 */
.search-box { ... }   /* 搜索框 */
(2) Element(元素)
  • 格式:Block名称__Element名称双下划线 __ 连接)。
  • 表示属于 Block 的一部分,不能脱离 Block 使用。
.menu__item { ... }          /* 菜单项 */
.search-box__input { ... }   /* 搜索框的输入框 */
.card__title { ... }         /* 卡片的标题 */
(3) Modifier(修饰符)
  • 格式:Block--ModifierBlock__Element--Modifier双短横线 -- 连接)。
  • 表示 Block 或 Element 的不同状态或样式变体。
.button--primary { ... }     /* 主要按钮 */
.button--disabled { ... }    /* 禁用按钮 */
.menu__item--active { ... }  /* 当前选中的菜单项 */

3. 实际代码示例

HTML 结构

<!-- Block: card -->
<div class="card card--highlight">
  <!-- Element: card 的子元素 -->
  <h2 class="card__title">标题</h2>
  <p class="card__content">内容...</p>
  <!-- 带 Modifier 的 Element -->
  <button class="card__button card__button--large">点击</button>
</div>

CSS 样式

/* Block */
.card { 
  border: 1px solid #ccc;
  padding: 16px;
}

/* Modifier: 高亮卡片 */
.card--highlight {
  background: #f5f5f5;
}

/* Element: 卡片标题 */
.card__title {
  font-size: 18px;
  color: #333;
}

/* Element: 卡片按钮 */
.card__button {
  padding: 8px 16px;
}

/* Modifier: 大号按钮 */
.card__button--large {
  padding: 12px 24px;
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注