Skip to content

<style> 标签

<style> 标签用于在 HTML 文档中定义内部 CSS 样式。它包含 CSS 代码,用于控制文档的外观和布局。

概述

<style> 标签用于在 HTML 文档中嵌入 CSS 样式规则。这些样式规则只应用于当前文档。

语法

html
<style>
  /* CSS 样式规则 */
</style>

常用属性

type 属性

指定样式表的语言类型(在 HTML5 中可选):

html
<style type="text/css">
  /* CSS 样式 */
</style>

media 属性

指定样式表适用的媒体类型:

html
<style media="screen">
  /* 屏幕样式 */
</style>

<style media="print">
  /* 打印样式 */
</style>

scoped 属性(已废弃)

曾用于将样式限制在特定元素范围内,但已被废弃:

html
<!-- 已废弃,不应使用 -->
<style scoped>
  /* 局部样式 */
</style>

基本用法

简单样式

html
<!DOCTYPE html>
<html>
<head>
  <style>
    body {
      font-family: Arial, sans-serif;
      background-color: #f0f0f0;
    }
    
    h1 {
      color: #333;
      text-align: center;
    }
    
    p {
      color: #666;
      line-height: 1.6;
    }
  </style>
</head>
<body>
  <h1>标题</h1>
  <p>这是一个段落。</p>
</body>
</html>

带媒体查询的样式

html
<!DOCTYPE html>
<html>
<head>
  <style>
    /* 默认样式 */
    .container {
      width: 100%;
      padding: 20px;
    }
    
    /* 响应式样式 */
    @media screen and (min-width: 768px) {
      .container {
        width: 750px;
        margin: 0 auto;
      }
    }
    
    @media print {
      .container {
        width: 100%;
        padding: 0;
      }
    }
  </style>
</head>
<body>
  <div class="container">
    <h1>响应式容器</h1>
    <p>这个容器在不同设备上会有不同的宽度。</p>
  </div>
</body>
</html>

选择器类型

元素选择器

html
<style>
  h1 {
    color: blue;
  }
  
  p {
    font-size: 16px;
  }
</style>

类选择器

html
<style>
  .highlight {
    background-color: yellow;
  }
  
  .button {
    padding: 10px 20px;
    background-color: #007bff;
    color: white;
    border: none;
    border-radius: 5px;
  }
</style>

ID 选择器

html
<style>
  #header {
    background-color: #333;
    color: white;
    padding: 20px;
  }
  
  #main-content {
    margin: 20px 0;
  }
</style>

属性选择器

html
<style>
  [target="_blank"] {
    color: red;
  }
  
  input[type="text"] {
    border: 1px solid #ccc;
    padding: 5px;
  }
</style>

伪类和伪元素

html
<style>
  a:hover {
    color: orange;
  }
  
  p:first-child {
    font-weight: bold;
  }
  
  .quote::before {
    content: """;
  }
  
  .quote::after {
    content: """;
  }
</style>

完整示例

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>内部样式示例</title>
  
  <style>
    /* 重置默认样式 */
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    
    /* 页面基本样式 */
    body {
      font-family: 'Roboto', Arial, sans-serif;
      line-height: 1.6;
      color: #333;
      background-color: #f4f4f4;
    }
    
    /* 容器样式 */
    .container {
      max-width: 1200px;
      margin: 0 auto;
      padding: 20px;
      background-color: white;
      box-shadow: 0 0 10px rgba(0,0,0,0.1);
    }
    
    /* 头部样式 */
    header {
      background-color: #333;
      color: white;
      padding: 1rem;
      text-align: center;
    }
    
    /* 导航样式 */
    nav {
      background-color: #444;
      padding: 0.5rem;
    }
    
    nav ul {
      list-style: none;
      display: flex;
      justify-content: center;
    }
    
    nav li {
      margin: 0 15px;
    }
    
    nav a {
      color: white;
      text-decoration: none;
      padding: 0.5rem;
      transition: background-color 0.3s;
    }
    
    nav a:hover {
      background-color: #555;
      border-radius: 3px;
    }
    
    /* 主要内容样式 */
    main {
      padding: 2rem 0;
    }
    
    h1, h2 {
      margin-bottom: 1rem;
      color: #2c3e50;
    }
    
    p {
      margin-bottom: 1rem;
    }
    
    .highlight {
      background-color: #ffffcc;
      padding: 0.5rem;
      border-left: 4px solid #ff9900;
    }
    
    /* 响应式设计 */
    @media screen and (max-width: 768px) {
      .container {
        padding: 10px;
      }
      
      nav ul {
        flex-direction: column;
        align-items: center;
      }
      
      nav li {
        margin: 5px 0;
      }
    }
    
    /* 打印样式 */
    @media print {
      body {
        background-color: white;
      }
      
      .container {
        box-shadow: none;
      }
      
      nav {
        display: none;
      }
    }
  </style>
</head>
<body>
  <div class="container">
    <header>
      <h1>网页开发教程</h1>
    </header>
    
    <nav>
      <ul>
        <li><a href="#html">HTML</a></li>
        <li><a href="#css">CSS</a></li>
        <li><a href="#javascript">JavaScript</a></li>
      </ul>
    </nav>
    
    <main>
      <h2>HTML 基础</h2>
      <p>HTML 是网页开发的基础,它定义了网页的结构。</p>
      
      <p class="highlight">这是一个高亮段落,用于强调重要信息。</p>
      
      <h2>CSS 样式</h2>
      <p>CSS 用于控制网页的外观和布局。</p>
      
      <h2>JavaScript 交互</h2>
      <p>JavaScript 为网页添加交互功能。</p>
    </main>
  </div>
</body>
</html>

与外部样式表的比较

内部样式(<style> 标签)

html
<head>
  <style>
    body {
      background-color: #f0f0f0;
    }
  </style>
</head>

优点:

  • 样式与文档一起加载
  • 适合单页应用或特定页面样式

缺点:

  • 无法在多个页面间共享
  • 增加 HTML 文件大小
  • 无法被浏览器缓存
html
<head>
  <link rel="stylesheet" href="styles.css">
</head>

优点:

  • 可在多个页面间共享
  • 可被浏览器缓存
  • 便于维护和更新

缺点:

  • 需要额外的 HTTP 请求

最佳实践

  1. 优先使用外部样式表:对于多页面网站,使用外部样式表以实现样式共享和缓存
  2. 关键 CSS 内联:将首屏渲染所需的关键 CSS 内联到 HTML 中以提高性能
  3. 避免过度使用:内部样式适用于小规模或特定页面的样式
  4. 合理组织代码:使用注释和良好的代码结构
  5. 压缩样式代码:在生产环境中压缩 CSS 代码

浏览器兼容性

<style> 标签在所有浏览器中都得到支持:

  • Chrome
  • Firefox
  • Safari
  • Edge
  • Internet Explorer

不同 CSS 特性的支持情况可能有所不同,但基本的 CSS 语法在所有浏览器中都得到良好支持。

注意事项

  1. <style> 标签必须放在 <head> 部分或 <body>
  2. 在 HTML5 中,type 属性是可选的,默认为 text/css
  3. 内部样式会覆盖外部样式表中的相同规则(除非外部样式使用了 !important
  4. 避免在内部样式中使用过多的 CSS 代码,这会增加 HTML 文件大小
  5. 内部样式无法被其他页面共享

相关标签