查看: 21|回复: 1

Discuz X5.0 帖子页用户等级进度条美化教程(渐变 + 动画 + 百分比)

[复制链接]
发表于 昨天 13:48 |四川| 显示全部楼层 |阅读模式
效果预览:
- 蓝色渐变流动动画,与网站主色调统一
- 百分比数字叠加显示,低进度下也清晰可读
- 光泽扫过动画 + 页面加载时进度增长动画
- 鼠标悬停增亮发光
适用版本: Discuz X5.0(其他版本可参考)
修改模板: 以 jzbar_x5 模板为例,default/discuzx5 等模板同理



一、实现思路

Discuz 默认的用户等级进度条是纯色直角、无百分比、无动画,比较简陋。本教程通过两个文件的修改实现美化:

  • 模板文件 :给进度条添加自定义 class 和百分比文字元素
  • CSS 文件 :用渐变背景、动画、描边文字实现精致效果

重要踩坑提醒: CSS 一定要写在 extend_common.css 里, 不要 写在 extend_module.css 里!原因见文末第六节。



二、修改文件 1:模板文件(HTML 结构)

文件路径: template / 你的模板名 /forum/viewthread_profile_node.php

如果你的模板目录下没有这个文件,从 template/default/forum/ 复制一份过来。

找到 profile_node_upgradeprogress 函数中的输出代码(约第 75 行):原代码:
  1. $s<span class="pbg2" {if $upgrademenu} id="upgradeprogress_$post[pid]" onmouseover="showMenu({'ctrlid':this.id, 'pos':'12!', 'menuid':'g_up$post[pid]_menu'});"{/if}><span class="pbr2" style="width:$post['upgradeprogress']%;"></span></span>$e
复制代码

替换为:
  1. $s<span class="pbg2 jzbar-upgrade-bar" {if $upgrademenu} id="upgradeprogress_$post[pid]" onmouseover="showMenu({'ctrlid':this.id, 'pos':'12!', 'menuid':'g_up$post[pid]_menu'});"{/if}><span class="pbr2" style="width:$post['upgradeprogress']%;"></span><span class="jzbar-upgrade-percent">$post['upgradeprogress']%</span></span>$e
复制代码


改动说明:
  • 给外层 span 增加了 jzbar-upgrade-bar 自定义 class
  • 在 pbr2 后面增加了 jzbar-upgrade-percent 百分比文字元素,输出 $post ['upgradeprogress']%



