Updated carousel layout and optimized top menu styling.

This commit is contained in:
Qubot 2025-03-23 16:32:19 +00:00
parent 721bf52e32
commit 1d5605bb64
3 changed files with 139 additions and 148 deletions

View File

@ -12,20 +12,20 @@ spec:
label: 轮播块
value:
- title: MeterSphere
desc: MeterSphere 是一站式的开源持续测试平台,遵循 GPL v3 开源许可协议涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付。
desc: MeterSphere 是一站式的开源持续测试平台,...
url: https://metersphere.io
buy: https://taobao.com
background_img: /themes/theme-quark/assets/img/hero-bg.jpg
- title: DataEase
desc: DataEase 是开源的数据可视化分析工具帮助用户快速分析数据并洞察业务趋势从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。
desc: DataEase 是开源的数据可视化分析工具,...
url: https://dataease.io
buy: https://taobao.com
background_img: https://banana-pi.org.cn/web/userfiles/ad/yingwen1216/M7-1_-E8-BD-AE-E6-92-AD-E5-9B-BE.jpg
- title: JumpServer
desc: JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。改变世界,从一点点开始。
desc: JumpServer 是广受欢迎的开源堡垒机,...
url: https://www.jumpserver.org
- title: KubeOperator
desc: KubeOperator 是一个开源的轻量级 Kubernetes 发行版,专注于帮助企业规划、部署和运营生产级别的 Kubernetes 集群。
url: https://kubeoperator.io
- title: Halo
desc: 好用又强大的开源建站工具。
url: https://halo.run
buy: https://taobao.com
background_img: /themes/theme-quark/assets/img/hero-bg.jpg
children:
- $formkit: text
name: title
@ -38,11 +38,15 @@ spec:
- $formkit: url
name: url
label: 跳转地址
value:
- $formkit: attachment
name: carousel_bg_img
label: 轮播块背景图片
value: /themes/theme-quark/assets/img/hero-bg.jpg
value:
- $formkit: url
name: buy
label: 购买地址
value:
- $formkit: attachment
name: background_img
label: 背景图片
value:
- $formkit: radio
name: show_card
id: show_home_card
@ -509,18 +513,22 @@ spec:
title: MeterSphere
desc: MeterSphere 是一站式的开源持续测试平台,遵循 GPL v3 开源许可协议涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付。
url: https://metersphere.io
buy: https://taobao.com
- img: /themes/theme-quark/assets/img/card-2.jpg
title: DataEase
desc: DataEase 是开源的数据可视化分析工具帮助用户快速分析数据并洞察业务趋势从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。
url: https://dataease.io
buy: https://taobao.com
- img: /themes/theme-quark/assets/img/card-3.jpg
title: JumpServer
desc: JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。改变世界,从一点点开始。
url: https://www.jumpserver.org
buy: https://taobao.com
- img: /themes/theme-quark/assets/img/card-4.jpg
title: KubeOperator
desc: KubeOperator 是一个开源的轻量级 Kubernetes 发行版,专注于帮助企业规划、部署和运营生产级别的 Kubernetes 集群。
url: https://kubeoperator.io
url: https://kubeoperator.io
buy: https://taobao.com
children:
- $formkit: attachment
name: img
@ -538,6 +546,10 @@ spec:
name: url
label: 跳转地址
value:
- $formkit: url
name: buy
label: 购买地址
value:
- $formkit: radio
if: "$get(show_service).value"
name: show_price

View File

