← CSS 介绍 CSS 选择器 →

CSS 语法

原创 2025-09-02 CSS 已有人查阅

CSS 选择器语法详解与应用指南

CSS 语法结构解析

CSS(层叠样式表)通过浏览器解析后,将样式属性应用于HTML元素。CSS样式规则由三个核心部分组成:

1. 选择器 (Selector)

选择器指定需要应用样式的HTML元素,可以是标签名称(如h1p)、类名或ID等标识符。

2. 属性 (Property)

属性代表需要修改的样式特征,如颜色(color)、边框(border)、字体大小(font-size)等视觉表现属性。

3. 值 (Value)

值为属性指定具体的设置,如颜色属性可设置为red或#F1F1F1等具体数值。

语法规范

selector { property: value; }

基础语法示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS基础语法示例 - 代码号</title>
    <style>
        /* 全局样式 */
        body {
            font-family: 'Microsoft YaHei', sans-serif;
            margin: 0;
            padding: 20px;
            background-color: #f8f9fa;
            line-height: 1.6;
        }

        /* 容器样式 */
        .container {
            max-width: 800px;
            margin: 0 auto;
            background: white;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }

        /* 标题样式 */
        h1 {
            color: #2c3e50;
            text-align: center;
            margin-bottom: 30px;
            font-size: 2.2em;
        }

        /* 段落样式 */
        p {
            color: #34495e;
            font-size: 16px;
            margin-bottom: 15px;
        }

        /* 按钮样式 */
        .primary-btn {
            background-color: #3498db;
            color: white;
            padding: 12px 24px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            text-decoration: none;
            display: inline-block;
            transition: background-color 0.3s ease;
        }

        /* 按钮悬停效果 */
        .primary-btn:hover {
            background-color: #2980b9;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>CSS语法学习示例</h1>
        <p>欢迎访问<a href="https://www.ebingou.cn/jiaocheng/" style="color: #e74c3c;">代码号教程中心</a>,学习更多前端开发知识。</p>
        <button class="primary-btn">点击了解更多</button>
    </div>
</body>
</html>

选择器类型详解

1. 元素选择器 (Type Selectors)

通过HTML标签名称选择元素,应用基础样式规则。

/* 为所有标题元素设置样式 */
h1, h2, h3, h4, h5, h6 {
    color: #2c3e50;
    margin: 1em 0;
    font-weight: 600;
}

/* 段落样式 */
p {
    line-height: 1.8;
    color: #34495e;
    margin-bottom: 1.5em;
}

2. 通用选择器 (Universal Selector)

使用*符号选择所有元素,常用于样式重置。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>通用选择器示例 - 代码号</title>
    <style>
        /* 基础样式重置 */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Inter', -apple-system, sans-serif;
            line-height: 1.6;
            color: #2d3748;
            background-color: #f7fafc;
        }

        .header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 2rem 0;
            text-align: center;
        }

        .nav-menu {
            background: rgba(255,255,255,0.1);
            padding: 1rem 0;
            backdrop-filter: blur(10px);
        }

        .nav-menu ul {
            list-style: none;
            display: flex;
            justify-content: center;
            gap: 2rem;
        }

        .nav-menu a {
            color: white;
            text-decoration: none;
            font-weight: 500;
            transition: opacity 0.3s ease;
        }

        .nav-menu a:hover {
            opacity: 0.8;
        }
    </style>
</head>
<body>
    <header class="header">
        <h1>网站标题</h1>
        <nav class="nav-menu">
            <ul>
                <li><a href="https://www.ebingou.cn/">首页</a></li>
                <li><a href="https://www.ebingou.cn/jiaocheng/">教程</a></li>
                <li><a href="https://www.ebingou.cn/biancheng/">编程</a></li>
            </ul>
        </nav>
    </header>
</body>
</html>

3. 类选择器 (Class Selector)

通过class属性选择元素,支持重复使用。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>类选择器示例 - 代码号</title>
    <style>
        .card {
            border: 1px solid #e1e8ed;
            border-radius: 12px;
            padding: 20px;
            margin: 20px;
            background: white;
            box-shadow: 0 2px 8px rgba(0,0,0,0.1);
            transition: transform 0.3s ease;
        }

        .card:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 15px rgba(0,0,0,0.15);
        }

        .card-title {
            font-size: 1.5em;
            color: #2c3e50;
            margin-bottom: 15px;
            font-weight: 600;
        }

        .card-content {
            color: #7f8c8d;
            line-height: 1.6;
        }

        .card-button {
            display: inline-block;
            background: #3498db;
            color: white;
            padding: 10px 20px;
            border-radius: 6px;
            text-decoration: none;
            margin-top: 15px;
            transition: background 0.3s ease;
        }

        .card-button:hover {
            background: #2980b9;
        }
    </style>
