查看: 4|回复: 0

Discuz! 美化 discuzx5 的下拉菜单、搜索框和登录选项

[复制链接]
  • TA的每日心情
    奋斗
    7 小时前
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    1818

    主题

    66

    回帖

    5307

    积分

    管理员

    🤝 贡献
    3
    🌟 威望
    0
    🪙 金币
    3420
    💎 社区币
    146

    管理员帅哥金牛座羊

    发表于 2 小时前 | 查看全部 |阅读模式

    Discuz! 美化 discuzx5 的搜索框

    Discuz! 美化 discuzx5 的搜索框
      

    Discuz! 美化 discuzx5 的搜索框

    Discuz! 美化 discuzx5 的搜索框
      

    Discuz! 美化 discuzx5 的下拉菜单、搜索框和登录选项

    Discuz! 美化 discuzx5 的下拉菜单、搜索框和登录选项


    打开 template\discuzx5\common\header_userstatus.php,替换所有的内容:

    1. <?php echo '';exit;?>
    2. <div class="header-right">
    3.     <!--{if $_G['style']['is_search']}-->
    4.     <div class="header-searcher">
    5.        <div class="searcher-wrap">
    6.           <form method="{if $_G[fid] && !empty($searchparams[url])}get{else}post{/if}" autocomplete="off"
    7.               action="{if $_G[fid] && !empty($searchparams[url])}$searchparams[url]{else}search.php?searchsubmit=yes{/if}" target="_blank">
    8.               <input type="hidden" name="mod" value="forum" />
    9.             
    10.               <!-- 1. 默认显示的放大镜按钮 -->
    11.               <button type="button" class="search-icon-btn" aria-label="Search">
    12.                 <svg viewBox="0 0 24 24" width="18" height="18" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>
    13.               </button>

    14.               <!-- 2. 悬停弹出的气泡框 -->
    15.               <div class="search-dropdown-box">
    16.                  <div class="search-box-inner">
    17.                     <input type="text" name="srchtxt" placeholder="{lang enter_content}" value="{if $keyword}$keyword{/if}"
    18.                         class="search-input">
    19.                     <button type="submit" name="searchsubmit" sc="1" class="search-submit-btn" value="true">搜索</button>
    20.                  </div>
    21.               </div>
    22.           </form>
    23.        </div>
    24.     </div>
    25.     <!--{/if}-->

    26.         {cells common/header/i18n_switch}

    27.         <!--{if $_G['uid']}-->
    28.         <!--{if strpos($_G['setting']['pluginhooks']['global_usernav_extra1'], 'function showmyrepeats()')}-->
    29.         <div class="header-notice">
    30.                 <div class="notice-icon"><a href="home.php?mod=spacecp&ac=plugin&id=myrepeats:memcp" id="myrepeats" class="kmico" onmouseover="delayShow(this, showmyrepeats)" title="{lang tmp070}">
    31.                 <i class="dzicon myrepeats"></i>
    32.                 </a></div>
    33.         </div>
    34.         <!--{/if}-->
    35.         <div class="header-notice">
    36.                 <div class="notice-icon">
    37.                         <i class="dzicon noticeicon"></i>
    38.                         <!--{if $_G['member']['newprompt'] || $_G['member']['newpm']}-->
    39.                         {eval $newprompt = $_G['member']['newprompt'] + $_G['member']['newpm'];}
    40.                         <span class="dot">{if $newprompt >99}99{else}$newprompt{/if}</span>
    41.                         <!--{/if}-->
    42.                 </div>

    43.                 <div class="notice-dropdown poptip-popper">
    44.                         <div class="poptip-arrow"></div>
    45.                         <ul class="notice-content">
    46.                                 <li class="notice-item"><a href="home.php?mod=space&do=notice">{lang remind}<!--{if $_G[member][newprompt]}--><span class="num">($_G[member][newprompt])</span><span class="dot"></span><!--{/if}--></a></li>
    47.                                 <!--{if !empty($_G['setting']['pmstatus'])}-->
    48.                                         <li class="notice-item"><a href="home.php?mod=space&do=pm">{lang pm_center}{if $_G[member][newpm]}<span class="dot"></span>{/if}</a></li>
    49.                                 <!--{/if}-->
    50.                                 <li class="notice-item"><a href="home.php?mod=follow&do=follower"><!--{lang notice_interactive_follower}-->{if $_G[member][newprompt_num][follower]} <span class="num">$_G[member][newprompt_num][follower]</span>{/if}{if $_G[member][newprompt_num][follower]}<span class="dot"></span>{/if}</a></li>
    51.                                 <!--{if $_G[member][newprompt] && $_G[member][newprompt_num][follow]}-->
    52.                                         <li class="notice-item"><a href="home.php?mod=follow"><!--{lang notice_interactive_follow}-->($_G[member][newprompt_num][follow])<span class="dot"></span></a></li>
    53.                                 <!--{/if}-->
    54.                                 <!--{if $_G['member']['newprompt']}-->
    55.                                 <!--{loop $_G['member']['category_num'] $key $val}-->
    56.                                         <li class="notice-item"><a href="home.php?mod=space&do=notice&view=$key"><!--{echo lang('template', 'notice_'.$key)}--><span class="num">$val</span><span class="dot"></span></a></li>
    57.                                 <!--{/loop}-->
    58.                                 <!--{/if}-->
    59.                         </ul>
    60.                 </div>
    61.         </div>
    62.         <div class="header-user">
    63.                 <div class="header-user-info">
    64.                         <div class="header-user-avatar">
    65.                                 <a href="home.php?mod=space&uid=$_G[uid]">
    66.                                         <!--{avatar($_G['uid'],'big')}-->
    67.                                 </a>
    68.                         </div>
    69.                 </div>
    70.                 <div class="header-user-dropdown poptip-popper">
    71.                         <div class="poptip-arrow"></div>
    72.                         <div class="user-card">
    73.                                 <div class="user-card-top">
    74.                                         <div class="block_avatar e-avatar"><a href="home.php?mod=space&uid=$_G[uid]"><!--{avatar($_G['uid'],'big')}--></a></div>
    75.                                         <div class="block_name">
    76.                                                 <a href="home.php?mod=space&uid=$_G[uid]">{$_G[member][username]}</a>
    77.                                                 <a href="home.php?mod=spacecp&ac=usergroup" target="_blank">{$_G['group']['grouptitle']}</a>
    78.                                         </div>
    79.                                 </div>
    80.                                 <div class="author_intro">
    81.                                         <p>
    82.                                                 <!--{if $_G['group']['allowinvisible']}-->
    83.                                                 <span id="loginstatus" class="xi2">
    84.                                                         <a id="loginstatusid" href="member.php?mod=switchstatus" title="{lang login_switch_invisible_mode}" onclick="ajaxget(this.href, 'loginstatus');return false;" class="xi2"></a>
    85.                                                 </span>
    86.                                                 <!--{/if}-->
    87.                                                 <!--{if $_G['member']['freeze']}--><span class="xi1">{lang freeze}</span><!--{/if}-->
    88.                                                 <a href="home.php?mod=spacecp&ac=credit&showcredit=1" target="_blank">{lang credits}: $_G['member']['credits']</a>
    89.                                         </p>
    90.                                 </div>
    91.                                 <div class="user-card-area">
    92.                                         <!--{if check_diy_perm($topic)}-->
    93.                                         <a href="javascript:saveUserdata('diy_advance_mode', '1');openDiy();">{lang tmp071}</a>
    94.                                         <!--{/if}-->
    95.                                         <!--{if !empty($_G['setting']['taskstatus']) && !empty($_G['cookie']['taskdoing_'.$_G['uid']])}--><a href="home.php?mod=task&item=doing" id="task_ntc" class="info_task" target="_blank">{lang task_doing}</a><!--{/if}-->
    96.                                         <!--{if ($_G['group']['allowmanagearticle'] || $_G['group']['allowpostarticle'] || $_G['group']['allowdiy'] || getstatus($_G['member']['allowadmincp'], 4) || getstatus($_G['member']['allowadmincp'], 6) || getstatus($_G['member']['allowadmincp'], 2) || getstatus($_G['member']['allowadmincp'], 3))}-->
    97.                                                 <a href="portal.php?mod=portalcp" class="info_portalcp" target="_blank"><!--{if $_G['setting']['portalstatus'] }-->{lang portal_manage}<!--{else}-->{lang portal_block_manage}<!--{/if}--></a>
    98.                                         <!--{/if}-->
    99.                                         <!--{if $_G['uid'] && $_G['group']['radminid'] > 1}-->
    100.                                                 <a href="forum.php?mod=modcp&fid=$_G['fid']" class="info_portalcp" target="_blank">{lang forum_manager}</a>
    101.                                         <!--{/if}-->
    102.                                         <!--{if $_G['uid'] && getstatus($_G['member']['allowadmincp'], 1)}-->
    103.                                                 <a href="?app=admin" class="info_admin" target="_blank">{lang admincp}</a>
    104.                                         <!--{/if}-->
    105.                                 </div>
    106.                                 <div class="user-card-area">
    107.                                         <a href="home.php?mod=spacecp" class="info_setup" target="_blank">{lang myitem}{lang setup}</a>
    108.                                         <a href="home.php?mod=space&do=thread&view=me" class="info_post" target="_blank">{lang myitem}{lang mypost}</a>
    109.                                         <a href="home.php?mod=space&do=favorite&view=me" class="info_fav" target="_blank">{lang myitem}{lang favorite}</a>
    110.                                         <a href="home.php?mod=space&do=friend" class="info_friend" target="_blank">{lang myitem}{lang friends}</a>
    111.                                         <!--{hook/global_usernav_extra1}-->
    112.                                         <!--{hook/global_usernav_extra2}-->
    113.                                         <!--{hook/global_usernav_extra3}-->
    114.                                         <!--{hook/global_usernav_extra4}-->
    115.                                         <!--{hook/global_myitem_extra}-->
    116.                                 </div>
    117.                                 <!--{if $_G['style']['top_fastnav'] }-->
    118.                                 <div class="dz_user_qmenu cl">
    119.                                         <div class="qmenu_an" id="qmenu_an">
    120.                                                 <a class="next" href="javascript:qmenu_move('1');"><em></em></a>
    121.                                                 <a class="prev" href="javascript:qmenu_move('0');"><em></em></a>
    122.                                         </div>
    123.                                         <div class="qmenu_ico" id="qmenu_loop">
    124.                                                 <ul class="cl" id="qmenu_loopul">
    125.                                                         <!--{loop $_G['setting']['mynavs'] $nav}-->
    126.                                                                 <!--{if $nav['available'] && (!$nav['level'] || ($nav['level'] == 1 && $_G['uid']) || ($nav['level'] == 2 && $_G['adminid'] > 0) || ($nav['level'] == 3 && $_G['adminid'] == 1))}-->
    127.                                                                         <li>{echo str_replace($nav['navname'], '<span>'. $nav['navname'].'</span>', $nav['code']);}</li>
    128.                                                                 <!--{/if}-->
    129.                                                         <!--{/loop}-->
    130.                                                 </ul>
    131.                                         </div>
    132.                                 </div>
    133.                                 <!--{/if}-->

    134.                                 <!--{if $_G['uid'] && !empty($_G['style']['extstyle'])}-->
    135.                                 <div class="user-card-skin">
    136.                                         <!--{if !$_G[style][defaultextstyle]}-->
    137.                                         <span onclick="extstyle('')" title="{lang default}"><i></i></span><!--{/if}-->
    138.                                         <!--{loop $_G['style']['extstyle'] $extstyle}-->
    139.                                         <span onclick="extstyle('$extstyle[0]')" title="$extstyle[1]"><i
    140.                                                         style='background:$extstyle[2]'></i></span>
    141.                                         <!--{/loop}-->
    142.                                 </div>
    143.                                 <!--{/if}-->
    144.                                 <div class="user-card-bottom">
    145.                                         <a href="member.php?mod=logging&action=logout&formhash={FORMHASH}" class="user-logout-btn">{lang logout}</a>
    146.                                 </div>
    147.                         </div>
    148.                 </div>
    149.         </div>
    150.         <!--{else}-->
    151.         <!--{hook/global_usernav_extra1}-->
    152.        
    153.         <!-- 未登录时的悬停登录/注册气泡菜单 -->
    154.         <div class="header-login-menu">
    155.                 <div class="login-menu-wrap">
    156.                         <a href="member.php?mod=logging&action=login" onclick="showWindow('login', this.href);return false;" class="login-trigger">
    157.                                 {lang login}
    158.                         </a>
    159.                         <div class="login-dropdown-box">
    160.                                 <div class="login-box-inner">
    161.                                         <a href="member.php?mod=logging&action=login" onclick="showWindow('login', this.href);return false;" class="menu-item">
    162.                                                 立即登录
    163.                                         </a>
    164.                                         <a href="member.php?mod=register" class="menu-item">
    165.                                                 立即注册
    166.                                         </a>
    167.                                 </div>
    168.                         </div>
    169.                 </div>
    170.         </div>
    171.         <!--{/if}-->
    172. </div>

    173. <!-- 集中整合的 CSS 样式 -->
    174. <style>
    175. /* 1. 搜索框相关样式 */
    176. .header-searcher {
    177.     position: relative;
    178.     display: inline-block;
    179.     vertical-align: middle;
    180. }
    181. .searcher-wrap {
    182.     position: relative;
    183. }
    184. .search-icon-btn {
    185.     background: #fcfcfc;
    186.     border: none;
    187.     color: #0090F0;
    188.     border-radius: 50%;
    189.     cursor: pointer;
    190.     padding: 8px;
    191.     display: flex;
    192.     align-items: center;
    193.     justify-content: center;
    194. }
    195. .search-dropdown-box {
    196.     display: none;
    197.     position: absolute;
    198.     right: 0;
    199.     top: 100%;
    200.     margin-top: 10px;
    201.     background: #fff;
    202.     padding: 15px;
    203.     border-radius: 6px;
    204.     box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    205.     z-index: 999;
    206.     white-space: nowrap;
    207. }
    208. .search-dropdown-box::before {
    209.     content: '';
    210.     position: absolute;
    211.     bottom: 100%;
    212.     right: 20px;
    213.     border-width: 6px;
    214.     border-style: solid;
    215.     border-color: transparent transparent #fff transparent;
    216. }
    217. .searcher-wrap:hover .search-dropdown-box {
    218.     display: block;
    219. }
    220. .search-box-inner {
    221.     display: flex;
    222.     align-items: center;
    223.     gap: 8px;
    224. }
    225. .search-dropdown-box .search-input {
    226.     width: 200px;
    227.     height: 34px;
    228.     padding: 0 10px;
    229.     border: 1px solid #dcdfe6;
    230.     border-radius: 4px;
    231.     outline: none;
    232.     font-size: 14px;
    233.     color: #606266;
    234.     background: #fff;
    235. }
    236. .search-dropdown-box .search-input:focus {
    237.     border-color: #409eff;
    238. }
    239. .search-dropdown-box .search-submit-btn {
    240.     height: 34px;
    241.     padding: 0 16px;
    242.     background-color: #1890ff;
    243.     color: #fff;
    244.     border: none;
    245.     border-radius: 4px;
    246.     cursor: pointer;
    247.     font-size: 14px;
    248. }
    249. .search-dropdown-box .search-submit-btn:hover {
    250.     background-color: #40a9ff;
    251. }

    252. /* 2. 登录/注册气泡菜单相关样式 */
    253. .header-login-menu {
    254.     position: relative;
    255.     display: inline-block;
    256.     vertical-align: middle;
    257. }
    258. .login-menu-wrap {
    259.     position: relative;
    260. }
    261. .login-trigger {
    262.     color: #0090F0;
    263.     text-decoration: none;
    264.     font-size: 14px;
    265.     padding: 5px 10px;
    266.     display: inline-block;
    267.     cursor: pointer;
    268. }
    269. .login-trigger:hover {
    270.     color: #1890ff;
    271. }
    272. .login-dropdown-box {
    273.     display: none;
    274.     position: absolute;
    275.     right: 0;
    276.     top: 100%;
    277.     margin-top: 8px;
    278.     background: #fff;
    279.     padding: 10px;
    280.     border-radius: 6px;
    281.     box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    282.     z-index: 999;
    283.     white-space: nowrap;
    284. }
    285. .login-dropdown-box::before {
    286.     content: '';
    287.     position: absolute;
    288.     bottom: 100%;
    289.     right: 20px;
    290.     border-width: 6px;
    291.     border-style: solid;
    292.     border-color: transparent transparent #fff transparent;
    293. }
    294. .login-menu-wrap:hover .login-dropdown-box {
    295.     display: block;
    296. }
    297. .login-box-inner {
    298.     display: flex;
    299.     flex-direction: column;
    300.     gap: 6px;
    301. }
    302. .login-dropdown-box .menu-item {
    303.     display: block;
    304.     padding: 8px 16px;
    305.     color: #ff0000;
    306.     background: #fff;
    307.     text-align: center;
    308.     border-radius: 4px;
    309.     text-decoration: none;
    310.     font-size: 14px;
    311.     border: 1px solid transparent;
    312. }
    313. .login-dropdown-box .menu-item:hover {
    314.     color: #1890ff;
    315.     background: #F0F7FF;
    316.     border-color: #d1e9ff;
    317. }
    318. </style>

    319. <script type="text/javascript">
    320. document.querySelectorAll('.header-user, .header-notice, .header-i18n, .header-client').forEach(function(element) {
    321.     element.addEventListener('mouseenter', function() {
    322.         this.classList.add('open');
    323.     });

    324.     element.addEventListener('mouseleave', function() {
    325.         this.classList.remove('open');
    326.     });
    327. });
    328. if($("qmenu_loop")){
    329.         var qmenu_timer, qmenu_scroll_l;
    330.         var qmenu_in = 0;
    331.         var qmenu_width = 163;
    332.         var qmenu_loop = $('qmenu_loop');
    333.         var qmenu_all_width = 41 * $('qmenu_loopul').getElementsByTagName("li").length - qmenu_width;
    334.         if(qmenu_all_width < 20){
    335.                 $('qmenu_an').style.display = 'none';
    336.         }
    337. }
    338. function qmenu_move(qmenu_lr){
    339.         if(qmenu_in == 0 && ((qmenu_lr == 1 && qmenu_loop.scrollLeft < qmenu_all_width) || (qmenu_lr == 0 && qmenu_loop.scrollLeft > 0))){
    340.                 qmenu_in = 1;
    341.                 qmenu_scroll_l = qmenu_loop.scrollLeft;
    342.                 qmenu_timer = setInterval(function(){
    343.                         qmenu_scroll(qmenu_lr);
    344.                 }, 10);
    345.         }
    346. }
    347. function qmenu_scroll(qmenu_lr){
    348.         if((qmenu_lr == 1 && qmenu_loop.scrollLeft >= qmenu_width + qmenu_scroll_l) || (qmenu_lr == 0 && ((qmenu_loop.scrollLeft <= qmenu_scroll_l - qmenu_width) || qmenu_loop.scrollLeft == 0))){
    349.                 clearInterval(qmenu_timer);
    350.                 qmenu_in = 0;
    351.         }else{
    352.                 if(qmenu_lr == 1){
    353.                         qmenu_loop.scrollLeft += Math.round((qmenu_width + qmenu_scroll_l - qmenu_loop.scrollLeft) / 15) + 1;
    354.                 }else{
    355.                         qmenu_loop.scrollLeft -= Math.round((qmenu_width - (qmenu_scroll_l - qmenu_loop.scrollLeft)) / 15) + 1;
    356.                 }
    357.         }
    358. }
    359. </script>
    复制代码


    另外再打开 template\discuzx5\common\extend_common.css,在最下面添加:

    1. /*导航弹窗*/
    2. /* 1. 先重置整个下拉弹窗容器的背景和边框 */
    3. #hds .p_pop {
    4.     background: #FFFFFF !important;
    5.     border: 1px solid #E4E7ED !important;
    6.     box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1) !important;
    7.     border-radius: 4px !important;
    8.     padding: 6px !important;
    9. }

    10. /* 2. 针对里面的每一个链接(菜单项)进行统一排版 */
    11. =#hds .p_pop a {
    12.     display: block !important;
    13.     width: auto !important;
    14.     min-width: 100px !important;
    15.     height: 36px !important;
    16.     line-height: 36px !important;
    17.     padding: 0 15px !important;
    18.     margin: 2px 0 !important;
    19.     border: 1px solid transparent !important; /* 默认透明边框,防止抖动 */
    20.     background: #FFFFFF !important;
    21.     color: #606266 !important;
    22.     text-align: left !important; /* 文字居中(若想靠左可改 nav-align left) */
    23.     box-shadow: none !important;
    24.     border-radius: 4px !important;
    25.     font-size: 14px !important;
    26. }

    27. /* 3. 鼠标悬停时的样式(模仿图片中的清爽蓝白风格) */
    28. #hds .p_pop a:hover {
    29.     color: #1890ff !important;
    30.     background: #F0F7FF !important; /* 浅蓝色背景,或者改成你图中的 #F2F2F2 */
    31.     border: 1px solid #d1e9ff !important; /* 悬停时带淡淡的边框,就像截图里那样 */
    32.     text-decoration: none !important;
    33. }
    34. /*切换语言弹窗*/
    35. .header-i18n .i18n-content .i18n-item a {
    36.     display: block !important;
    37.     width: auto !important;
    38.     min-width: 100px !important;
    39.     height: 36px !important;
    40.     line-height: 36px !important;
    41.     padding: 0 15px !important;
    42.     margin: 2px 0 !important;
    43.     border: 1px solid transparent !important; /* 默认透明边框,防止抖动 */
    44.     background: #FFFFFF !important;
    45.     color: #606266 !important;
    46.     box-shadow: none !important;
    47.     border-radius: 4px !important;
    48.     font-size: 14px !important;
    49. }
    50. .header-i18n .i18n-content .i18n-item :hover {
    51.     color: #1890ff !important;
    52.     background: #F0F7FF !important; /* 浅蓝色背景,或者改成你图中的 #F2F2F2 */
    53.     border: 1px solid #d1e9ff !important; /* 悬停时带淡淡的边框,就像截图里那样 */
    54.     text-decoration: none !important;
    55. }
    56. /*消息提示弹窗*/
    57. .header-notice .notice-content .notice-item a {
    58.     display: block !important;
    59.     width: auto !important;
    60.     min-width: 100px !important;
    61.     height: 36px !important;
    62.     line-height: 36px !important;
    63.     padding: 0 15px !important;
    64.     margin: 2px 0 !important;
    65.     border: 1px solid transparent !important; /* 默认透明边框,防止抖动 */
    66.     background: #FFFFFF !important;
    67.     color: #606266 !important;
    68.     box-shadow: none !important;
    69.     border-radius: 4px !important;
    70.     font-size: 14px !important;
    71. }
    72. .header-notice .notice-content .notice-item :hover {
    73.     color: #1890ff !important;
    74.     background: #F0F7FF !important; /* 浅蓝色背景,或者改成你图中的 #F2F2F2 */
    75.     border: 1px solid #d1e9ff !important; /* 悬停时带淡淡的边框,就像截图里那样 */
    76.     text-decoration: none !important;
    77. }
    78. /*end*/
    复制代码



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

    本版积分规则

    手机版|小黑屋|网站地图|文强阁

    相关侵权、举报、投诉及建议等,请发 E-mail:hsbk@hotmail.com

    Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

    在本版发帖