@ -78,11 +78,12 @@ h6,
}
#header.header-transparent {
box-shadow: 0 1px 40px -8px #00000080;
background: none;
}
#header.header-scrolled {
background: rgba(30, 67, 86, 0.8);
background: none;
height: 60px;
}
@ -98,7 +99,7 @@ h6,
#header .logo h1 a,
#header .logo h1 a:hover {
color: #fff;
color: #000000;
text-decoration: none;
}
@ -109,7 +110,7 @@ h6,
}
#main {
margin-top: 80px;
margin-top: 30px;
}
/*--------------------------------------------------------------
@ -158,7 +159,7 @@ h6,
.navbar .active,
.navbar .active:focus,
.navbar li:hover>a {
color: #a2cce3;
color: #000000;
}
.navbar .dropdown ul {
@ -335,71 +336,72 @@ h6,
--------------------------------------------------------------*/
#hero {
width: 100%;
height: 90vh;
overflow: hidden;
height: 60vh; /* 确保高度正确 */
position: relative;
overflow: hidden;
margin-top: 80px;
background-color: #00403908;
}
#hero-bg {
content: "";
position: absolute;
left: 50%;
top: 0;
width: 130%;
height: 95%;
z-index: 0;
border-radius: 0 0 50% 50%;
transform: translateX(-50%) rotate(0deg);
}
#hero::before {
content: "";
position: absolute;
left: 50%;
top: 0;
width: 130%;
height: 96%;
background: #68A4C4;
opacity: 0.3;
z-index: 0;
border-radius: 0 0 50% 50%;
transform: translateX(-50%) translateY(18px) rotate(2deg);
}
#hero .carousel-container {
.container-fluid {
display: flex;
justify-content: center;
width: 80%;
height: 100%; /* 确保高度为父容器的100% */
align-items: center;
flex-direction: column;
text-align: center;
bottom: 0;
top: 0;
left: 0;
right: 0;
justify-content: center;
}
#hero h2 {
color: #fff;
margin-bottom: 30px;
/* 左侧文字区域 */
.left-container {
width: 50%;
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
}
.carousel-content {
text-align: left;
max-width: 80%;
}
.carousel-content h2 {
color: #000000;
font-size: 48px;
font-weight: 700;
margin-bottom: 20px;
}
#hero p {
width: 80%;
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
margin: 0 auto 30px auto;
color: #fff;
.carousel-content p {
color: #000000;
margin-bottom: 20px;
}
/* 右侧图片区域 */
.right-container {
width: 50%;
height: 100%; /* 确保高度为父容器的100% */
}
.carousel-image {
width: 100%;
height: 100%; /* 确保高度为父容器的100% */
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
/* 轮播控制按钮 */
#hero .carousel-control-prev,
#hero .carousel-control-next {
width: 10%;
}
#hero .carousel-control-next-icon,
#hero .carousel-control-prev-icon {
#hero .carousel-control-prev-icon,
#hero .carousel-control-next-icon {
border-radius: 50%; /* 将元素变成圆形 */
color: #000000;
border: 2px solid #000000;
background: none;
font-size: 48px;
line-height: 1;
@ -407,80 +409,43 @@ h6,
height: auto;
}
#hero .btn-get-started {
/* 按钮样式 */
.btn-get-started {
font-family: "Roboto", sans-serif;
font-weight: 500;
font-size: 14px;
letter-spacing: 1px;
display: inline-block;
padding: 12px 32px;
border-radius: 50px;
transition: 0.5s;
line-height: 1;
margin: 10px;
color: #fff;
-webkit-animation-delay: 0.8s;
animation-delay: 0.8s;
border: 2px solid #68A4C4;
color: #000000;
border: 2px solid #000000;
display: inline-block;
}
#hero .btn-get-started:hover {
.btn-get-started:hover {
background: #68A4C4;
color: #fff;
text-decoration: none;
}
@media (min-width: 1024px) {
#hero p {
width: 60%;
}
#hero .carousel-control-prev,
#hero .carousel-control-next {
width: 5%;
}
}
/* 响应式 */
@media (max-width: 768px) {
#hero::after {
width: 180%;
height: 95%;
border-radius: 0 0 50% 50%;
transform: translateX(-50%) rotate(0deg);
.container-fluid {
flex-direction: column;
}
#hero::before {
top: 0;
width: 180%;
height: 94%;
border-radius: 0 0 50% 50%;
transform: translateX(-50%) translateY(20px) rotate(4deg);
.left-container,
.right-container {
width: 100%;
text-align: center;
}
.carousel-content {
max-width: 90%;
text-align: center;
}
}
@media (max-width: 575px) {
#hero h2 {
font-size: 30px;
}
#hero::after {
left: 40%;
top: 0;
width: 200%;
height: 95%;
border-radius: 0 0 50% 50%;
transform: translateX(-50%) rotate(0deg);
}
#hero::before {
left: 50%;
top: 0;
width: 200%;
height: 94%;
border-radius: 0 0 50% 50%;
transform: translateX(-50%) translateY(20px) rotate(4deg);
}
}
/*--------------------------------------------------------------
# Hero No Slider Section
@ -547,7 +512,7 @@ h6,
# Sections General
--------------------------------------------------------------*/
section {
padding: 60px 0;
padding: 20px 0;
}
.section-bg {
@ -2097,7 +2062,8 @@ section {
transition: 0.3s;
}
.blog .sidebar .categories ul a:hover,.blog .sidebar .categories ul a.active{
.blog .sidebar .categories ul a:hover,
.blog .sidebar .categories ul a.active {
color: #68A4C4;
}
@ -2162,7 +2128,8 @@ section {
transition: 0.3s;
}
.blog .sidebar .tags ul a:hover, .blog .sidebar .tags ul a.active{
.blog .sidebar .tags ul a:hover,
.blog .sidebar .tags ul a.active {
color: #fff;
border: 1px solid #68A4C4;
background: #68A4C4;
@ -2351,7 +2318,7 @@ section {
color: #a2cce3;
}
.img-max-height{
.img-max-height {
height: 400px;
width: 100%;
}

View File

@ -6,32 +6,44 @@
<body>
<th:block th:replace="~{modules/header::goPage('home')}" />
<!-- ======= Hero Section ======= -->
<section id="hero" class="d-flex justify-cntent-center align-items-center">
<div id="heroCarousel" class="container carousel carousel-fade" data-bs-ride="carousel" data-bs-interval="5000">
<!-- Slide 1 -->
<div th:each="cs,csStat:${theme.config.home.carousel}"
th:class="${csStat.index} == 0 ? 'carousel-item active' : 'carousel-item'">
<div class="carousel-container">
<h2 class="animate__animated animate__fadeInDown" th:text="${cs.title}"></h2>
<p class="animate__animated animate__fadeInUp" th:text="${cs.desc}"></p>
<a th:href="${cs.url}" class="btn-get-started animate__animated animate__fadeInUp">查看更多</a>
<!-- ======= Hero Section ======= -->
<section id="hero" class="d-flex align-items-center">
<div class="container-fluid">
<!-- 合并后的轮播组件 -->
<div id="heroCarouselContent" class="carousel carousel-fade" data-bs-ride="carousel" data-bs-interval="5000">
<div class="carousel-inner">
<!-- 轮播项 -->
<div th:each="cs,csStat:${theme.config.home.carousel}"
th:class="${csStat.index} == 0 ? 'carousel-item active' : 'carousel-item'">
<div class="d-flex">
<!-- 左侧文字部分 -->
<div class="left-container">
<div class="carousel-content">
<h2 class="animate__animated animate__fadeInDown" th:text="${cs.title}"></h2>
<p class="animate__animated animate__fadeInUp" th:text="${cs.desc}"></p>
<a th:href="${cs.url}" class="btn-get-started animate__animated animate__fadeInUp">查看更多</a>
<a th:href="${cs.buy}" class="btn-get-started animate__animated animate__fadeInUp">立即购买>></a>
</div>
</div>
<!-- 右侧图片部分 -->
<div class="right-container">
<img th:src="${cs.background_img}" alt="Carousel Image" class="carousel-image" />
</div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#heroCarousel" role="button" data-bs-slide="prev">
<span class="carousel-control-prev-icon bx bx-chevron-left" aria-hidden="true"></span>
</a>
<a class="carousel-control-next" href="#heroCarousel" role="button" data-bs-slide="next">
<span class="carousel-control-next-icon bx bx-chevron-right" aria-hidden="true"></span>
</a>
</div>
<div id="hero-bg"
th:style="'background: linear-gradient(to right, rgba(30, 67, 86, 0.8), rgba(30, 67, 86, 0.6)), url('+${theme.config.home.carousel_bg_img}+') center top no-repeat;'" />
</section><!-- End Hero -->
<!-- 轮播控制按钮 -->
<a class="carousel-control-prev" href="#heroCarouselContent" role="button" data-bs-slide="prev">
<span class="carousel-control-prev-icon bx bx-chevron-left" aria-hidden="true"></span>
</a>
<a class="carousel-control-next" href="#heroCarouselContent" role="button" data-bs-slide="next">
<span class="carousel-control-next-icon bx bx-chevron-right" aria-hidden="true"></span>
</a>
</div>
</section>
<main id="main">