Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
CSS布局:实现固定头部、侧边栏与可滚动内容区域的策略_创想鸟

CSS布局:实现固定头部、侧边栏与可滚动内容区域的策略

CSS布局:实现固定头部、侧边栏与可滚动内容区域的策略

本文探讨了两种构建具有固定头部和侧边栏的web布局策略。第一种方案通过精确计算视口高度,使主内容区域内部滚动;第二种方案则利用position: fixed创建固定元素,并允许主内容区域及其内部独立可滚动模块自然流动,从而解决内容溢出及整体页面滚动问题,提升用户体验。

在现代Web开发中,创建具有固定头部(Header)和侧边栏(Sidebar),同时保持主内容区域可灵活滚动、适应不同屏幕尺寸的布局是一个常见需求。开发者常常面临内容溢出导致页面结构混乱,或在视口高度变化时无法正确滚动的问题。本教程将深入解析两种有效的CSS布局策略,帮助您构建结构清晰、用户体验良好的页面。

理解核心问题

原始问题描述了两个主要挑战:

内容区域内部分区(sections)高度固定,但其内部内容溢出时,希望分区内部滚动,而非使分区自身高度增加。 此外,当滚动到分区底部时,希望能够滚动到下一个分区。这暗示了需要对每个内容模块进行独立的高度管理和溢出处理。当整个浏览器窗口高度减小时,希望整个网站(.site)能够溢出滚动。 这意味着在极端情况下,整个布局应允许浏览器原生滚动条出现。

我们将通过两种不同的CSS方法来解决这些问题,每种方法适用于不同的场景和用户体验需求。

关键CSS概念

在深入解决方案之前,了解以下CSS属性至关重要:

立即学习“前端免费学习笔记(深入)”;

box-sizing: border-box;: 确保元素的 width 和 height 包含 padding 和 border,简化尺寸计算。height: 100vh;: 设置元素高度为视口(viewport)高度的100%。calc(): CSS函数,用于执行数学运算,常用于动态计算尺寸。display: flex;: 弹性盒子布局,用于在容器中排列项目,提供强大的对齐和分布能力。flex: 1;: 在Flex容器中,使项目占据所有可用空间。overflow-y: scroll; / overflow-y: auto;: 控制元素垂直方向上的内容溢出行为。scroll 始终显示滚动条,auto 在内容溢出时显示滚动条。position: fixed;: 使元素相对于视口固定定位,不随页面滚动。position: absolute;: 使元素相对于最近的已定位祖先元素(或初始包含块)进行定位。z-index;: 控制定位元素的堆叠顺序。

方案一:视口约束与主内容区域内部滚动

这种方法适用于整个页面被设计为单屏应用,或主要交互集中在一个大型滚动区域内的场景。它通过精确计算视口高度,将固定元素排除在外,使剩余空间由主内容区域占据并实现内部滚动。

核心思路

将 html 和 body 设置为 100vh 高度,确保整个页面占满视口。定义 header 的固定高度。使用 calc() 函数计算 main 区域的高度,使其等于 100vh 减去 header 的高度。将 main 区域设置为弹性容器,并使其内部的 section (代表主要内容区域)具有 overflow-y: scroll; 属性。这样,当 section 内的内容溢出时,只有 section 内部会出现滚动条。

示例代码

HTML 结构:

    Fixed Header, Scrollable Main    

HEADER

现在,我希望这里面的内容在这个section内部溢出滚动,但section必须保持相同的高度。您可以通过运行此emmet看到问题:

文章标题

一些内容

文章标题

一些内容

文章标题

一些内容

CSS 样式:

