diff --git a/config/routes/competitions.ts b/config/routes/competitions.ts index 470b465c3..b683beafe 100644 --- a/config/routes/competitions.ts +++ b/config/routes/competitions.ts @@ -37,15 +37,14 @@ export const Competitions = { },{ path: '/competitions/2026/organization', component: '@/pages/2026/organization', - }, - // { - // path: '/competitions/2026/track/:id', - // component: '@/pages/2026/track', - // }, - { - path: '/competitions/2026/information', - component: '@/pages/2026/information', - } + },{ + path: '/competitions/2026/train', + component: '@/pages/2026/train', + }, + { + path: '/competitions/2026/information', + component: '@/pages/2026/information', + } ] }, { diff --git a/src/components/Header/index.less b/src/components/Header/index.less index 0f3b75937..400e81934 100755 --- a/src/components/Header/index.less +++ b/src/components/Header/index.less @@ -18,6 +18,9 @@ z-index: 999; width: 100%; + & + section { + padding-top: 60px; + } } .menu { diff --git a/src/pages/2026/banner/index.less b/src/pages/2026/banner/index.less index 8bb71a4c0..7cc0807fb 100644 --- a/src/pages/2026/banner/index.less +++ b/src/pages/2026/banner/index.less @@ -49,6 +49,7 @@ position: relative; font-size: 15px; width: 100%; + margin-top: -60px; // height: 100vh; // background-image: url(../img/mainbanner.png); // background-size: cover; diff --git a/src/pages/2026/center/index.jsx b/src/pages/2026/center/index.jsx index 7bda48718..ca417be36 100644 --- a/src/pages/2026/center/index.jsx +++ b/src/pages/2026/center/index.jsx @@ -126,12 +126,15 @@ function Center(props) {
{ window.open(item.url)}}>
{item.name}
- - {item.level === 1 && '初级'} - {item.level === 2 && '中级'} - {item.level === 3 && '高级'} - -
+ { + item.level && + + {item.level === 1 && '初级'} + {item.level === 2 && '中级'} + {item.level === 3 && '高级'} + + } + { item.level &&
} {item.owner}
diff --git a/src/pages/2026/center/info.js b/src/pages/2026/center/info.js index c8c034ba6..7d8712746 100644 --- a/src/pages/2026/center/info.js +++ b/src/pages/2026/center/info.js @@ -49,6 +49,14 @@ export const directions = [ owner: '阿里云计算有限公司', url: 'https://www.gitlink.org.cn/competitions/track2_2026Mooncake' } + ], + '开源案例教学赛道': [ + { + name: '开源案例教学赛', + level: 2, + owner: '头歌', + url: 'https://www.gitlink.org.cn/competitions/track32026' + } ] } }, diff --git a/src/pages/2026/components/Title/index.less b/src/pages/2026/components/Title/index.less index f258a37b5..d48121e06 100644 --- a/src/pages/2026/components/Title/index.less +++ b/src/pages/2026/components/Title/index.less @@ -13,6 +13,7 @@ text-transform: uppercase; font-weight: 500; margin-bottom: 0; + padding-top: 90px; img{ margin-top: -4px; &:first-child{ diff --git a/src/pages/2026/home/index.jsx b/src/pages/2026/home/index.jsx index 62558d967..ca3e96fc5 100644 --- a/src/pages/2026/home/index.jsx +++ b/src/pages/2026/home/index.jsx @@ -214,7 +214,7 @@ function Home(){
  • 开源案例教学赛道

    -

    提炼优秀开源项目实践经验,甄选优质开源实战案例,打造可复用的技术教学案例库。

    +

    汇聚AI赋能教育的创新实践,构建开放共享、协同共建的智慧教育生态社区。

  • diff --git a/src/pages/2026/home/index.less b/src/pages/2026/home/index.less index 67cfb30ec..71bf02af5 100644 --- a/src/pages/2026/home/index.less +++ b/src/pages/2026/home/index.less @@ -279,13 +279,13 @@ background-size: 100% 100%; margin-top: 40px; display: flex; + justify-content: space-between; padding:59px 40px 59px 30px; .timelineItem{ text-align: left; height: 100%; flex:1; font-size:16px; - margin-right: 67px; color:#091221; &:last-child{ margin-right: 0; @@ -324,6 +324,7 @@ line-height:32px; font-family: alibabaPuhuiR; margin-bottom: auto; + max-width: 260px; } .l_btn{ height:50px; diff --git a/src/pages/2026/img/train/addr.png b/src/pages/2026/img/train/addr.png new file mode 100644 index 000000000..4f2505e67 Binary files /dev/null and b/src/pages/2026/img/train/addr.png differ diff --git a/src/pages/2026/img/train/ewmBack.png b/src/pages/2026/img/train/ewmBack.png new file mode 100644 index 000000000..9c2feead0 Binary files /dev/null and b/src/pages/2026/img/train/ewmBack.png differ diff --git a/src/pages/2026/img/train/ewmList.png b/src/pages/2026/img/train/ewmList.png new file mode 100644 index 000000000..4aeafb5e7 Binary files /dev/null and b/src/pages/2026/img/train/ewmList.png differ diff --git a/src/pages/2026/img/train/faqBack.png b/src/pages/2026/img/train/faqBack.png new file mode 100644 index 000000000..7f91e1d5e Binary files /dev/null and b/src/pages/2026/img/train/faqBack.png differ diff --git a/src/pages/2026/img/train/trainBanner1.png b/src/pages/2026/img/train/trainBanner1.png new file mode 100644 index 000000000..f4148668f Binary files /dev/null and b/src/pages/2026/img/train/trainBanner1.png differ diff --git a/src/pages/2026/img/train/trainWhite.png b/src/pages/2026/img/train/trainWhite.png new file mode 100644 index 000000000..77fdce6a1 Binary files /dev/null and b/src/pages/2026/img/train/trainWhite.png differ diff --git a/src/pages/2026/img/train/trainvedioBack.png b/src/pages/2026/img/train/trainvedioBack.png new file mode 100644 index 000000000..fad68c642 Binary files /dev/null and b/src/pages/2026/img/train/trainvedioBack.png differ diff --git a/src/pages/2026/img/train/trainxing.png b/src/pages/2026/img/train/trainxing.png new file mode 100644 index 000000000..a9b0f01a6 Binary files /dev/null and b/src/pages/2026/img/train/trainxing.png differ diff --git a/src/pages/2026/info.js b/src/pages/2026/info.js index 08420c4d8..d7c2a6604 100644 --- a/src/pages/2026/info.js +++ b/src/pages/2026/info.js @@ -22,7 +22,7 @@ export const menu = [ }, // { // name: '培训答疑', - // link: '/competitions/2026/information', + // link: '/competitions/2026/train', // } ] diff --git a/src/pages/2026/information/index.jsx b/src/pages/2026/information/index.jsx index 7718ab182..2f514aba8 100644 --- a/src/pages/2026/information/index.jsx +++ b/src/pages/2026/information/index.jsx @@ -271,8 +271,8 @@ console.log(information,dirList); return e.anchor === "notice" &&
    { - informationList[e.anchor].map(( e, k ) => { - return
    + informationList["notice"].map(( e, k ) => { + return
    { e.name }

    { e.summary }

    @@ -319,30 +319,6 @@ console.log(information,dirList); }
    :"" } - {/* - { - information.category.map((e) => { - return
    -

    {e.eng.toUpperCase()}

    -

    { e.title }

    -
    - { - informationList[e.anchor] && informationList[e.anchor].length > 0 ? informationList[e.anchor].map(( e, k ) => { - return
    -
    - { e.name } -

    { e.summary }

    - 阅读全文 -
    -
    - }): - "" - } -
    -
    - }) - } -
    */}
    } diff --git a/src/pages/2026/information/index.less b/src/pages/2026/information/index.less index 8e09673fb..5836471fe 100644 --- a/src/pages/2026/information/index.less +++ b/src/pages/2026/information/index.less @@ -504,7 +504,7 @@ padding-left: 40px; padding-right: 0px; } - &:last-child,&:nth-last-child(2){ + &:last-child{//,&:nth-last-child(2) border-bottom: none; } .item-left { diff --git a/src/pages/2026/organization/index.less b/src/pages/2026/organization/index.less index e8abb13c2..17d7c5a44 100644 --- a/src/pages/2026/organization/index.less +++ b/src/pages/2026/organization/index.less @@ -15,7 +15,7 @@ .ant-collapse-item{ margin-bottom: 30px; background: rgb(255, 255, 255); - border-radius: 2px; + border-radius: 13px; border: none; &.ant-collapse-item-active{ background-image: url(../img/orzitem.png); diff --git a/src/pages/2026/train/index.jsx b/src/pages/2026/train/index.jsx new file mode 100644 index 000000000..bf11779e1 --- /dev/null +++ b/src/pages/2026/train/index.jsx @@ -0,0 +1,81 @@ +import React from 'react'; +import "../home/index.less"; +import styles from "./index.less"; +import Left from '../img/left.png'; +import Right from '../img/right.png'; +import Addr from '../img/train/addr.png'; +import Xing from '../img/train/trainxing.png'; +import { Carousel } from 'antd'; +function TrainAnswer(){ + return( +
    +
    +
    +
    +

    NEW第八届CCF开源创新大赛官方培训

    +
    + 独家赛题解读
    高手带你玩转开源 +
    +

    开源大赛官方培训即将开启,助你冲刺奖项

    +
    +
    +
    +
    +

    开源大赛一期!冠军导师培训预告

    +
    2026年3月13日 17:00:00
    +

    直播地址:https://cloud.baidu.com/?track=d2b70a5c

    + 复制链接观看 +
    +
    + {/* 这里显示vedio */} +
    +
    +
    +
    +
    +
    +

    community exchange

    +

    交流社群

    +
    +
    + +
    +
      +
    • +
      + XXXXQQ交流群 +
    • +
    • +
      + XXXXQQ交流群 +
    • +
    • +
      + XXXXQQ交流群 +
    • +
    • +
      + XXXXQQ交流群 +
    • +
    • +
      + XXXXQQ交流群 +
    • +
    +
    +
    +
    +
    +

    扫码进群
    一起hack开源未来

    +

    与万千开发者实时交流技术心得,碰撞创新灵感,分享开发工具与最佳
    实践,组队参赛、资源对接、导师答疑一站式解决

    +
    +
    +
    +
    +

    High-frequency FAQs

    +

    高频FAQ

    +
    +
    + ) +} +export default TrainAnswer; \ No newline at end of file diff --git a/src/pages/2026/train/index.less b/src/pages/2026/train/index.less new file mode 100644 index 000000000..9f72060ff --- /dev/null +++ b/src/pages/2026/train/index.less @@ -0,0 +1,204 @@ +.trainPage{ + font-family:alibabaPuhuiM; + img.shine{ + animation: shine 2s infinite; + }img.shine.delay1{ + animation: shine 2s infinite; + animation-delay: 0.3s + } + + + // 第二个模块,二维码 + .ewmBox{ + background-image:url(../img/train/ewmBack.png) ; + background-size: 100% 100%; + padding-bottom: 58px; + .ewmContent{ + display: flex; + align-items: center; + margin-top: 25px; + .carouselBox{ + .slick-dots{ + bottom: -15px!important;; + } + } + .ewms{ + padding:30px 30px 46px 30px; + background:rgba(255, 255, 255, 0.15); + border-radius:28px; + width: 50%; + min-width: 939px; + margin-right: 123px; + .ewmList{ + background-image: url(../img/train/ewmList.png); + background-size: 100% 100%; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + border-radius: 16px; + padding:27px; + li{ + box-sizing: border-box; + margin:18px 30px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + .ewmImg{ + background:rgba(255, 255, 255, 0.6); + border-radius:16px; + padding:6px; + width: max-content; + height: max-content; + img{ + height: 128px; + width: 128px; + transform: scale(0.7); + transition: 0.6s; + &:hover{ + transform: unset; + } + } + } + span{ + color:#091221; + font-size:15px; + height: 21px; + line-height: 21px; + margin-top: 10px; + } + } + } + } + .ewmTitle{ + color:#091221; + font-size:50px; + text-align: left; + span{ + position: relative; + &::after{ + content: ""; + position: absolute; + left: 120%; + width:85px; + height:14px; + background:#0d2097; + top: 27px; + } + } + } + .ewmDesc{ + text-align: left; + color:#091221; + font-size:15px; + line-height:30px; + } + } + } + // 第一个模块 + .trainFirstBox{ + background-image:url(../img/train/trainBanner1.png) ; + background-size: 100% 100%; + padding:86px 0px 65px; + .trainFirst{ + display: flex; + align-items: center; + justify-content: space-between; + } + .xing{ + height:30px; + line-height:30px; + background:linear-gradient(90.7deg,#e6eaf9 3.67%,#e6eaf9 95.11%); + border-radius:17px; + padding:0px 13px 0px 17px; + width: max-content; + box-sizing: border-box; + display: flex; + justify-content: center; + span{ + margin-right: 6px; + background-image: linear-gradient(313.07deg, #27d1ff, #352eff 46.85%, #091221); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + display: flex; + align-items: center; + } + } + .xingTitle{ + font-family: DingTalk JinBuTi; + color:#091221; + font-size:54px; + line-height:80px; + text-align: left; + span:last-child{ + background:linear-gradient(90deg,#4856ff 2.18%,#de8b29 52.06%,#fa5ea0 96.81%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + } + } + .trainRight{ + background:rgba(255, 255, 255, 0.25); + border:1px solid #ffffff; + border-radius:26px; + padding:15px 18px; + width: 40%; + margin: 0 auto; + .vedioBox{ + background-image: url(../img/train/trainvedioBack.png); + background-size: 100% 100%; + min-height: 329px; + display: flex; + justify-content: center; + .vedioWords{ + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + color: #fff; + .vedioName{ + font-family:DingTalk JinBuTi; + font-size:34px; + margin-bottom: 0px!important; + } + .vedioTime{ + position: relative; + font-size:20px; + height:54px; + line-height:54px; + margin-top:30px; + background:linear-gradient(90.45deg,rgba(172, 128, 255, 0) 0.06%,rgba(199, 201, 255, 0.31) 49.26%,rgba(105, 131, 255, 0) 99.93%); + &::after{ + content: ""; + top: 0px; + position: absolute; + left: 0px; + width: 100%; + height: 2px; + background-image: url(../img/train/trainWhite.png); + background-size: 100% 100%; + } + } + .vedioAddr{ + font-size:15px; + margin-top:28px; + } + .vedioBtn{ + height:52px; + line-height:54px; + padding:0 27px; + font-size:16px; + background:linear-gradient(180deg,#4638eb 0%,#ffba69 100%); + border-radius:26px; + margin-top: 15px; + color: #fff; + } + } + } + } +} +@keyframes shine { + 0%{opacity: 0;} + 80%{opacity: 1;} + 100%{opacity: 0;} +} \ No newline at end of file