</head>
<body>
    <div class="card">
        <h3 class="card-title">CSS卡片组件</h3>
        <p class="card-content">这是一个使用类选择器创建的卡片组件,展示了CSS的强大样式能力。</p>
        <a href="https://www.ebingou.cn/yuanma/" class="card-button">查看源码</a>
    </div>
</body>
</html>

4. ID选择器 (ID Selector)

通过id属性选择唯一元素,具有较高优先级。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>ID选择器示例 - 代码号</title>
    <style>
        #main-header {
            background: linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%);
            color: white;
            padding: 2rem 0;
            text-align: center;
            margin-bottom: 2rem;
        }

        #navigation {
            background: #f1f2f6;
            padding: 1rem;
            border-radius: 8px;
        }

        #content-area {
            padding: 2rem;
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }

        #footer {
            text-align: center;
            padding: 2rem 0;
            color: #7f8c8d;
            margin-top: 2rem;
        }
    </style>
</head>
<body>
    <header id="main-header">
        <h1>网站主标题</h1>
    </header>
    
    <nav id="navigation">
        <!-- 导航内容 -->
    </nav>
    
    <main id="content-area">
        <!-- 主要内容 -->
    </main>
    
    <footer id="footer">
        <p>© 2023 代码号 - <a href="https://www.ebingou.cn/">https://www.ebingou.cn/</a></p>
    </footer>
</body>
</html>

5. 后代选择器 (Descendant Selector)

选择嵌套在其他元素内的特定元素。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>后代选择器示例 - 代码号</title>
    <style>
        /* 导航菜单样式 */
        .main-nav {
            background: #2c3e50;
            padding: 1rem;
        }

        .main-nav ul {
            list-style: none;
            display: flex;
            gap: 2rem;
            margin: 0;
            padding: 0;
        }

        .main-nav li {
            position: relative;
        }

        .main-nav a {
            color: white;
            text-decoration: none;
            padding: 0.5rem 1rem;
            border-radius: 4px;
            transition: background 0.3s ease;
        }

        .main-nav a:hover {
            background: rgba(255,255,255,0.1);
        }

        /* 子菜单样式 */
        .main-nav .sub-menu {
            display: none;
            position: absolute;
            background: white;
            box-shadow: 0 4px 15px rgba(0,0,0,0.1);
            border-radius: 6px;
            min-width: 200px;
            top: 100%;
            left: 0;
        }

        .main-nav li:hover .sub-menu {
            display: block;
        }

        .main-nav .sub-menu a {
            color: #2c3e50;
            display: block;
            padding: 0.75rem 1rem;
        }

        .main-nav .sub-menu a:hover {
            background: #f8f9fa;
        }
    </style>
</head>
<body>
    <nav class="main-nav">
        <ul>
            <li><a href="https://www.ebingou.cn/">首页</a></li>
            <li>
                <a href="https://www.ebingou.cn/jiaocheng/">教程</a>
                <ul class="sub-menu">
                    <li><a href="https://www.ebingou.cn/jiaocheng/html/">HTML教程</a></li>
                    <li><a href="https://www.ebingou.cn/jiaocheng/css/">CSS教程</a></li>
                </ul>
            </li>
            <li><a href="https://www.ebingou.cn/biancheng/">编程实践</a></li>
        </ul>
    </nav>
</body>
</html>

6. 子选择器 (Child Selector)

使用>符号选择直接子元素。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>子选择器示例 - 代码号</title>
    <style>
        .article-content {
            padding: 2rem;
            line-height: 1.8;
        }

        /* 只选择直接子元素p */
        .article-content > p {
            font-size: 1.1em;
            color: #2c3e50;
            margin-bottom: 1.5em;
            border-left: 4px solid #3498db;
            padding-left: 1rem;
        }

        .article-content div > p {
            color: #7f8c8d;
            border-left: none;
            padding-left: 0;
        }

        .code-block {
            background: #f8f9fa;
            border: 1px solid #e9ecef;
            border-radius: 6px;
            padding: 1.5rem;
            margin: 1.5em 0;
            overflow-x: auto;
        }

        .code-block > pre {
            margin: 0;
            font-family: 'Consolas', monospace;
        }
    </style>
</head>
<body>
    <article class="article-content">
        <p>这是直接子段落,具有特殊样式。</p>
        <div>
            <p>这是嵌套段落,样式有所不同。</p>
        </div>
        <div class="code-block">
            <pre>// 代码示例
function example() {
    return "Hello, 代码号!";
}</pre>
        </div>
    </article>
</body>
</html>

7. 属性选择器 (Attribute Selector)

