登录
首页 >  文章 >  前端

HTML设置视口与缩放配置技巧

时间:2026-05-21 08:48:37 122浏览 收藏

HTML中正确设置viewport标签是响应式网页开发的基石,但其失效往往并非语法错误,而是因标签未置于文档最开头、被重复声明或动态插入导致浏览器忽略,或因内容溢出强行撑开视口而被迫缩放;必须严格使用`width=device-width, initial-scale=1.0`组合并前置声明,禁用`user-scalable=no`以保障可访问性,同时意识到viewport仅定义渲染画布,真正的适配关键在于内容层——如图片未设`max-width: 100%`、元素溢出、未清除浮动等隐式破坏才是页面“缩成一团”的元凶。

html实现meta viewport视口_html meta viewport视口缩放配置【技巧】

initial-scale=1 失效不是因为你写错了,而是浏览器根本没按它执行——它被内容撑开、被重复声明覆盖、或被系统级缩放绕过。

viewport 标签必须放在 最开头才生效

浏览器一解析到 就立刻应用缩放规则,晚了可能已按默认 980px 渲染完首屏。常见失效场景:

  • 标签被塞在 </code> 后面,或夹在其他 <code><meta></code> 中间</li> <li>被 CMS、SSR 框架的注释或占位符挤到后面(比如 Next.js 的 <code><Head></code> 里混入了空注释)</li> <li>Vue/React 组件里用 JS 动态 <code>appendChild</code> 插入——iOS Safari 和多数安卓 WebView 完全忽略运行时变更</li> <li>多个同名 <code><meta name="viewport"></code> 声明,浏览器只认第一个,后面全丢弃</li> </ul><h3>只写 <code>width=device-width</code> 不够,<code>initial-scale=1</code> 必须显式带上</h3> <p>单独写 <code>width=device-width</code>,老版本 iOS Safari 仍可能 fallback 到自动缩放(比如缩到 0.5 倍),导致字体发虚、<code>1px</code> 边框变粗、媒体查询断点错位。这不是兼容性补丁,而是触发“理想视口”的必要条件。</p> <ul><li>别写 <code>width=375</code> 或 <code>width=412</code>:设备逻辑宽度各不相同,硬编码只适配一种机型,其他全出问题</li> <li>别信设计稿像素值:iPhone 15 是 393px,Pixel 8 是 412px,折叠屏横屏可达 820px+,<code>device-width</code> 是唯一动态对齐的值</li> <li>横竖屏切换时,<code>device-width</code> 会实时更新(竖屏 390 → 横屏 844),固定值卡死不动</li> </ul><h3><code>user-scalable=no</code> 在 2026 年已基本失效且高危</h3> <p>iOS 16+ 明确弱化支持,Safari 会主动忽略它来保障可访问性;Android 各厂商 WebView 行为不一致,有的照办,有的直接跳过。但它造成的伤害是确定的:</p> <ul><li>视力障碍用户无法放大阅读,系统级「更大字体」设置被绕过</li> <li>WCAG 2.1 明确要求“用户应能调整文本大小而不丢失内容”</li> <li>部分 iOS 版本下双击放大手势失效,甚至导致触摸事件异常</li> <li>Web App 添加到主屏后,iOS 强制忽略 <code>maximum-scale</code>,但 <code>user-scalable=no</code> 仍锁死手势</li> </ul><p>真要防误触,用 <code>touch-action: manipulation</code> 更安全——它只禁双指缩放和长按,保留单指滚动和辅助功能缩放。</p> <h3>页面还是缩成一团?检查内容本身是否溢出视口</h3> <p><code>initial-scale=1</code> 被无视,90% 是因为内容宽度 > 视口宽度。浏览器优先保证“可读性”,宁可缩小整个页面也要把内容塞进去。</p> <ul><li>一个 <code>width: 1200px</code> 的 <code><div></code>,在 iPhone 上无论如何都救不了</li> <li>未重置的 <code>min-width</code>、<code>white-space: nowrap</code>、浮动元素未清除,都会撑开父容器</li> <li>图片没设 <code>max-width: 100%</code>,或容器用了 <code>display: inline-block</code> + <code>white-space: nowrap</code></li> <li>用 Chrome DevTools 的「Toggle device toolbar」+ 「Capture screenshot」看真实渲染宽度,别只信 CSS 声明</li> </ul><p>viewport 只管“画布怎么铺开”,不解决布局、字体、图片的具体适配——它不是万能开关,而是启动响应式的必要前提。真正容易被忽略的,是内容层面对视口宽度的隐式破坏,而不是 meta 标签少写了哪个参数。</p><p>今天关于《HTML设置视口与缩放配置技巧》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!</p> <div id="third-party-overlay" style="position:fixed;left:0;top:0;width:100%;height:100%;display:none;justify-content:center;align-items:center;background:rgba(0,0,0,0.4);z-index:9999;"> <div style="background:#FFF3CD;border:1px solid #FFEEBA;padding:16px;border-radius:6px;box-sizing:border-box;max-width:480px;width:90%;text-align:center;"> <div style="font-size:14px;color:#856404;margin-bottom:12px;">您即将跳转至第三方网站,请注意保护好个人信息和财产安全!</div> <a href="https://comicdow.pdlcomic.top/1273%2F%E5%9B%A7%E6%AC%A1%E5%85%83.apk" target="_blank" rel="nofollow noopener noreferrer" style="color:#2d8cf0;text-decoration:none;" onclick="showThirdParty('none');">继续访问</a> </div> </div> <script> function showThirdParty(mode){ var el = document.getElementById('third-party-overlay'); if (!el) return; el.style.display = (mode === 'none' ? 'none' : 'flex'); } </script> </div> <div class="labsList"> </div> </div> <div class="contBoxNor"> <div class="contTit"> <div class="tit">资料下载</div> </div> <ul class="classRecomList"> <li> <a href="https://pan.quark.cn/s/ba8ef670cabd" rel="nofollow" target="_blank" title="编程学习资料下载" class="img_box"> <img loading="lazy" src="/assets/images/xuexiziliao.jpeg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="编程学习资料下载"> </a> <dl> <dt class="lineOverflow"> <a href="https://pan.quark.cn/s/ba8ef670cabd" rel="nofollow" target="_blank" class="aBlack" title="编程学习资料下载">编程学习资料下载</a> </dt> <dd class="cont1 lineTwoOverflow"> 精选 编程(Golang、Python、Java、C++、JavaScript等) 教程、电子书与示例源码,一键打包本地下载学习。 </dd> <dd class="cont2"> <a href="https://pan.quark.cn/s/ba8ef670cabd" rel="nofollow" target="_blank" class="toStudy">立即下载</a> </dd> </dl> </li> </ul> </div> <!-- 最新阅读 --> <div class="contBoxNor"> <div class="contTit"> <div class="tit">相关阅读</div> <a href="/articlelist.html" class="more">更多></a> </div> <ul class="latestReadList"> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1年前  |   <a href="javascript:;" class="aLightGray" title="提升">提升</a> <a href="javascript:;" class="aLightGray" title="箭头函数">箭头函数</a> <a href="javascript:;" class="aLightGray" title="函数表达式">函数表达式</a> <a href="javascript:;" class="aLightGray" title="函数声明">函数声明</a> <a href="javascript:;" class="aLightGray" title="Function构造函数">Function构造函数</a> </div> <div class="tit lineOverflow"><a href="/article/207000.html" title="JavaScript函数定义及示例详解" class="aBlack">JavaScript函数定义及示例详解</a></div> <div class="opt"> <span><i class="view"></i>502</span> <span class="collectBtn user_collection" data-id="207000" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2年前  |   <a href="javascript:;" class="aLightGray" title="CSS">CSS</a> <a href="javascript:;" class="aLightGray" title="优化">优化</a> <a href="javascript:;" class="aLightGray" title="体验">体验</a> </div> <div class="tit lineOverflow"><a href="/article/72840.html" title="优化用户界面体验的秘密武器:CSS开发项目经验大揭秘" class="aBlack">优化用户界面体验的秘密武器:CSS开发项目经验大揭秘</a></div> <div class="opt"> <span><i class="view"></i>501</span> <span class="collectBtn user_collection" data-id="72840" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2年前  |   <a href="javascript:;" class="aLightGray" title="图片轮播">图片轮播</a> <a href="javascript:;" class="aLightGray" title="微信小程序">微信小程序</a> <a href="javascript:;" class="aLightGray" title="特效">特效</a> </div> <div class="tit lineOverflow"><a href="/article/76259.html" title="使用微信小程序实现图片轮播特效" class="aBlack">使用微信小程序实现图片轮播特效</a></div> <div class="opt"> <span><i class="view"></i>501</span> <span class="collectBtn user_collection" data-id="76259" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2年前  |   <a href="javascript:;" class="aLightGray" title="sessionStorage">sessionStorage</a> <a href="javascript:;" class="aLightGray" title="存储能力">存储能力</a> <a href="javascript:;" class="aLightGray" title="限制解析">限制解析</a> </div> <div class="tit lineOverflow"><a href="/article/83771.html" title="解析sessionStorage的存储能力与限制" class="aBlack">解析sessionStorage的存储能力与限制</a></div> <div class="opt"> <span><i class="view"></i>501</span> <span class="collectBtn user_collection" data-id="83771" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2年前  |   <a href="javascript:;" class="aLightGray" title="团队合作">团队合作</a> <a href="javascript:;" class="aLightGray" title="冒泡事件">冒泡事件</a> <a href="javascript:;" class="aLightGray" title="促进作用">促进作用</a> </div> <div class="tit lineOverflow"><a href="/article/85057.html" title="探索冒泡活动对于团队合作的推动力" class="aBlack">探索冒泡活动对于团队合作的推动力</a></div> <div class="opt"> <span><i class="view"></i>501</span> <span class="collectBtn user_collection" data-id="85057" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> </ul> </div> <!-- 最新阅读 --> <div class="contBoxNor"> <div class="contTit"> <div class="tit">最新阅读</div> <a href="/articlelist.html" class="more">更多></a> </div> <ul class="latestReadList"> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605896.html" title="CSS图片替换过渡效果实现方法" class="aBlack">CSS图片替换过渡效果实现方法</a></div> <div class="opt"> <span><i class="view"></i>429</span> <span class="collectBtn user_collection" data-id="605896" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605895.html" title="CSS实现自适应标签云布局:Flex-wrap流式标签效果" class="aBlack">CSS实现自适应标签云布局:Flex-wrap流式标签效果</a></div> <div class="opt"> <span><i class="view"></i>215</span> <span class="collectBtn user_collection" data-id="605895" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  3分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605893.html" title="计算属性名类静态成员初始化顺序问题解决方法" class="aBlack">计算属性名类静态成员初始化顺序问题解决方法</a></div> <div class="opt"> <span><i class="view"></i>483</span> <span class="collectBtn user_collection" data-id="605893" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  3分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605892.html" title="HTML中wbr标签使用方法详解" class="aBlack">HTML中wbr标签使用方法详解</a></div> <div class="opt"> <span><i class="view"></i>468</span> <span class="collectBtn user_collection" data-id="605892" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  10分钟前  |   <a href="javascript:;" class="aLightGray" title="HTML常见属性及用途">HTML常见属性及用途</a> </div> <div class="tit lineOverflow"><a href="/article/605886.html" title="usemap属性路径写法及相对路径规范技巧" class="aBlack">usemap属性路径写法及相对路径规范技巧</a></div> <div class="opt"> <span><i class="view"></i>230</span> <span class="collectBtn user_collection" data-id="605886" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  13分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605883.html" title="HTML中使用video标签的poster属性设置视频封面图片的方法如下:基本语法:在<video>标签中添加poster="图片URL"属性,指定封面图片的路径。<video src="your-video.mp4" poster="cover.jpg"></video>图片要求:图片格式建议为JPEG或PNG。图片尺寸应与视频分辨率匹配,以避免拉伸或裁剪。建议使用高质量图片,提升用户体验。注意" class="aBlack">HTML中使用video标签的poster属性设置视频封面图片的方法如下:基本语法:在<video>标签中添加poster="图片URL"属性,指定封面图片的路径。<video src="your-video.mp4" poster="cover.jpg"></video>图片要求:图片格式建议为JPEG或PNG。图片尺寸应与视频分辨率匹配,以避免拉伸或裁剪。建议使用高质量图片,提升用户体验。注意</a></div> <div class="opt"> <span><i class="view"></i>453</span> <span class="collectBtn user_collection" data-id="605883" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  14分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605881.html" title="CSS圆角切换不流畅怎么解决?" class="aBlack">CSS圆角切换不流畅怎么解决?</a></div> <div class="opt"> <span><i class="view"></i>313</span> <span class="collectBtn user_collection" data-id="605881" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  16分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605878.html" title="Props 实现视频进度联动教程" class="aBlack">Props 实现视频进度联动教程</a></div> <div class="opt"> <span><i class="view"></i>159</span> <span class="collectBtn user_collection" data-id="605878" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  17分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605877.html" title="HTML CSS offset-rotate 控制元素旋转方向方法" class="aBlack">HTML CSS offset-rotate 控制元素旋转方向方法</a></div> <div class="opt"> <span><i class="view"></i>199</span> <span class="collectBtn user_collection" data-id="605877" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  19分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605875.html" title="闭包实现访问控制,动态锁定敏感接口" class="aBlack">闭包实现访问控制,动态锁定敏感接口</a></div> <div class="opt"> <span><i class="view"></i>405</span> <span class="collectBtn user_collection" data-id="605875" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  28分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605862.html" title="Socket.IO房间管理实战教程" class="aBlack">Socket.IO房间管理实战教程</a></div> <div class="opt"> <span><i class="view"></i>283</span> <span class="collectBtn user_collection" data-id="605862" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  31分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/605859.html" title="HTML12列栅格Grid布局入门教程" class="aBlack">HTML12列栅格Grid布局入门教程</a></div> <div class="opt"> <span><i class="view"></i>211</span> <span class="collectBtn user_collection" data-id="605859" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> </ul> </div> <!-- 课程推荐 --> <div class="contBoxNor"> <div class="contTit"> <div class="tit">课程推荐</div> <a href="/courselist.html" class="more">更多></a> </div> <ul class="classRecomList"> <li> <a href="/course/9.html" title="前端进阶之JavaScript设计模式" class="img_box"> <img loading="lazy" src="/uploads/20221222/52fd0f23a454c71029c2c72d206ed815.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="前端进阶之JavaScript设计模式"> </a> <dl> <dt class="lineOverflow"> 前端进阶之JavaScript设计模式 </dt> <dd class="cont1 lineOverflow">设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。</dd> <dd class="cont2"> <a href="/course/9.html" title="前端进阶之JavaScript设计模式" class="toStudy">立即学习</a> <span>543次学习</span> </dd> </dl> </li> <li> <a href="/course/2.html" title="GO语言核心编程课程" class="img_box"> <img loading="lazy" src="/uploads/20221221/634ad7404159bfefc6a54a564d437b5f.png" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="GO语言核心编程课程"> </a> <dl> <dt class="lineOverflow"> GO语言核心编程课程 </dt> <dd class="cont1 lineOverflow">本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。</dd> <dd class="cont2"> <a href="/course/2.html" title="GO语言核心编程课程" class="toStudy">立即学习</a> <span>516次学习</span> </dd> </dl> </li> <li> <a href="/course/74.html" title="简单聊聊mysql8与网络通信" class="img_box"> <img loading="lazy" src="/uploads/20240103/bad35fe14edbd214bee16f88343ac57c.png" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="简单聊聊mysql8与网络通信"> </a> <dl> <dt class="lineOverflow"> 简单聊聊mysql8与网络通信 </dt> <dd class="cont1 lineOverflow">如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让</dd> <dd class="cont2"> <a href="/course/74.html" title="简单聊聊mysql8与网络通信" class="toStudy">立即学习</a> <span>500次学习</span> </dd> </dl> </li> <li> <a href="/course/57.html" title="JavaScript正则表达式基础与实战" class="img_box"> <img loading="lazy" src="/uploads/20221226/bbe4083bb3cb0dd135fb02c31c3785fb.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="JavaScript正则表达式基础与实战"> </a> <dl> <dt class="lineOverflow"> JavaScript正则表达式基础与实战 </dt> <dd class="cont1 lineOverflow">在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。</dd> <dd class="cont2"> <a href="/course/57.html" title="JavaScript正则表达式基础与实战" class="toStudy">立即学习</a> <span>487次学习</span> </dd> </dl> </li> <li> <a href="/course/28.html" title="从零制作响应式网站—Grid布局" class="img_box"> <img loading="lazy" src="/uploads/20221223/ac110f88206daeab6c0cf38ebf5fe9ed.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="从零制作响应式网站—Grid布局"> </a> <dl> <dt class="lineOverflow"> 从零制作响应式网站—Grid布局 </dt> <dd class="cont1 lineOverflow">本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。</dd> <dd class="cont2"> <a href="/course/28.html" title="从零制作响应式网站—Grid布局" class="toStudy">立即学习</a> <span>485次学习</span> </dd> </dl> </li> </ul> </div> </div> <!-- footer --> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <div class="footer"> <ul> <li ><a href="/" class="aLightGray"><em class="material-icons">home</em><span>首页</span></a></li> <li class="curr"><a href="/articlelist.html" class="aLightGray"><em class="material-icons">menu_book</em><span>阅读</span></a></li> <li ><a href="/courselist.html" class="aLightGray"><em class="material-icons">school</em><span>课程</span></a></li> <li ><a href="/ai.html" class="aLightGray"><em class="material-icons">smart_toy</em><span>AI助手</span></a></li> <li ><a href="/user.html" class="aLightGray"><em class="material-icons">person</em><span>我的</span></a></li> </ul> </div> <script src="/assets/js/require.js" data-main="/assets/js/require-frontend.js?v=1671101972"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?3dc5666f6478c7bf39cd5c91e597423d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script src="/assets/js/SyntaxHighlighter/shCore.js?3.1.1"></script> <script> document.addEventListener('DOMContentLoaded', function () { if (document.querySelector('.cont pre')) { SyntaxHighlighter.all(); } }); </script> </body> </html>