0

0

CommonMark中集成标签的扩展指南

聖光之護

聖光之護

发布时间:2025-11-19 12:41:01

|

462人浏览过

|

来源于php中文网

原创

CommonMark中集成<picture>标签的扩展指南
标签的扩展指南 " />

本教程将指导您如何在commonmark项目中利用`n0sz/commonmark-picture-extension`扩展,轻松实现对html5 ``标签的支持。通过自定义的markdown语法,您可以为webp等现代图片格式提供jpg回退,确保在不同浏览器和设备上的最佳图片展示效果,从而构建更具响应性和兼容性的网页内容。

在CommonMark中实现响应式图片:使用标签

在现代Web开发中,为了优化用户体验和页面加载性能,我们经常需要使用响应式图片。HTML5的标签是实现这一目标的关键工具,它允许开发者根据不同的屏幕尺寸、设备分辨率或图片格式支持,提供多张图片源。例如,您可以优先加载高效的WebP格式图片,并在浏览器不支持WebP时优雅地回退到JPEG格式。

然而,标准的CommonMark(或Markdown)语法本身并不直接支持复杂的HTML标签如。它主要侧重于简单的文本格式化和图片链接。为了在基于league/commonmark的PHP项目中无缝集成标签,我们需要借助第三方扩展。

本教程将介绍如何使用n0sz/commonmark-picture-extension扩展,让您的CommonMark解析器能够理解并渲染出正确的 HTML结构。

1. 扩展的安装

首先,您需要通过Composer将n0sz/commonmark-picture-extension扩展添加到您的项目中。打开您的终端或命令行工具,并在项目根目录执行以下命令:

composer require n0sz/commonmark-picture-extension

这将会下载并安装所需的扩展包及其依赖项。

2. CommonMark环境配置

安装完成后,您需要将此扩展注册到您的CommonMark解析器环境中。这通常在初始化League\CommonMark\Environment\Environment实例时完成。

以下是一个配置CommonMark环境以支持PictureExtension的示例代码:

<?php

use League\CommonMark\Environment\Environment;
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
use N0sz\CommonMark\Picture\PictureExtension;
use League\CommonMark\MarkdownConverter;

// 1. 创建CommonMark环境实例
$environment = new Environment();

// 2. 添加CommonMark核心扩展,这是基础
$environment->addExtension(new CommonMarkCoreExtension());

// 3. 添加PictureExtension,使其支持自定义的图片语法
$environment->addExtension(new PictureExtension());

// 4. 创建Markdown转换器实例
$converter = new MarkdownConverter($environment);

// 示例Markdown内容,将在下一节详细介绍其语法
$markdown = <<<MARKDOWN
[[[
+ /images/flower-large.webp {media:"(min-width:650px)"}
+ /images/flower-medium.webp {media:"(min-width:465px)"}
- /images/flower.jpg
]]]
MARKDOWN;

// 5. 将Markdown转换为HTML
$html = $converter->convert($markdown);

echo $html;

?>

在上述代码中:

微尔企业网站管理系统1.75 build build 090709
微尔企业网站管理系统1.75 build build 090709

系统功能介绍 1 包含企业网站所必备的功能:企业信息、产品管理、人才招聘、新闻资讯、企业图片、以及视频下载等模块2 由于是从CMS系统的基础上开发而成,因此相对于一些其他的企业网站管理系统,本系统具备更强的可扩展能力,可以胜任从小型工作室到大中型企业网上门户等各种不同规模网站的需求。3 后台管理与模板完全分离,并具备非常灵活的标签技术,可以实现无限制个性化的界面定制4 操作简单,利用已经制作好的模

下载
  • 我们首先实例化Environment。
  • addExtension(new CommonMarkCoreExtension()) 是必需的,因为它包含了标准的Markdown解析规则。
  • addExtension(new PictureExtension()) 则是关键步骤,它引入了对标签的特殊处理逻辑。
  • 最后,通过MarkdownConverter将带有自定义图片语法的Markdown文本转换为HTML。

3. 使用自定义Markdown语法

n0sz/commonmark-picture-extension引入了一种简洁明了的自定义Markdown语法来表示标签。这种语法以[[[开始和]]]结束,内部包含一系列图片源和最终的回退图片。

语法结构:

[[[
+ [source_url] {media:"(min-width:XXXpx)"}
+ [source_url] {type:"image/webp"}
- [img_url] {alt:"Description"}
]]]
  • [[[ 和 ]]]: 标记整个元素的开始和结束。
  • + [source_url] {attributes}: 用于生成标签。
    • [source_url]:指定图片源的URL(对应srcset属性)。
    • {attributes}:一个可选的JSON格式对象,用于指定标签的属性,如media(媒体查询条件)或type(MIME类型)。
  • - [img_url] {attributes}: 用于生成最终的CommonMark中集成标签的扩展指南标签。
    • [img_url]:指定回退图片的URL(对应src属性)。
    • {attributes}:一个可选的JSON格式对象,用于指定CommonMark中集成标签的扩展指南标签的属性,如alt(替代文本)。

示例:WebP与JPG回退

假设您希望在屏幕宽度大于650px时使用flower-large.webp,在屏幕宽度大于465px时使用flower-medium.webp,否则使用flower.jpg作为回退。

Markdown 输入:

[[[
+ /images/flower-large.webp {media:"(min-width:650px)"}
+ /images/flower-medium.webp {media:"(min-width:465px)"}
- /images/flower.jpg {alt:"一朵美丽的鲜花"}
]]]

生成的 HTML 输出:

<picture>
<source media="(min-width:650px)" srcset="/images/flower-large.webp" />
<source media="(min-width:465px)" srcset="/images/flower-medium.webp" />
@@##@@
</picture>

这个示例清晰地展示了如何通过简洁的Markdown语法,生成复杂的响应式图片HTML结构。浏览器将根据媒体查询条件和支持的图片格式,自动选择最合适的图片进行加载。

注意事项与总结

  • 属性支持: 扩展支持在{}中传入media、type等标准标签属性,以及alt等一朵美丽的鲜花标签属性。确保属性名与HTML标准一致。
  • 顺序重要: 标签的顺序很重要,浏览器会按照它们在DOM中的顺序进行匹配。通常,更具体的媒体查询或更优先的格式(如WebP)应放在前面。
  • 回退图片: CommonMark中集成标签的扩展指南标签是必不可少的,它作为所有标签都无法匹配时的最终回退方案,确保图片总能显示。
  • 贡献与更新: 该扩展仍在积极维护中,您可以通过访问其GitHub仓库 (https://www.php.cn/link/a5103ba2adf265252ccbbc8396725bd8) 获取最新信息、报告问题或贡献代码。

通过n0sz/commonmark-picture-extension,您可以在CommonMark项目中轻松地利用HTML5的标签,为用户提供更优化、更具响应性的图片加载体验,同时保持Markdown的简洁性和易用性。这极大地提升了内容创作者在Markdown中处理复杂媒体内容的能力。

CommonMark中集成标签的扩展指南

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

161

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

452

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

331

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

545

2023.10.23

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

467

2024.03.06

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

268

2025.12.30

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号