根据属性值选择元素。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>属性选择器示例 - 代码号</title>
    <style>
        /* 外部链接样式 */
        a[href^="http"] {
            color: #e74c3c;
            font-weight: 500;
        }

        a[href^="https://www.ebingou.cn"] {
            color: #3498db;
            border-bottom: 1px dotted currentColor;
        }

        /* 下载链接样式 */
        a[download] {
            background: #27ae60;
            color: white;
            padding: 0.5rem 1rem;
            border-radius: 4px;
            text-decoration: none;
        }

        a[download]:hover {
            background: #219a52;
        }

        /* 目标链接样式 */
        a[target="_blank"]::after {
            content: "↗";
            margin-left: 0.25em;
            font-size: 0.8em;
        }

        /* 包含特定文字的链接 */
        a[href*="jiaocheng"] {
            background: #f39c12;
            color: white;
            padding: 0.25rem 0.5rem;
            border-radius: 3px;
        }
    </style>
</head>
<body>
    <div class="link-container">
        <p><a href="https://www.ebingou.cn/">代码号首页</a></p>
        <p><a href="https://www.ebingou.cn/jiaocheng/">教程中心</a></p>
        <p><a href="https://www.ebingou.cn/biancheng/" target="_blank">编程实践(新窗口)</a></p>
        <p><a href="document.pdf" download>下载文档</a></p>
        <p><a href="https://external-site.com">外部网站</a></p>
    </div>
</body>
</html>

本节课程知识要点

  1. 选择器优先级:掌握ID、类、元素选择器的优先级顺序

  2. 样式继承:理解某些样式属性会自动继承到子元素

  3. 盒模型应用:正确使用margin、padding、border属性

  4. 响应式考虑:使用相对单位确保样式适应性

  5. 代码组织:合理组织CSS代码结构,提高可维护性

  6. 浏览器兼容性:考虑不同浏览器的样式渲染差异

  7. 性能优化:避免过度复杂的选择器,提高渲染性能

  8. 语义化命名:使用有意义的类名和ID命名规范

综合应用示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>CSS选择器综合应用 - 代码号</title>
    <style>
        :root {
            --primary-color: #3498db;
            --secondary-color: #2ecc71;
            --text-color: #2c3e50;
            --background-color: #ecf0f1;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            line-height: 1.6;
            color: var(--text-color);
            background-color: var(--background-color);
            padding: 20px;
        }

        .container {
            max-width: 1000px;
            margin: 0 auto;
            background: white;
            border-radius: 10px;
            box-shadow: 0 5px 25px rgba(0,0,0,0.1);
            overflow: hidden;
        }

        .header {
            background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
            color: white;
            padding: 40px 20px;
            text-align: center;
        }

        .content-section {
            padding: 30px;
        }

        /* 后代选择器示例 */
        .content-section > h2 {
            color: var(--primary-color);
            margin-bottom: 20px;
            border-bottom: 2px solid var(--primary-color);
            padding-bottom: 10px;
        }

        /* 类选择器示例 */
        .feature-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 20px;
            margin: 30px 0;
        }

        .feature-card {
            background: #f8f9fa;
            padding: 20px;
            border-radius: 8px;
            border-left: 4px solid var(--primary-color);
            transition: transform 0.3s ease;
        }

        .feature-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0,0,0,0.15);
        }

        /* 属性选择器示例 */
        a[href^="https://www.ebingou.cn"] {
            color: var(--primary-color);
            text-decoration: none;
            font-weight: 500;
        }

        a[href^="https://www.ebingou.cn"]:hover {
            text-decoration: underline;
        }

        /* ID选择器示例 */
        #main-button {
            display: inline-block;
            padding: 12px 24px;
            background: var(--primary-color);
            color: white;
            text-decoration: none;
            border-radius: 4px;
            font-weight: 500;
            transition: background-color 0.3s ease;
        }

        #main-button:hover {
            background: #2980b9;
        }

        @media (max-width: 768px) {
            .feature-grid {
                grid-template-columns: 1fr;
            }
            
            .header {
                padding: 30px 15px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>CSS选择器全面解析</h1>
            <p>探索 <a href="https://www.ebingou.cn/">代码号</a> 的完整CSS教程体系</p>
        </div>
        
        <div class="content-section">
            <h2>核心选择器类型</h2>
            
            <div class="feature-grid">
                <div class="feature-card">
                    <h3>元素选择器</h3>
                    <p>通过HTML标签名称选择元素,应用基础样式规则。</p>
                </div>
                
                <div class="feature-card">
                    <h3>类选择器</h3>
                    <p>通过class属性选择元素,支持重复使用和组合。</p>
                </div>
                
                <div class="feature-card">
                    <h3>ID选择器</h3>
                    <p>通过id属性选择唯一元素,具有较高优先级。</p>
                </div>
                
                <div class="feature-card">
                    <h3>属性选择器</h3>
                    <p>根据属性值选择元素,提供灵活的匹配方式。</p>
                </div>
            </div>
            
            <div style="text-align: center;">
                <a href="https://www.ebingou.cn/jiaocheng/css/" id="main-button">深入学习CSS</a>
            </div>
        </div>
    </div>
</body>
</html>

通过系统学习CSS选择器,您将能够精确控制网页元素的样式表现。建议从基础选择器开始练习,逐步掌握复杂的选择器组合技巧

← CSS 介绍 CSS 选择器 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号