* {  margin: 0;  box-sizing: border-box; /* 确保盒模型计算准确 */}header {  text-align: center;  background-color: red;  height: 100px; /* 固定头部高度 */}main {  height: calc(100vh - 100px); /* main区域高度 = 视口高度 - 头部高度 */  display: flex; /* 启用Flex布局,使侧边栏和内容区并排 */  border: 2px solid red;}aside {  padding: 0 2em;  background-color: lightgray; /* 侧边栏样式 */}section {  flex: 1; /* 内容区域占据main的剩余空间 */  overflow-y: scroll; /* 关键:内容溢出时,section内部滚动 */  background-color: lightblue; /* 内容区域背景色 */}article {  border-top: 2px solid black;  padding-bottom: 40vh; /* 增加内容高度以演示滚动 */}

注意事项

此方案中,section 承担了主要滚动区域的角色。如果 section 内部有多个逻辑模块(如 article),它们将一起在 section 内部滚动。这种布局会产生一个独立的滚动条用于 section 区域,而不是浏览器的主滚动条。适用于需要高度控制、内部滚动体验的仪表盘或单页应用。

方案二:固定元素与浏览器原生滚动

此方案更符合传统网页的滚动行为,即头部和侧边栏固定,而主内容区域随浏览器主滚动条滚动。同时,它允许主内容区域内的特定模块(如文章、卡片)拥有自己的固定高度和内部滚动。

核心思路

使用 position: fixed; 将 header 和 aside 定位到视口中的固定位置。需要指定 top, left, width, height 等属性,并设置 z-index 确保它们位于内容之上。main 区域使用 position: absolute; 定位,并计算其 top, left, width,以避开固定元素占据的空间。min-height 确保其至少占据剩余视口空间,并允许内容溢出时自然扩展。main 区域内的子模块(如 article)可以被赋予固定的高度,并设置 overflow-y: auto;,使其内部内容在溢出时独立滚动。

示例代码

HTML 结构:

    Fixed Elements, Native Scroll        
HEADER

现在,我希望这里面的内容在这个article内部溢出滚动,但article必须保持相同的高度。您可以通过运行此emmet看到问题:

文章标题 1

一些内容

文章标题 2

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

一些内容

文章标题 3

一些内容

文章标题 4

一些内容

CSS 样式:

* {  margin: 0;  box-sizing: border-box; /* 确保盒模型计算准确 */}header {  position: fixed; /* 关键:固定定位 */  top: 0;  left: 0;  width: 100%;  height: 100px; /* 头部高度 */  z-index: 999; /* 确保在最上层 */  text-align: center;  background-color: red;}aside {  position: fixed; /* 关键:固定定位 */  top: 100px; /* 位于头部下方 */  width: 75px; /* 侧边栏宽度 */  height: calc(100vh - 100px); /* 侧边栏高度 = 视口高度 - 头部高度 */  z-index: 999;  overflow-y: auto; /* 侧边栏内容溢出时,自身滚动 */  text-align: center;  background-color: grey;}.sidebar-left {  left: 0;}.sidebar-right {  right: 0;}main {  position: absolute; /* 关键:绝对定位 */  top: 100px; /* 位于头部下方 */  left: 75px; /* 位于左侧边栏右侧 */  width: calc(100% - 150px); /* 宽度 = 100% - 左右侧边栏宽度 */  min-height: calc(100% - 100px); /* 最小高度,允许内容撑开 */  border: 2px solid red;  padding: 1em; /* 增加内边距避免内容紧贴边缘 */}article {  height: 350px; /* 关键:每个article固定高度 */  overflow-y: auto; /* 关键:article内部内容溢出时,自身滚动 */  background-color: lightblue;  border-top: 2px solid black;  margin-bottom: 1em; /* 增加article之间的间距 */  padding: 1em;}

注意事项

此方案利用了浏览器原生的滚动条,用户体验更自然。main 区域的 top 和 left 属性必须精确计算,以避开固定元素的区域。main 的 min-height 确保即使内容不多,它也能占据至少 100vh – header_height 的空间,同时允许在内容过多时向下扩展,触发浏览器滚动。article 元素(对应原始问题中的 section)拥有固定高度和独立滚动,完美解决了“分区内部滚动”的需求。

