针对Discuz手机版字体放大后内容空白的问题,可通过以下方案解决:
**1. CSS自适应方案**
- /* 在手机版CSS文件 (如style_mobile.css) 添加 */
- .post_content {
- max-height: none !important;
- overflow: visible !important;
- min-height: 50px; /* 可视最小高度 */
- line-height: 1.6;
- }
- .postlist {
- overflow: visible !important;
- display: flow-root; /* 触发BFC */
- }
复制代码
**2. 动态高度方案 (JS补充)**
- // 在页面底部加入
- document.addEventListener('DOMContentLoaded', function(){
- const observers = new MutationObserver(() => {
- document.querySelectorAll('.post_content').forEach(el => {
- el.style.height = 'auto';
- el.style.height = el.scrollHeight + 'px';
- });
- });
- observers.observe(document.body, {
- subtree: true,
- attributes: true,
- attributeFilter: ['style']
- });
- });
复制代码
**3. 视口单位适配**
- /* 改用响应式单位 */
- .post_body {
- font-size: clamp(14px, 4vw, 18px);
- padding: 2vmin;
- }
复制代码
**4. 模板修改建议**
检查以下模板文件:
- /template/default/mobile/forum/viewthread.htm
确认是否含有类似代码:
- <div class="post_content" style="height:120px;overflow:hidden">
复制代码
修改为:
- <div class="post_content" style="min-height:120px;overflow:visible">
复制代码
**实施步骤:**
1. 进入Discuz后台 → 界面 → 模板管理
2. 编辑手机版模板的CSS文件
3. 在</style>标签前插入上述CSS代码
4. 通过数据库工具执行SQL更新缓存:
- UPDATE pre_common_cache SET dateline=0 WHERE cachekey IN ('template_mobile','css_mobile');
复制代码
**效果验证:**
使用Chrome开发者工具,模拟以下测试环境:
- 系统字体缩放:150%
- 浏览器字体缩放:200%
检查内容区域是否自动换行且容器高度自适应
**扩展建议:**
若使用第三方模板,建议在后台-全局-手机设置中开启"强制使用默认模板"进行兼容性测试。复杂场景可考虑通过DZ插件网的【内容自适应】类插件实现智能缩放功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |