优化多个页面样式与展示文本

This commit is contained in:
2025-12-09 18:01:12 +08:00
parent 2f61856ff6
commit a7f4556d9d
9 changed files with 57 additions and 54 deletions

View File

@@ -1,11 +1,33 @@
## TODO ## TODO
提取页面: 首页
- 手机端重新调整样式 - 推荐文章实现动态展示
- 类似电商的底部支付栏 - 网站公告内容重新设计
- 整体边距,尽量一页显示完整
整体文字替换 购买页面:
- 固定套餐与定制套餐
业务场景页面,部分内容动态展示
文档中心页面,实现动态路由解析静态或动态文章
业务定制页面优化
考虑重新组织导航栏
页尾
- 公众号二维码与客户经理信息
- 服务保障跳转企业微信
- 站点导航 - 企业服务,推广返利
- 全球代理
后台导航改进,目前过于散乱
IP 管理按长短效分页
购买与提取手机端优化,尽量一页展示全部
### 次要
全部替换封装时间范围组件,检查结束时间字段手机端适配问题(需要尾部对齐) 全部替换封装时间范围组件,检查结束时间字段手机端适配问题(需要尾部对齐)
@@ -13,8 +35,6 @@
树组件优化 树组件优化
IP 管理按长短效分页
### 架构改进 ### 架构改进
考虑使用 swr 或 react query 来代替直接的服务端 react cache 缓存以及客户端 zustand 缓存,以将服务端请求的数据能够水合到客户端,避免重复请求 考虑使用 swr 或 react query 来代替直接的服务端 react cache 缓存以及客户端 zustand 缓存,以将服务端请求的数据能够水合到客户端,避免重复请求

View File

