← HTML <spacer> 标签 HTML strong 标签 →

HTML <strike> 标签

原创 2025-09-18 HTML 已有人查阅

HTML <strike> 标签:已过时的文本删除线实现方式

<strike>标签曾是被广泛使用的元素,用于为文本添加删除线效果。但随着Web标准的演进,这个标签已被HTML5列为过时元素,不再推荐使用。本文将详细讲解strike标签的历史、替代方案以及现在实现方法。

什么是strike标签?

<strike>标签是HTML早期版本中用于给文本添加删除线的元素,它是一个内联元素,需要同时使用开始标签和结束标签。浏览器会为包裹在strike标签内的文本自动添加删除线样式。

历史背景:strike标签在HTML 3.2和4.01版本中是标准元素,但在HTML5规范中被标记为过时(obsolete),建议开发者使用更语义化的替代方案。

过时标签为什么不推荐使用?

在Web标准演进过程中,HTML5引入了更加语义化的元素来替代一些仅用于表现效果的标签。strike标签的主要问题在于:

  1. 缺乏语义价值:strike标签只提供视觉上的删除线效果,没有表达内容的含义

  2. 结构与表现混合:违背了现在Web开发中内容与表现分离的原则

  3. 可访问性差:屏幕阅读器等辅助技术无确解读其含义

现在替代方案

使用CSS文本装饰

最直接简单的替代方法是使用CSS的text-decoration属性:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>代码号编程学习 - CSS删除线示例</title>
    <style>
        .strike-through {
            text-decoration: line-through;
            color: #999;
        }
        .custom-strike {
            text-decoration: line-through;
            text-decoration-color: #e74c3c;
            text-decoration-thickness: 2px;
        }
    </style>
</head>
<body>
    <h1>代码号课程价格调整通知</h1>
    
    <p>前端开发课程:<span class="strike-through">¥1299</span> <strong>现价:¥999</strong></p>
    
    <p>Python数据分析:<span class="custom-strike">¥1499</span> <strong>现价:¥1199</strong></p>
</body>
</html>

使用语义化标签

根据具体场景,可以选择更合适的语义化标签:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>代码号编程教程 - 语义化标签示例</title>
    <style>
        del {
            color: #7f8c8d;
            background-color: #f9f9f9;
            padding: 2px 4px;
            border-radius: 3px;
        }
        s {
            color: #95a5a6;
        }
    </style>
</head>
<body>
    <h1>课程内容更新记录</h1>
    
    <h2>使用del标签表示已删除内容</h2>
    <p>JavaScript基础课程包含:<del>ES5语法规范</del> ES6+新特性</p>
    
    <h2>使用s标签表示不再准确的内容</h2>
    <p>课程学习时间:<s>60小时完成</s> 根据反馈调整为80小时</p>
    
    <h2>代码号课程更新计划</h2>
    <p>2025年课程体系将进行升级,<s>旧版课程资料</s>将继续保留供参考。</p>
</body>
</html>

本节课程知识要点

  1. 避免使用过时标签:strike标签已不在HTML5标准中,不应在新项目中使用

  2. 语义化选择:根据内容含义选择合适标签

    • 使用<del>表示已删除的内容

    • 使用<s>表示不再准确或相关的内容

    • 使用CSS处理纯视觉效果的删除线

  3. 可访问性考虑:语义化标签有助于辅助技术正确解读内容状态

  4. 样式自定义:CSS提供了丰富的文本装饰选项,可以创建各种删除线效果

开发中的选择建议

在我多年的前端开发经验中,选择正确的删除线实现方式需要考虑以下因素:

使用<del>标签的情况

  • 表示文档修订中删除的内容

  • 需要表达"此内容已被删除"的语义

  • <ins>标签配合使用显示修改记录

使用<s>标签的情况

  • 表示内容仍然存在但已不再准确

  • 价格调整中的原价标记

  • 过时但仍保留供参考的信息

使用CSS的情况

  • 纯装饰性删除线效果

  • 需要高度自定义样式时

  • 不影响内容语义的视觉需求

浏览器兼容性说明

虽然<strike>标签在现在浏览器中仍然能够正常显示效果(出于向后兼容考虑),但它的使用会导致HTML验证错误,且不符合现在Web标准。

所有现在浏览器都支持CSS的text-decoration属性以及<del><s>标签,可以放心使用这些替代方案。

示例:综合应用场景

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>代码号编程平台 - 删除线应用示例</title>
    <style>
        body {
            font-family: 'Microsoft YaHei', sans-serif;
            line-height: 1.6;
            color: #333;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }
        .price-old {
            text-decoration: line-through;
            color: #999;
            margin-right: 10px;
        }
        .price-new {
            color: #e74c3c;
            font-weight: bold;
        }
        .course-update {
            background-color: #f8f9fa;
            padding: 20px;
            border-radius: 5px;
            margin: 20px 0;
        }
        .deprecated-content {
            opacity: 0.6;
            position: relative;
        }
        .deprecated-content::before {
            content: "";
            position: absolute;
            left: 0;
            top: 50%;
            width: 100%;
            height: 1px;
            background-color: #ccc;
            transform: translateY(-50%);
        }
    </style>
</head>
<body>
    <h1>代码号课程价格与内容调整</h1>
    
    <div class="course-update">
        <h2>2025年课程价格调整</h2>
        <p>Web前端开发课程: 
            <span class="price-old">¥1299</span>
            <span class="price-new">¥999</span>
        </p>
        <p>Python数据分析课程: 
            <span class="price-old">¥1499</span>
            <span class="price-new">¥1199</span>
        </p>
    </div>
    
    <div class="course-update">
        <h2>课程内容更新说明</h2>
        <p>以下内容已从课程中移除:</p>
        <p><del>jQuery框架深入讲解</del> - 已替换为现在JavaScript框架内容</p>
        <p><del>Flas制作技术</del> - 因技术淘汰已移除</p>
        
        <p>以下内容仍然保留但已更新:</p>
        <p><s>HTML4标签使用</s> 更新为HTML5语义化标签</p>
        <p><s>CSS2布局方式</s> 增加Flexbox和Grid布局详解</p>
    </div>
    
    <div class="deprecated-content">
        <h2>过时方法示例(不推荐)</h2>
        <p><strike>使用strike标签添加删除线</strike></p>
        <p>此种方法已过时,不建议在新项目中使用。</p>
    </div>
</body>
</html>

虽然<strike>标签在早期HTML版本中广泛使用,但在现在Web开发中已被更语义化的元素和CSS所取代。作为开发者,我们应该遵循HTML5标准,根据内容的具体含义选择合适的标签:

  • 使用<del>表示被删除的内容

  • 使用<s>表示不再准确的内容

  • 使用CSS实现纯视觉效果的删除线

这种选择不仅使代码符合Web标准,还能提升网站的可访问性和SEO效果,为用户提供更好的体验。更多 HTML5标签 和 HTML 参考手册 详解,我们将持续分享实用的Web开发知识和实践。

← HTML <spacer> 标签 HTML strong 标签 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号