提交
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
/.idea
|
/.idea
|
||||||
/runtime
|
/runtime
|
||||||
/data
|
/data
|
||||||
|
/doc
|
||||||
|
|||||||
@@ -219,7 +219,6 @@
|
|||||||
<li class=""><a href="/">{:lang('index.home')}</a></li>
|
<li class=""><a href="/">{:lang('index.home')}</a></li>
|
||||||
<li class=""><a href="{:url('visa/index')}">{:lang('index.online_application')}</a></li>
|
<li class=""><a href="{:url('visa/index')}">{:lang('index.online_application')}</a></li>
|
||||||
<li class=""><a href="{:url('lookup/index')}">{:lang('index.entry_card_query')}</a></li>
|
<li class=""><a href="{:url('lookup/index')}">{:lang('index.entry_card_query')}</a></li>
|
||||||
<li class=""><a href="{:url('contact/index')}">{:lang('contact.menu_contact')}</a></li>
|
|
||||||
<li class=""><a href="{:url('news/index')}">{:lang('index.usage_help')}</a></li>
|
<li class=""><a href="{:url('news/index')}">{:lang('index.usage_help')}</a></li>
|
||||||
<div class="language-switcher nav-language-switcher">
|
<div class="language-switcher nav-language-switcher">
|
||||||
<button class="language-btn" id="languageBtn">
|
<button class="language-btn" id="languageBtn">
|
||||||
@@ -281,4 +280,4 @@
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -20,7 +20,10 @@
|
|||||||
|
|
||||||
<!-- ===== 新增:悬浮客服/返回顶部(小模块很实用) ===== -->
|
<!-- ===== 新增:悬浮客服/返回顶部(小模块很实用) ===== -->
|
||||||
<div class="float-help">
|
<div class="float-help">
|
||||||
<a class="float-btn" href="/home/contact" title="{:lang('contact.menu_contact')}"><i class="bi bi-chat-dots"></i></a>
|
<a class="float-btn float-phone" href="tel:{$company_phone}" title="{$company_phone}">
|
||||||
|
<i class="bi bi-chat-dots"></i>
|
||||||
|
<span class="float-phone-tooltip">{$company_phone}</span>
|
||||||
|
</a>
|
||||||
<a class="float-btn" href="#" title="{:lang('contact.back_to_top')}" onclick="window.scrollTo({top:0,behavior:'smooth'});return false;">
|
<a class="float-btn" href="#" title="{:lang('contact.back_to_top')}" onclick="window.scrollTo({top:0,behavior:'smooth'});return false;">
|
||||||
<i class="bi bi-arrow-up"></i>
|
<i class="bi bi-arrow-up"></i>
|
||||||
</a>
|
</a>
|
||||||
@@ -100,4 +103,4 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,57 +1,47 @@
|
|||||||
<!-- ===== Topbar / Navbar ===== -->
|
|
||||||
<header class="topbar">
|
<header class="topbar">
|
||||||
<nav class="navbar navbar-expand-xl">
|
<nav class="navbar navbar-expand-xl">
|
||||||
<div class="container py-2 topbar-inner">
|
<div class="container py-2 topbar-inner">
|
||||||
|
|
||||||
<!-- 顶栏:永远一行 -->
|
|
||||||
<div class="topbar-head">
|
<div class="topbar-head">
|
||||||
<a class="brand-wrap" href="#">
|
<a class="brand-wrap" href="{$base_path}/">
|
||||||
<span class="brand-badge brand-badge-logo"></span>
|
<span class="brand-badge brand-badge-logo"></span>
|
||||||
<span>
|
<span>
|
||||||
<div class="brand-title">{$country}TDAC</div>
|
<span class="brand-title">{$country}TDAC</span>
|
||||||
<div class="brand-sub">Online Application Service</div>
|
<span class="brand-sub">Online Application Service</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="topbar-right">
|
<div class="topbar-right">
|
||||||
<!-- 手机端语言:始终显示,不进折叠菜单 -->
|
<button class="navbar-toggler d-xl-none text-white border-0" type="button"
|
||||||
<div class="dropdown lang-mobile d-lg-none">
|
data-bs-toggle="collapse"
|
||||||
<button class="btn btn-sm lang-btn dropdown-toggle" data-bs-toggle="dropdown">{if $think_lang == 'en-us'}English{else/}中文 {/if}</button>
|
data-bs-target="#nav"
|
||||||
<ul class="dropdown-menu dropdown-menu-end">
|
aria-controls="nav"
|
||||||
<li><a class="dropdown-item language" data-id="zh-cn" href="#">中文</a></li>
|
aria-expanded="false"
|
||||||
<li><a class="dropdown-item language" data-id="en-us" href="#">English</a></li>
|
aria-label="Toggle navigation">
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button class="navbar-toggler d-xl-none text-white border-0" type="button"
|
|
||||||
data-bs-toggle="collapse" data-bs-target="#nav">
|
|
||||||
<span class="navbar-toggler-icon" style="filter: invert(1)"></span>
|
<span class="navbar-toggler-icon" style="filter: invert(1)"></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 折叠菜单:永远在下一行展开 -->
|
|
||||||
<div class="collapse navbar-collapse" id="nav">
|
<div class="collapse navbar-collapse" id="nav">
|
||||||
<ul class="navbar-nav ms-auto align-items-lg-center gap-lg-2 mt-2 mt-lg-0">
|
<ul class="navbar-nav mx-auto align-items-lg-center gap-lg-2 mt-2 mt-lg-0">
|
||||||
<li class="nav-item"><a class="nav-link" href="{$base_path}/">{:lang('index.home')}</a></li>
|
<li class="nav-item"><a class="nav-link" href="{$base_path}/">{:lang('index.home')}</a></li>
|
||||||
<li class="nav-item"><a class="nav-link" href="{:url('visa/index')}">{:lang('index.online_application')}</a></li>
|
<li class="nav-item"><a class="nav-link" href="{:url('visa/index')}">{:lang('index.online_application')}</a></li>
|
||||||
<li class="nav-item"><a class="nav-link" href="{:url('lookup/index')}">{:lang('index.entry_card_query')}</a></li>
|
<li class="nav-item"><a class="nav-link" href="{:url('lookup/index')}">{:lang('index.entry_card_query')}</a></li>
|
||||||
<li class="nav-item"><a class="nav-link" href="{:url('contact/index')}">{:lang('contact.menu_contact')}</a></li>
|
|
||||||
<li class="nav-item"><a class="nav-link" href="{:url('news/index')}">{:lang('index.usage_help')}</a></li>
|
<li class="nav-item"><a class="nav-link" href="{:url('news/index')}">{:lang('index.usage_help')}</a></li>
|
||||||
|
|
||||||
<!-- PC 端语言:仍放在菜单里(手机端隐藏避免重复) -->
|
|
||||||
<li class="nav-item dropdown ms-lg-2 d-none d-lg-block">
|
|
||||||
<button class="btn btn-sm lang-btn dropdown-toggle" data-bs-toggle="dropdown">{if $think_lang == 'en-us'}English{else/}中文 {/if}</button>
|
|
||||||
<ul class="dropdown-menu dropdown-menu-end">
|
|
||||||
<li><a class="dropdown-item language" data-id="zh-cn" href="#">中文</a></li>
|
|
||||||
<li><a class="dropdown-item language" data-id="en-us" href="#">English</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<div class="nav-user-actions">
|
||||||
|
<a class="nav-user-link" href="{:url('user/index')}">
|
||||||
|
<i class="bi bi-person-circle"></i><span>个人中心</span>
|
||||||
|
</a>
|
||||||
|
{if session('user.id')}
|
||||||
|
<a class="nav-user-link nav-user-link--plain" href="{:url('login/logout')}">
|
||||||
|
<i class="bi bi-box-arrow-right"></i><span>退出</span>
|
||||||
|
</a>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -384,6 +384,7 @@ footer a:hover{ color:#fff; text-decoration:underline; }
|
|||||||
gap: 10px;
|
gap: 10px;
|
||||||
}
|
}
|
||||||
.float-btn{
|
.float-btn{
|
||||||
|
position: relative;
|
||||||
width: 46px; height: 46px;
|
width: 46px; height: 46px;
|
||||||
border-radius: 14px;
|
border-radius: 14px;
|
||||||
border: 1px solid rgba(15,23,42,.12);
|
border: 1px solid rgba(15,23,42,.12);
|
||||||
@@ -393,6 +394,28 @@ footer a:hover{ color:#fff; text-decoration:underline; }
|
|||||||
color: rgba(15,23,42,.75);
|
color: rgba(15,23,42,.75);
|
||||||
}
|
}
|
||||||
.float-btn:hover{ color: var(--brand); border-color: rgba(11,95,168,.25); }
|
.float-btn:hover{ color: var(--brand); border-color: rgba(11,95,168,.25); }
|
||||||
|
.float-phone-tooltip{
|
||||||
|
position: absolute;
|
||||||
|
right: 56px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
padding: 8px 12px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #0b1220;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 1;
|
||||||
|
white-space: nowrap;
|
||||||
|
box-shadow: 0 12px 26px rgba(2,6,23,.16);
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
pointer-events: none;
|
||||||
|
transition: opacity .18s ease, visibility .18s ease;
|
||||||
|
}
|
||||||
|
.float-phone:hover .float-phone-tooltip{
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
/* ===== Flow Stepper v2 ===== */
|
/* ===== Flow Stepper v2 ===== */
|
||||||
.flow2{
|
.flow2{
|
||||||
border: 1px solid var(--line);
|
border: 1px solid var(--line);
|
||||||
@@ -537,8 +560,8 @@ footer a:hover{ color:#fff; text-decoration:underline; }
|
|||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
.topbar .brand-title{ font-weight:700; letter-spacing:.2px; line-height:1.1; }
|
.topbar .brand-title{ display:block; font-weight:700; letter-spacing:.2px; line-height:1.1; }
|
||||||
.topbar .brand-sub{ font-size:12px; opacity:.85; }
|
.topbar .brand-sub{ display:block; font-size:12px; opacity:.85; }
|
||||||
.topbar .brand-title,
|
.topbar .brand-title,
|
||||||
.topbar .brand-sub{ white-space: nowrap; } /* 避免抖动 */
|
.topbar .brand-sub{ white-space: nowrap; } /* 避免抖动 */
|
||||||
|
|
||||||
@@ -567,6 +590,34 @@ footer a:hover{ color:#fff; text-decoration:underline; }
|
|||||||
color:#fff !important;
|
color:#fff !important;
|
||||||
background: rgba(255,255,255,.08) !important;
|
background: rgba(255,255,255,.08) !important;
|
||||||
}
|
}
|
||||||
|
.topbar .nav-user-actions{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
gap: 8px;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
}
|
||||||
|
.topbar .nav-user-link{
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
min-height: 34px;
|
||||||
|
padding: 0 10px;
|
||||||
|
border: 1px solid rgba(255,255,255,.28);
|
||||||
|
border-radius: 8px;
|
||||||
|
color: rgba(255,255,255,.9);
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
white-space: nowrap;
|
||||||
|
background: rgba(255,255,255,.06);
|
||||||
|
}
|
||||||
|
.topbar .nav-user-link:hover{
|
||||||
|
color: #fff;
|
||||||
|
border-color: rgba(255,255,255,.42);
|
||||||
|
background: rgba(255,255,255,.12);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
.navbar-collapse{
|
.navbar-collapse{
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
@@ -577,7 +628,7 @@ footer a:hover{ color:#fff; text-decoration:underline; }
|
|||||||
}
|
}
|
||||||
.topbar .navbar-collapse{
|
.topbar .navbar-collapse{
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
justify-content: flex-end; /* 菜单靠右 */
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PC 不需要右侧(手机语言 + 汉堡),避免空盒子影响对齐 */
|
/* PC 不需要右侧(手机语言 + 汉堡),避免空盒子影响对齐 */
|
||||||
@@ -606,6 +657,12 @@ footer a:hover{ color:#fff; text-decoration:underline; }
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.topbar .nav-user-actions{
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 4px 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
/* 右侧按钮统一高度对齐 */
|
/* 右侧按钮统一高度对齐 */
|
||||||
.topbar .lang-btn{
|
.topbar .lang-btn{
|
||||||
height: 34px;
|
height: 34px;
|
||||||
|
|||||||
Reference in New Issue
Block a user