三、修改文件 2:样式文件(CSS)
文件路径: template / 你的模板名 /common/extend_common.css
在文件末尾追加以下代码:

  1. /* ============================================
  2. 自定义:用户等级进度条美化
  3. ============================================ */
  4. .pbg2.jzbar-upgrade-bar {
  5. position: relative;
  6. width: 130px;
  7. height: 14px;
  8. margin: 4px auto;
  9. background: #f0f2f5;
  10. border: 1px solid #e4e7ed;
  11. border-radius: 7px;
  12. overflow: hidden;
  13. box-shadow: inset 0 1px 3px rgba (0,0,0,0.06);
  14. }

  15. .pbg2.jzbar-upgrade-bar .pbr2 {
  16. position: relative;
  17. display: block;
  18. height: 100%;
  19. border-radius: 6px;
  20. background: linear-gradient(90deg, #1479d7 0%, #4aa3ff 50%, #1479d7 100%);
  21. background-size: 200% 100%;
  22. box-shadow: 0 0 8px rgba(20, 121, 215, 0.35);
  23. transform-origin: left center;
  24. animation: jzbar-pbr2-flow 2.5s linear infinite, jzbar-pbr2-grow 1.2s ease-out;
  25. transition: filter 0.3s ease, box-shadow 0.3s ease;
  26. }

  27. .pbg2.jzbar-upgrade-bar .pbr2::before {
  28. content: '';
  29. position: absolute;
  30. top: 0;
  31. left: -100%;
  32. width: 100%;
  33. height: 100%;
  34. background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
  35. animation: jzbar-pbr2-shine 2s ease-in-out infinite;
  36. }

  37. .jzbar-upgrade-percent {
  38. position: absolute;
  39. top: 50%;
  40. left: 50%;
  41. transform: translate(-50%, -50%);
  42. font-size: 10px;
  43. font-weight: 700;
  44. color: #fff;
  45. text-shadow:
  46. 0 0 1px rgba(0,0,0,0.9),
  47. 0 0 2px rgba(0,0,0,0.8),
  48. 0 1px 2px rgba(0,0,0,0.6);
  49. z-index: 2;
  50. pointer-events: none;
  51. white-space: nowrap;
  52. line-height: 1;
  53. letter-spacing: 0.3px;
  54. }

  55. .pbg2.jzbar-upgrade-bar:hover .pbr2 {
  56. filter: brightness(1.12);
  57. box-shadow: 0 0 12px rgba(20, 121, 215, 0.55);
  58. }

  59. @keyframes jzbar-pbr2-flow {
  60. 0% { background-position: 200% 0; }
  61. 100% { background-position: -200% 0; }
  62. }

  63. @keyframes jzbar-pbr2-grow {
  64. 0% { transform: scaleX(0); }
  65. 100% { transform: scaleX(1); }
  66. }

  67. @keyframes jzbar-pbr2-shine {
  68. 0% { left: -100%; }
  69. 60% { left: 100%; }
  70. 100% { left: 100%; }
  71. }
复制代码



四、三种动画效果说明
jzbar-pbr2-flow 渐变色左右流动 2.5 秒 无限循环
jzbar-pbr2-shine 白色高光从左扫到右 2 秒 无限循环
jzbar-pbr2-grow 页面加载时进度从 0 展开 1.2 秒 只播放一次

百分比文字可读性方案: 白色文字 + 三层深色 text-shadow 模拟描边,在灰色底色和蓝色填充上都能看清。



五、部署步骤

  • 上传修改后的两个文件到服务器对应目录
  • 后台 → 工具 → 更新缓存 → 全选 (特别要选 "CSS 缓存" 和 "模板缓存")→ 提交
  • 前台帖子页面按 Ctrl+F5 强制刷新浏览器缓存


注意: 只刷新页面不更新缓存是看不到效果的,Discuz 的 CSS 和模板都有编译缓存机制。



六、踩坑提醒:为什么用 extend_common.css 而不是 extend_module.css?

这是本教程最关键的经验分享!

Discuz 的 CSS 合并机制(source/function/cache/cache_styles.php)会自动加载模板目录下的 extend_< 文件名 >.css 作为对应基础 CSS 的扩展:
extend_common.css style_XX_common.css 所有页面 ✅ 是
extend_module.css style_XX_module.css 首页、列表等模块页 ❌ 否

结论: 帖子内容页(viewthread)只加载 common.css 和 forum_viewthread.css, 不加载 module.css 。所以进度条样式必须写在 extend_common.css 里,写在 extend_module.css 里在帖子页完全不生效!



七、自定义调整指南
进度条宽度 .pbg2.jzbar-upgrade-bar 的 width(默认 130px)
进度条高度 .pbg2.jzbar-upgrade-bar 的 height(默认 14px)
主色调 .pbr2 的 linear-gradient 颜色值(默认 #1479d7,改成你网站的主色)
流动动画速度 jzbar-pbr2-flow 的时长(默认 2.5s,越小越快)
光泽动画速度 jzbar-pbr2-shine 的时长(默认 2s)
百分比字号 .jzbar-upgrade-percent 的 font-size(默认 10px)
发光强度 .pbr2 的 box-shadow 透明度(默认 0.35)

配色建议: 把 #1479d7 替换成你网站 logo 的主色调,保持整体风格统一。可以用浏览器 F12 取色器吸取 logo 颜色。



八、文件清单汇总
template / 模板名 /forum/viewthread_profile_node.php 新增 / 修改 没有就从 default 复制,修改进度条 HTML 结构
template / 模板名 /common/extend_common.css 追加 在文件末尾追加 CSS 样式

本教程基于 Discuz X5.0 实测通过,其他版本可参考调整。如有问题欢迎跟帖交流。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|站点地图|小黑屋|建筑吧

2005-2026 © 建筑资源吧 [蜀ICP备13014264号-2] [Discuz! Git] [Discuz! X5.0]
建筑资源吧所有内容均来源于会员发布或网络,禁止发布色情、政治、反动等国家法律不允许的内容!
如果您认为建筑资源吧的内容侵犯了您的合法权益,请发电子邮件并告诉详情【 web@jzbar.net 】我们会尽快处理。
虚拟的网络世界更加能反映人的本性,请大家理智和谐的发表自己的观点勿人身攻击,违者封停ID账号,谢谢支持!
在本版发帖QQ客服返回顶部