@@ -7,7 +7,7 @@ export type CollectPageProps = {}
export default function CollectPage(props: CollectPageProps) { export default function CollectPage(props: CollectPageProps) {
return ( return (
<main className="mt-20 flex flex-col gap-4"> <main className="mt-20 flex flex-col gap-4">
<Wrap className="flex flex-col py-8 gap-8"> <Wrap className="flex flex-col py-8 gap-4">
<BreadCrumb items={[ <BreadCrumb items={[
{label: '短效IP 提取', href: '/collect'}, {label: '短效IP 提取', href: '/collect'},
]}/> ]}/>

View File

@@ -8,27 +8,27 @@ export default function Footer(props: FooterProps) {
<footer className="bg-gray-900 text-white overflow-hidden"> <footer className="bg-gray-900 text-white overflow-hidden">
<Wrap className="flex flex-col px-4 py-8 lg:p-12"> <Wrap className="flex flex-col px-4 py-8 lg:p-12">
<div className="flex-auto overflow-hidden flex flex-wrap justify-between"> <div className="flex-auto overflow-hidden flex flex-wrap justify-between">
<div className="flex flex-col lg:items-center gap-2 lg:gap-6 max-lg:w-1/2"> <div className="flex flex-col lg:items-center gap-2 max-lg:w-1/2">
<Image src="/qrcode.svg" alt="logo" width={80} height={80} className="flex-none size-20 sm:size-44 bg-gray-100"/> <Image src="/qrcode.svg" alt="logo" width={80} height={80} className="flex-none size-20 sm:size-44 bg-gray-100"/>
<span className="text-sm "></span> <span className="text-sm text-gray-400"></span>
</div> </div>
<div className="flex flex-col gap-2 lg:gap-4 max-lg:w-1/2"> <div className="flex flex-col gap-2 lg:gap-4 max-lg:w-1/2">
<h3></h3> <h3></h3>
<p className={`text-sm text-gray-500 `}>大客户经理:张经</p> <p className="text-sm text-gray-400"></p>
<p className={`text-sm text-gray-500 `}>/微信:177 9666 8888</p> <p className="text-sm text-gray-400">17796668888</p>
<p className={`text-sm text-gray-500 `}>QQ:70177252</p> <p className="text-sm text-gray-400">QQ 70177252</p>
<h3 className="hidden sm:block"></h3> <h3 className="hidden sm:block"></h3>
<p className="text-sm text-gray-500 hidden sm:block"></p> <p className="text-sm text-gray-400 hidden sm:block"></p>
<p className="text-sm text-gray-500 hidden sm:block"></p> <p className="text-sm text-gray-400 hidden sm:block"></p>
</div> </div>
<SiteNavList <SiteNavList
title="站点导航" title="站点导航"
items={[ items={[
{name: `产品订购`, href: `#`}, {name: `产品订购`, href: `/product`},
{name: `获取代理`, href: `#`}, {name: `获取代理`, href: `/collect`},
{name: `帮助中心`, href: `#`}, {name: `帮助中心`, href: `/docs`},
{name: `企业服务`, href: `#`}, {name: `企业服务`, href: `#`},
{name: `推广返利`, href: `#`}, {name: `推广返利`, href: `#`},
]} ]}
@@ -41,13 +41,6 @@ export default function Footer(props: FooterProps) {
{name: `固定IP代理`, href: `/product?type=fixed`}, {name: `固定IP代理`, href: `/product?type=fixed`},
]} ]}
/> />
<SiteNavList
title="全球代理"
items={[
{name: `动态代理`, href: `#`},
{name: `静态代理`, href: `#`},
]}
/>
<SiteNavList <SiteNavList
title="使用案例" title="使用案例"
items={[ items={[
@@ -62,15 +55,7 @@ export default function Footer(props: FooterProps) {
]} ]}
/> />
<SiteNavList <SiteNavList
title="获取代理" title="帮助文档"
items={[
{name: `API提取`, href: `/collect`},
{name: `代码示例`, href: `#`},
{name: `热门地区`, href: `#`},
]}
/>
<SiteNavList
title="代理资讯"
items={[ items={[
{name: `产品功能`, href: `#`}, {name: `产品功能`, href: `#`},
{name: `使用教程`, href: `#`}, {name: `使用教程`, href: `#`},
@@ -79,12 +64,11 @@ export default function Footer(props: FooterProps) {
/> />
</div> </div>
<div className="flex-none mt-6 pt-6 border-t border-gray-300 flex flex-col items-center"> <div className="flex-none mt-6 pt-6 border-t border-gray-700 flex flex-col text-gray-300">
<p className="text-sm text-center"> <p className="text-xs">
IP服务使IP从事的任何行为均不代表蓝狐代理IP的意志和观点使 IP服务使IP从事的任何行为均不代表蓝狐代理IP的意志和观点使
</p> </p>
<p className={`text-sm mt-3 `}> | ICP备17004061号-17 | B1-20190663</p> <p className={`text-xs mt-3 `}> | ICP备17004061号-17 | B1-20190663</p>
</div> </div>
</Wrap> </Wrap>
</footer> </footer>
@@ -108,7 +92,7 @@ function SiteNavList(props: {
].join(' ')}> ].join(' ')}>
{props.items.map((item, index) => ( {props.items.map((item, index) => (
<li key={index}> <li key={index}>
<a href={item.href} className="text-sm text-gray-500">{item.name}</a> <a href={item.href} className="text-sm text-gray-400">{item.name}</a>
</li> </li>
))} ))}
</ul> </ul>

View File

@@ -130,11 +130,8 @@ export default function Header(props: HeaderProps) {
onPointerLeave={exitMenu} onPointerLeave={exitMenu}
/> />
<LinkItem <LinkItem
text="企业服务" text="业务定制"
href="#"/> href="/customized"/>
<LinkItem
text="推广返利"
href="#"/>
</ul> </ul>
{/* 移动端菜单 */} {/* 移动端菜单 */}

View File

@@ -14,7 +14,7 @@ export default function HelpLayout(props: {
]}/> ]}/>
<div className="flex gap-6"> <div className="flex gap-6">
<Sidebar/> <Sidebar/>
<div className="flex-1 bg-white border rounded p-6 min-h-[420px]"> <div className="flex-1 bg-white rounded p-6 min-h-[420px]">
{props.children} {props.children}
</div> </div>
</div> </div>

View File

@@ -48,7 +48,7 @@ export default function Sidebar({collapsed = false, selected, onSelect, onToggle
} }
return ( return (
<aside className={`bg-white border rounded p-3 transition-all duration-200 flex-shrink-0 ${collapsed ? 'w-20' : 'w-72'}`}> <aside className={`bg-white rounded p-3 transition-all duration-200 flex-shrink-0 ${collapsed ? 'w-20' : 'w-72'}`}>
<nav className="space-y-2"> <nav className="space-y-2">
{MENU.map(section => ( {MENU.map(section => (
<div key={section.title}> <div key={section.title}>

View File

@@ -30,7 +30,7 @@ export default function Home() {
const profile = useProfileStore(store => store.profile) const profile = useProfileStore(store => store.profile)
return ( return (
<main className="flex flex-col gap-16 lg:gap-32 mb-16 lg:mb-32"> <main className="flex flex-col gap-16 lg:gap-32 pb-16 lg:pb-32 bg-white">
{/* banner */} {/* banner */}
<section className="w-full relative"> <section className="w-full relative">
@@ -158,8 +158,8 @@ export default function Home() {
</div> </div>
</Section> </Section>
{/* 行业资讯 */} {/* 推荐文章 */}
<Section title="行业资讯"> <Section title="推荐文章">
<div className="flex gap-8 max-md:gap-4"> <div className="flex gap-8 max-md:gap-4">
<button className="px-4 max-md:-mx-4"> <button className="px-4 max-md:-mx-4">
<Image src={next} alt="prev" className="rotate-180"/> <Image src={next} alt="prev" className="rotate-180"/>

View File

@@ -141,6 +141,7 @@
} }
} }
/* 默认样式覆盖 */
@layer base { @layer base {
* { * {
@apply border-border outline-ring/50; @apply border-border outline-ring/50;
@@ -155,6 +156,7 @@
} }
} }
/* highlight.js 样式覆盖 */
pre code.hljs { pre code.hljs {
background: inherit; background: inherit;
padding: 0; padding: 0;

View File

@@ -246,7 +246,7 @@ const FormFields = memo(() => {
</FormLabel> </FormLabel>
<FormLabel htmlFor={`${id}-v-space`} className="px-3 h-10 border rounded-md flex items-center text-sm"> <FormLabel htmlFor={`${id}-v-space`} className="px-3 h-10 border rounded-md flex items-center text-sm">
<RadioGroupItem value="9" id={`${id}-v-space`} className="mr-2"/> <RadioGroupItem value="9" id={`${id}-v-space`} className="mr-2"/>
<span> ( \t )</span> <span> (\t)</span>
</FormLabel> </FormLabel>
</RadioGroup> </RadioGroup>
)} )}
@@ -261,15 +261,15 @@ const FormFields = memo(() => {
className="grid grid-cols-2 md:grid-cols-3 gap-4"> className="grid grid-cols-2 md:grid-cols-3 gap-4">
<FormLabel htmlFor={`${id}-v-newline2`} className="px-3 h-10 border rounded-md flex items-center text-sm"> <FormLabel htmlFor={`${id}-v-newline2`} className="px-3 h-10 border rounded-md flex items-center text-sm">
<RadioGroupItem value="13,10" id={`${id}-v-newline2`} className="mr-2"/> <RadioGroupItem value="13,10" id={`${id}-v-newline2`} className="mr-2"/>
<span> ( \r\n )</span> <span> (\r\n)</span>
</FormLabel> </FormLabel>
<FormLabel htmlFor={`${id}-v-newline`} className="px-3 h-10 border rounded-md flex items-center text-sm"> <FormLabel htmlFor={`${id}-v-newline`} className="px-3 h-10 border rounded-md flex items-center text-sm">
<RadioGroupItem value="10" id={`${id}-v-newline`} className="mr-2"/> <RadioGroupItem value="10" id={`${id}-v-newline`} className="mr-2"/>
<span> ( \n )</span> <span> (\n)</span>
</FormLabel> </FormLabel>
<FormLabel htmlFor={`${id}-v-newline3`} className="px-3 h-10 border rounded-md flex items-center text-sm"> <FormLabel htmlFor={`${id}-v-newline3`} className="px-3 h-10 border rounded-md flex items-center text-sm">
<RadioGroupItem value="13" id={`${id}-v-newline3`} className="mr-2"/> <RadioGroupItem value="13" id={`${id}-v-newline3`} className="mr-2"/>
<span> ( \r )</span> <span> (\r)</span>
</FormLabel> </FormLabel>
</RadioGroup> </RadioGroup>
)} )}