总结与选择

两种方案各有优劣,适用于不同的设计目标:

方案一(视口约束与主内容区域内部滚动):优点:对主滚动区域有严格控制,适用于需要特定滚动行为(如单页应用中的自定义滚动条、滚动捕捉效果)的场景。缺点:可能导致页面上出现多个滚动条(一个浏览器主滚动条,一个内部滚动条),用户体验可能不如原生滚动直观。方案二(固定元素与浏览器原生滚动):优点:更符合用户对网页滚动的直觉,只有一个浏览器主滚动条。固定元素始终可见,主内容区域自然流动,且

以上就是CSS布局:实现固定头部、侧边栏与可滚动内容区域的策略的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1599154.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JavaScript中HTML标签选择性转义:利用负向先行断言保留特定标签
上一篇 2025年12月23日 13:32:51
如何为多选下拉列表(select multiple)设置最小选择数量限制
下一篇 2025年12月23日 13:33:07

相关推荐

  • 如何在Debian上配置MongoDB审计日志

    在debian上配置mongodb审计日志可以帮助你监控和记录数据库的活动,从而提高安全性。以下是详细的步骤来配置mongodb审计日志: 1. 安装MongoDB 首先,确保你已经在Debian上安装了MongoDB。如果没有安装,可以使用以下命令进行安装: sudo apt updatesudo…

    2026年9月24日
    100
  • 传苹果人工智能模型高管将跳槽至Meta

    传苹果人工智能模型高管将跳槽至Meta传苹果人工智能模型高管将跳槽至Meta传苹果人工智能模型高管将跳槽至Meta传苹果人工智能模型高管将跳槽至Meta

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 据最新消息,苹果公司主管人工智能模型的高层管理人员即将转投Meta,这为苹果在人工智能领域本就艰难的发展之路再添一道阴影。 有内部人士透露,苹果杰出工程师、基础模型团队负责人Ruoming Pa…

    2026年9月24日 • 用户投稿
    000
  • firefox浏览器地址栏搜索历史怎么删除 Firefox浏览器清除地址栏搜索记录

    firefox浏览器地址栏搜索历史怎么删除 Firefox浏览器清除地址栏搜索记录firefox浏览器地址栏搜索历史怎么删除 Firefox浏览器清除地址栏搜索记录firefox浏览器地址栏搜索历史怎么删除 Firefox浏览器清除地址栏搜索记录firefox浏览器地址栏搜索历史怎么删除 Firefox浏览器清除地址栏搜索记录

    首先清除全部浏览历史中的地址栏记录,点击菜单→历史→清除最近历史记录,选择时间范围并勾选“浏览和下载历史”“表单与搜索历史”,确定删除;其次手动删除单条记录,聚焦地址栏输入关键词,用方向键定位目标后按Shift+Delete移除;最后禁用地址栏搜索建议,进入设置→隐私与安全,取消勾选“显示搜索建议”…

    2026年9月24日 • 用户投稿
    000
  • Java密码验证与程序流程控制:实现用户输入校验与重试机制

    Java密码验证与程序流程控制:实现用户输入校验与重试机制Java密码验证与程序流程控制:实现用户输入校验与重试机制Java密码验证与程序流程控制:实现用户输入校验与重试机制Java密码验证与程序流程控制:实现用户输入校验与重试机制

    本文详细介绍了如何在Java应用程序中实现健壮的密码验证机制,并有效控制程序流程。通过整合循环结构和条件判断,我们能够强制用户输入符合要求的密码,支持多次尝试重输,或在达到最大尝试次数后终止程序,从而提升用户体验和系统安全性。 1. 密码验证逻辑概述 在许多应用程序中,密码验证是确保用户数据安全的关…

    2026年9月24日 • 用户投稿
    000
  • 散热系统的设计如何影响高端硬件的长期稳定性?

    散热系统的设计如何影响高端硬件的长期稳定性?散热系统的设计如何影响高端硬件的长期稳定性?散热系统的设计如何影响高端硬件的长期稳定性?散热系统的设计如何影响高端硬件的长期稳定性?

    散热系统设计直接决定高端硬件的长期稳定性,优良设计可有效控制温度、抑制热点、减少热应力损伤,从而延缓性能衰减、提升可靠性;反之则加速老化、引发故障。高性能计算因持续高负载对散热更敏感,要求温度稳定以保障运算精度与连续性。液体冷却凭借高效导热和低噪优势成为高端配置主流,但存在成本高、复杂性强及漏液风险…

    2026年9月24日 • 用户投稿
    1000
  • Rest Assured JSONPath 泛型值提取:构建可重用工具函数

    Rest Assured JSONPath 泛型值提取:构建可重用工具函数Rest Assured JSONPath 泛型值提取:构建可重用工具函数Rest Assured JSONPath 泛型值提取:构建可重用工具函数Rest Assured JSONPath 泛型值提取:构建可重用工具函数

    本教程探讨如何在Rest Assured中构建一个泛型工具函数,以实现从JSON响应中安全地提取指定类型的值。针对直接使用T.class的常见误区,文章提供了正确的解决方案:通过将Class作为参数传入,从而克服Java泛型类型擦除的限制,确保在运行时提供正确的类型信息,提升代码的灵活性和可重用性。…

    2026年9月24日 • 用户投稿
    000
  • 夸克网盘怎么扩容_免费获取与购买存储空间

    通过新用户注册、切换登录方式、解绑手机号、参与推广活动及每日签到,可免费获取1TB至20TB不等的夸克网盘扩容空间,其中推广任务最高可得20TB可叠加容量,签到则累积永久空间。 如果您在使用夸克网盘时发现存储空间不足,可以通过平台提供的多种方式免费获取额外容量,或选择购买服务来满足更大需求。以下是具…

    2026年9月24日
    700
  • UC浏览器为什么不能复制文字_UC浏览器无法复制文字问题解决方法

    UC浏览器为什么不能复制文字_UC浏览器无法复制文字问题解决方法UC浏览器为什么不能复制文字_UC浏览器无法复制文字问题解决方法UC浏览器为什么不能复制文字_UC浏览器无法复制文字问题解决方法UC浏览器为什么不能复制文字_UC浏览器无法复制文字问题解决方法

    无法复制文字可能是因网页保护或浏览器设置所致。首先检查是否启用内容保护,尝试切换至电脑版浏览;其次关闭UC浏览器的阅读模式以恢复原文选中功能;接着清除浏览器缓存数据,重启后测试复制功能;若仍无效,可开启无障碍服务如屏幕朗读或OCR识别提取文字;最后可通过分享链接到微信等应用,在其他浏览器中打开并复制…

    2026年9月24日 • 用户投稿
    1300
  • sublime怎么恢复上次关闭的标签页_sublime重新打开最近关闭文件的方法

    sublime怎么恢复上次关闭的标签页_sublime重新打开最近关闭文件的方法sublime怎么恢复上次关闭的标签页_sublime重新打开最近关闭文件的方法sublime怎么恢复上次关闭的标签页_sublime重新打开最近关闭文件的方法sublime怎么恢复上次关闭的标签页_sublime重新打开最近关闭文件的方法

    开启hot_exit和remember_open_files可自动恢复会话,配合Ctrl+Shift+T重开关闭文件,Ctrl+P查看最近文档,实现高效找回工作状态。 Sublime Text 关闭后重新打开,有时会自动恢复上次的文件和标签页,但这个功能不是每次都能生效。如果你不小心关闭了某些标签页…

    2026年9月24日 • 用户投稿
    000
  • Java中实现跨类和函数共享变量的指南

    Java中实现跨类和函数共享变量的指南Java中实现跨类和函数共享变量的指南Java中实现跨类和函数共享变量的指南Java中实现跨类和函数共享变量的指南

    本教程将详细介绍在Java中如何创建可在所有类和函数中访问的共享变量。通过利用public static关键字,我们可以定义类级别的变量,实现全局共享状态。文章将提供声明、访问示例,并讨论使用此类变量时的最佳实践和注意事项,确保代码的可维护性和健壮性。 理解共享变量的需求 在java应用程序开发中,…

    2026年9月24日 • 用户投稿
    100
  • Ubuntu挂载网络共享

    在ubuntu中挂载网络共享有多种方法,以下是其中两种常用的方法: 方法一:使用mount命令 安装必要的软件包:如果你还没有安装cifs-utils(用于CIFS/SMB协议),可以使用以下命令安装: sudo apt updatesudo apt install cifs-utils 创建挂载点…

    2026年9月24日
    000
  • x浏览器怎么查看网页源代码_x浏览器查看页面HTML源代码方法

    x浏览器怎么查看网页源代码_x浏览器查看页面HTML源代码方法x浏览器怎么查看网页源代码_x浏览器查看页面HTML源代码方法x浏览器怎么查看网页源代码_x浏览器查看页面HTML源代码方法x浏览器怎么查看网页源代码_x浏览器查看页面HTML源代码方法

    1、打开x浏览器加载网页后,点击右上角三点菜单选择“查看源代码”即可显示HTML源码;2、长按页面链接可在快捷菜单中查找“查看源代码”选项快速访问;3、启用开发者工具模式后可通过“检查元素”功能进行更深入的页面结构分析。 如果您在浏览网页时需要查看页面的HTML源代码,以便分析结构或调试内容,可以通…

    2026年9月24日 • 用户投稿
    000
  • Java中实现州府问答系统:2D数组管理、排序与用户输入验证

    Java中实现州府问答系统:2D数组管理、排序与用户输入验证Java中实现州府问答系统:2D数组管理、排序与用户输入验证Java中实现州府问答系统:2D数组管理、排序与用户输入验证Java中实现州府问答系统:2D数组管理、排序与用户输入验证

    本教程详细介绍了如何使用Java构建一个州府问答系统。内容涵盖了使用二维数组存储州名及其首都数据、实现冒泡排序对数据按首都名称进行排序、以及如何通过用户输入验证机制,处理大小写不敏感的答案,并最终统计正确率。文章提供了完整的代码示例和关键注意事项,帮助读者理解并实现类似的数据结构与算法应用。 1. …

    2026年9月24日 • 用户投稿
    100
  • sublime如何配置使其支持EditorConfig _sublime EditorConfig支持配置

    sublime如何配置使其支持EditorConfig _sublime EditorConfig支持配置sublime如何配置使其支持EditorConfig _sublime EditorConfig支持配置sublime如何配置使其支持EditorConfig _sublime EditorConfig支持配置sublime如何配置使其支持EditorConfig _sublime EditorConfig支持配置

    首先安装Package Control,再通过命令面板安装EditorConfig插件,确保项目根目录有.editorconfig文件,重启后即可自动应用格式规则。 Sublime Text 本身不内置支持 EditorConfig,但可以通过安装插件来实现对 .editorconfig 文件的识别…

    2026年9月24日 • 用户投稿
    100
  • UC浏览器下载的电子书在哪个目录_UC浏览器电子书文件存储位置查找

    UC浏览器下载的电子书在哪个目录_UC浏览器电子书文件存储位置查找UC浏览器下载的电子书在哪个目录_UC浏览器电子书文件存储位置查找UC浏览器下载的电子书在哪个目录_UC浏览器电子书文件存储位置查找UC浏览器下载的电子书在哪个目录_UC浏览器电子书文件存储位置查找

    首先通过UC浏览器下载管理查找电子书位置,其次使用文件管理器搜索内部存储的UCDownloads或ucbrowser/Download文件夹,检查SD卡中的UCBrowser目录,并通过浏览器设置确认默认下载路径以准确定位文件。 如果您在使用UC浏览器下载电子书后无法找到文件的存储位置,可能是由于系…

    2026年9月24日 • 用户投稿
    100
  • 《明末:渊虚之羽》1.5版本更新今日登陆主机!详情待公布!

    《明末:渊虚之羽》1.5版本更新今日登陆主机!详情待公布!《明末:渊虚之羽》1.5版本更新今日登陆主机!详情待公布!《明末:渊虚之羽》1.5版本更新今日登陆主机!详情待公布!《明末:渊虚之羽》1.5版本更新今日登陆主机!详情待公布!

    今日,国产类魂游戏《明末:渊虚之羽》官方通过社交平台x宣布,1.5版本更新即将上线主机平台。 官方在推文中指出:“1.5版本补丁将于8月14日正式登陆Xbox Series X|S与PlayStation 5平台!更多详细信息将陆续公开,请持续关注。” 此前,该版本已率先在PC平台推出,主要内容更新…

    2026年9月24日 • 用户投稿
    000
  • 使用 Rest Assured 创建泛型 JSONPath 值提取函数

    使用 Rest Assured 创建泛型 JSONPath 值提取函数使用 Rest Assured 创建泛型 JSONPath 值提取函数使用 Rest Assured 创建泛型 JSONPath 值提取函数使用 Rest Assured 创建泛型 JSONPath 值提取函数

    本文探讨如何在 Rest Assured 中设计一个泛型工具函数,以实现类型安全的 JSONPath 值提取。针对直接使用 T.class 导致的编译错误,文章提供了通过将 Class 作为参数传入的解决方案,有效规避了 Java 泛型擦除问题,从而实现灵活、可复用的 JSON 数据解析。 泛型 J…

    2026年9月24日 • 用户投稿
    000
  • x浏览器保存的密码在哪里查看_x浏览器已保存账号密码查看方法

    x浏览器保存的密码在哪里查看_x浏览器已保存账号密码查看方法x浏览器保存的密码在哪里查看_x浏览器已保存账号密码查看方法x浏览器保存的密码在哪里查看_x浏览器已保存账号密码查看方法x浏览器保存的密码在哪里查看_x浏览器已保存账号密码查看方法

    首先通过X浏览器设置进入密码管理,再选择具体网站查看账号密码。操作路径为:打开X浏览器→点击菜单→进入设置→选择安全及隐私→点击站点密码管理→找到目标网站→点击编辑→查看明文账号密码,全过程需通过设备验证。 如果您在使用X浏览器时启用了密码保存功能,但需要查看已存储的账号信息,则可以通过浏览器内置的…

    2026年9月24日 • 用户投稿
    000
  • 怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法

    怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法

    python内存泄漏可通过tracemalloc、objgraph及代码分析定位。1. 使用tracemalloc模块记录内存分配堆栈,生成快照并输出统计结果,交由豆包ai分析可疑内存泄漏点;2. 用objgraph查看常见对象类型及增长趋势,若发现异常增长对象可交由豆包判断是否合理;3. 将疑似泄…

    2026年9月24日 • 用户投稿
    000
  • 抖音双11好物节有哪些优惠活动?双11抖音有什么活动

    抖音双11好物节有哪些优惠活动?双11抖音有什么活动抖音双11好物节有哪些优惠活动?双11抖音有什么活动抖音双11好物节有哪些优惠活动?双11抖音有什么活动抖音双11好物节有哪些优惠活动?双11抖音有什么活动

    一年一度的双11购物狂欢节即将来临,抖音平台也紧跟潮流,推出了抖音双11好物节活动。这次活动可谓是优惠满满,好物多多,让广大消费者在购物的同时,也能享受购物的乐趣。下面,就让我为大家详细介绍一下2025年抖音双11好物节的优惠活动吧! 一、抖音双11好物节活动时间 活动周期:2025年9月16日(中…

    2026年9月24日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信