diff --git a/assets/scss/live-detail.scss b/assets/scss/live-detail.scss
index e69de29bb..a7ed7427c 100644
--- a/assets/scss/live-detail.scss
+++ b/assets/scss/live-detail.scss
@@ -0,0 +1,100 @@
+@import 'variables';
+@import 'mixin';
+@import 'markdown';
+
+.md-body {
+ font-size: 16px;
+ line-height: 2.29;
+ color: #36435c;
+}
+
+.md-body h2 {
+ font-weight: 500;
+ line-height: 64px;
+ color: #171c34;
+ text-shadow: none;
+ text-align: left;
+ margin-bottom: 20px;
+ border-bottom: 1px solid #ccd3db;
+}
+
+.md-body h3 {
+ font-weight: 600;
+ line-height: 1.5;
+ color: #171c34;
+}
+
+.md-body img {
+ max-width: 100%;
+ box-sizing: content-box;
+ background-color: #fff;
+ border-radius: 5px;
+ box-shadow: none;
+}
+
+.md-body blockquote {
+ padding: 4px 20px 4px 12px;
+ border-radius: 4px;
+ background-color: #ecf0f2;
+}
+
+header.navigation {
+ box-shadow: 0 4px 8px 0 rgba(36,46,66,.06), 0 8px 16px 0 rgba(36,46,66,.05);
+ background-image: linear-gradient(to bottom,rgba(134,219,162,0.9),rgba(0,170,114,0.9));
+}
+
+.section-1 {
+ padding-top: 124px;
+
+ & > div {
+ box-sizing: border-box;
+ width: 880px;
+ margin: 0 auto;
+ padding: 40px 60px 76px;
+ background-color: #ffffff;
+
+ @media only screen and (max-width: $mobile-max-width) {
+ width: 100%;
+ padding: 20px;
+ }
+
+ .video-div {
+ position: relative;
+ margin-bottom: 24px;
+
+ video {
+ width: 100%;
+ outline: none;
+ }
+
+ iframe {
+ width: 100%;
+ height: 400px;
+
+ @media only screen and (max-width: $mobile-max-width) {
+ height: 200px;
+ }
+ }
+ }
+
+ .time-div {
+ img, span {
+ vertical-align: middle;
+ font-size: 14px;
+ line-height: 1.43;
+ color: #919aa3;
+ }
+ span + img {
+ margin-left: 20px;
+ }
+ }
+
+ h1 {
+ margin-top: 8px;
+ text-shadow: 0 8px 16px rgba(35, 45, 65, 0.1);
+ font-size: 40px;
+ line-height: 1.4;
+ color: #171c34;
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/scss/live.scss b/assets/scss/live.scss
index f954f1995..8d2e677ce 100644
--- a/assets/scss/live.scss
+++ b/assets/scss/live.scss
@@ -1,15 +1,147 @@
-@import 'open-source';
-
+@import 'variables';
+@import 'mixin';
+.btn-a {
+ display: inline-block;
+ padding: 0 53px;
+ height: 56px;
+ border-radius: 28px;
+ line-height: 56px;
+ font-size: 16px;
+ color: #ffffff;
+ box-shadow: 0 10px 50px 0 rgba(34, 43, 62, 0.1), 0 8px 16px 0 rgba(33, 43, 61, 0.2), 0 10px 50px 0 rgba(34, 43, 62, 0.1);
+ background-image: linear-gradient(to bottom, rgba(85, 188, 138, 0), rgba(85, 188, 138, 0.1) 97%), linear-gradient(to bottom, #55bc8a, #55bc8a);
+ &:hover {
+ box-shadow: none;
+ }
+}
.section-1 {
position: relative;
padding-top: 124px;
padding-bottom: 136px;
}
+.section-2 {
+ position: relative;
+ margin-top: -94px;
+
+ .common-layout {
+ display: flex;
+ border-radius: 8px;
+ box-shadow: 0 4px 8px 0 rgba(36, 46, 66, 0.06), 0 8px 16px 0 rgba(36, 46, 66, 0.05);
+ overflow: hidden;
+ background-color: #ffffff;
+
+ @media only screen and (max-width: $mobile-max-width) {
+ flex-direction: column;
+ border-radius: 0;
+ }
+
+ .live-2-left {
+ width: 840px;
+ height: 400px;
+ @media only screen and (max-width: $mobile-max-width) {
+ width: 100%;
+ height: auto;
+ }
+ img {
+ width: 100%;
+ height: 100%;
+ min-height: 200px;
+ object-fit: cover;
+ }
+ }
+
+ .live-2-right {
+ box-sizing: border-box;
+ width: 320px;
+ height: 400px;
+ padding: 10px;
+ @media only screen and (max-width: $mobile-max-width) {
+ max-width: 320px;
+ width: auto;
+ height: auto;
+ margin: 0 auto;
+ }
+ h2 {
+ margin-bottom: 10px;
+ font-size: 18px;
+ line-height: 1.78;
+ letter-spacing: -0.05px;
+ color: #3d3e49;
+ @include block-ellipsis(2);
+ }
+
+ .tag {
+ position: absolute;
+ top: 4px;
+ right: 0;
+ font-size: 12px;
+ padding: 4px 10px;
+ line-height: 12px;
+ border-top-left-radius: 10px;
+ border-bottom-left-radius: 10px;
+ }
+
+ .shadow {
+ position: relative;
+ padding: 20px 24px;
+ border-radius: 8px;
+ box-shadow: 0 4px 8px 0 rgba(36, 46, 66, 0.06), 0 8px 16px 0 rgba(36, 46, 66, 0.05);
+ }
+
+ .notice {
+ box-sizing: border-box;
+ height: 250px;
+
+ p {
+ margin-bottom: 6px;
+ height: 28px;
+ font-size: 16px;
+ line-height: 28px;
+ letter-spacing: -0.04px;
+ color: #919aa3;
+
+ img {
+ vertical-align: middle;
+ margin-right: 4px;
+ }
+ }
+
+ a {
+ margin: 34px auto 0;
+ height: 40px;
+ padding: 0 28px;
+ line-height: 40px;
+ }
+
+ .tag {
+ color: #3d3e49;
+ background-color: #f7b500;
+ }
+ }
+
+ .over {
+ box-sizing: border-box;
+ height: 120px;
+ margin-top: 10px;
+
+ a {
+ color: #3d3e49;
+ }
+
+ .tag {
+ color: #ffffff;
+ background-color: #919aa3;
+ }
+ }
+ }
+ }
+}
+
.section-3 {
background-color: #fff;
- padding-top: 60px;
- padding-bottom: 100px;
+ padding-top: 30px;
+ padding-bottom: 60px;
@media only screen and (max-width: $mobile-max-width) {
padding-top: 20px;
@@ -19,7 +151,7 @@
& > div {
& > .video-tab-ul {
- padding: 30px 34px 22px;
+ padding: 0 34px;
border-radius: 5px;
box-shadow: 0 4px 16px 0 rgba(7,42,68,.1);
background-color: #fff;
@@ -28,7 +160,7 @@
display: inline-block;
min-width: 48px;
padding: 8px 16px;
- margin-bottom: 8px;
+ margin: 10px 0;
border-radius: 20px;
-webkit-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
@@ -220,4 +352,129 @@
height: 300px;
}
}
+}
+
+.section-4 {
+ background-image: linear-gradient(113deg, #4a499a 27%, #8552c3 81%);
+ .common-layout {
+ white-space: nowrap;
+ overflow: auto;
+ & > div {
+ box-sizing: border-box;
+ display: inline-block;
+ vertical-align: top;
+ white-space: normal;
+ width: 140px;
+ height: 225px;
+ margin: 80px 40px;
+ padding-top: 20px;
+ border-top: 1px solid #a1b3c4;
+
+ .time-div {
+ display: flex;
+
+ .right {
+ margin-left: 4px;
+ font-weight: bold;
+ line-height: 1;
+ color: #ffffff;
+ .date {
+ margin-bottom: 4px;
+ font-size: 24px;
+ }
+ .time {
+ font-size: 14px;
+ }
+ }
+ }
+
+ h3 {
+ height: 60px;
+ margin: 21px 0 47px;
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 1.43;
+ color: #d5dee7;
+ a {
+ color: #d5dee7;
+
+ &:hover {
+ color: #008a5c;
+ }
+ }
+ }
+
+ button {
+ font-size: 12px;
+ font-weight: 600;
+ line-height: 2;
+ border: none;
+ padding: 5px 28px;
+ border-radius: 17px;
+ cursor: pointer;
+ box-shadow: 0 10px 50px 0 rgba(34, 43, 62, 0.1), 0 8px 16px 0 rgba(33, 43, 61, 0.2);
+ &:hover {
+ box-shadow: none;
+ }
+ }
+
+ .over-btn {
+ color: #ffffff;
+ background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 97%), linear-gradient(to bottom, #242e42, #242e42);
+ }
+
+ .notive-btn {
+ color: #3d3e49;
+ background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 97%), linear-gradient(to bottom, #ffffff, #ffffff);
+ }
+ }
+ }
+}
+
+.section-5 {
+ .common-layout {
+ position: relative;
+ padding-top: 100px;
+ padding-left: 60px;
+ padding-bottom: 30px;
+ @media only screen and (max-width: $mobile-max-width) {
+ padding-left: 20px;
+ }
+ .left-div {
+ position: relative;
+ width: 600px;
+ @media only screen and (max-width: $mobile-max-width) {
+ width: 100%;
+ z-index: 2;
+ }
+ h2 {
+ font-size: 32px;
+ font-weight: 600;
+ line-height: 1.63;
+ color: #171c34;
+ text-shadow: 0 4px 8px rgba(35, 45, 65, 0.1);
+ }
+
+ p {
+ margin-top: 13px;
+ font-size: 16px;
+ line-height: 1.5;
+ letter-spacing: -0.04px;
+ color: #31383e;
+ }
+
+ a {
+ margin-top: 18px;
+ }
+ }
+
+ & > img {
+ position: absolute;
+ top: 88px;
+ right: 0;
+ @media only screen and (max-width: $mobile-max-width) {
+ opacity: 0.3;
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/assets/scss/mixin.scss b/assets/scss/mixin.scss
index 139597f9c..962945ca1 100644
--- a/assets/scss/mixin.scss
+++ b/assets/scss/mixin.scss
@@ -1,2 +1,183 @@
+@import 'variables';
+@mixin clearfix {
+ zoom: 1;
+
+ &:after {
+ content: '.';
+ display: block;
+ clear: both;
+ overflow: hidden;
+ height: 0;
+ visibility: hidden;
+ }
+}
+
+@mixin ellipsis {
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ word-wrap: normal;
+ overflow: hidden;
+}
+
+@mixin block-ellipsis($line: 2) {
+ display: -webkit-box;
+ overflow: hidden;
+ -webkit-line-clamp: $line;
+ -webkit-box-orient: vertical;
+}
+
+@mixin nowrap {
+ white-space: nowrap;
+ word-wrap: normal;
+}
+
+@mixin break-all {
+ word-break: break-all;
+ white-space: normal;
+}
+
+@mixin break-word {
+ word-wrap: break-word;
+ white-space: normal;
+}
+
+@mixin vertical-center {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+
+@mixin middle {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+@mixin TypographyTitle($fontWeight: $font-bold) {
+ font-family: $font-family-id;
+ font-style: normal;
+ font-stretch: normal;
+ letter-spacing: normal;
+ font-weight: $fontWeight;
+}
+
+@mixin TypographyTitleH1($color: $dark-color06) {
+ font-size: 40px;
+ line-height: 1.4;
+ @include TypographyTitle();
+ color: $color;
+}
+
+@mixin TypographyTitleH2($color: $dark-color06) {
+ font-size: 32px;
+ line-height: 1.38;
+ @include TypographyTitle();
+ color: $color;
+}
+
+@mixin TypographyTitleH3($color: $dark-color06) {
+ font-size: 24px;
+ line-height: 1.33;
+ @include TypographyTitle();
+ color: $color;
+}
+
+@mixin TypographyTitleH4($color: $dark-color06) {
+ font-size: 20px;
+ line-height: 1.4;
+ @include TypographyTitle();
+ color: $color;
+}
+
+@mixin TypographyTitleH5($color: $dark-color06) {
+ font-size: 14px;
+ line-height: 1.43;
+ @include TypographyTitle(bold);
+ color: $color;
+}
+
+@mixin TypographyTitleH6($color: $dark-color06) {
+ font-size: $size-small;
+ line-height: 1.67;
+ @include TypographyTitle(bold);
+ color: $color;
+}
+
+@mixin TypographySymbolText($color: $dark-color06) {
+ font-family: $font-family;
+ font-size: $size-small;
+ font-weight: $font-bold;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: 1.67;
+ letter-spacing: normal;
+ color: $color;
+}
+
+@mixin TypographyParagraphCode($color: #363e4a) {
+ font-family: Monaco;
+ font-size: $size-small;
+ font-weight: normal;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: 2;
+ letter-spacing: normal;
+ color: $color;
+}
+
+@mixin TypographyParagraph($color: $dark-color07) {
+ font-family: $font-family-id;
+ font-size: $size-small;
+ font-weight: normal;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: 1.67;
+ letter-spacing: normal;
+ color: $color;
+}
+
+@mixin common-flex {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+}
+
+@mixin absolute-center {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+
+@mixin product-container {
+ width: 277px;
+ height: 172px;
+ padding: 12px;
+ border-radius: 3px;
+ border: solid 1px $light-color06;
+ cursor: pointer;
+
+ &:hover {
+ box-shadow: 0 4px 8px 0 rgba(36, 46, 66, 0.2);
+ border: solid 1px $dark-color01;
+ }
+}
+
+@mixin common-layout {
+ position: relative;
+ width: 1140px;
+ margin: 0 auto;
+ padding-left: 260px;
+
+ @media only screen and (max-width: $width-01) {
+ width: 100%;
+ }
+
+ @media only screen and (max-width: $width-02) {
+ padding: 10px;
+ padding-top: 20px;
+ }
+}
diff --git a/content/en/live/_index.md b/content/en/live/_index.md
deleted file mode 100644
index 742968dc5..000000000
--- a/content/en/live/_index.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: live - KubeSphere | Enterprise container platform, built on Kubernetes
-description: KubeSphere is an open source container platform based on Kubernetes for enterprise app development and deployment, suppors installing anywhere from on-premise datacenter to any cloud to edge.
-keywords: KubeSphere,DevOps,Istio,Service Mesh,Jenkins,
-css: "scss/live.scss"
-
-section1:
- title: KubeSphere Cloud Native Live Room
- image: /images/live/background.jpg
----
\ No newline at end of file
diff --git a/content/zh/live/_index.md b/content/zh/live/_index.md
new file mode 100644
index 000000000..0abc4f89e
--- /dev/null
+++ b/content/zh/live/_index.md
@@ -0,0 +1,68 @@
+---
+title: live - KubeSphere | Enterprise container platform, built on Kubernetes
+description: KubeSphere is an open source container platform based on Kubernetes for enterprise app development and deployment, suppors installing anywhere from on-premise datacenter to any cloud to edge.
+keywords: KubeSphere,DevOps,Istio,Service Mesh,Jenkins,
+css: "scss/live.scss"
+
+section1:
+ title: KubeSphere 云原生直播间
+ image: /images/live/background.jpg
+
+section2:
+ image: /images/live/friend.jpeg
+ url: ./test
+
+ notice:
+ title: KubeSphere 在直播电商行业的多集群应用实践
+ timeIcon: /images/live/clock.svg
+ time: 2020/10/22 – 10/25
+ baseIcon: /images/live/base.svg
+ base: 线上
+ tag: 预告
+ url: ./test
+
+ over:
+ title: KubeSphere 在直播电商行业的多集群应用实践
+ url: ./test
+ tag: 结束
+
+section3:
+ videos:
+ - title: 为什么选择 KubeSphere
+ link: //player.bilibili.com/player.html?aid=69124503&bvid=BV1vJ411T7th&cid=119801064&page=1
+ snapshot: https://pek3b.qingstor.com/kubesphere-docs/png/20200206170305.png
+ type: iframe
+ createTime: 2019.12.14
+ group: Meetup
+
+ - title: 为什么选择 KubeSphere
+ link: https://kubesphere-docs.pek3b.qingstor.com/website/meetup/meetup-final-1226.mp4
+ snapshot: https://pek3b.qingstor.com/kubesphere-docs/png/20200206170305.png
+ type: video
+ createTime: 2019.12.14
+ group: Meetup
+
+section4:
+ overImg: /images/live/over.svg
+ noticeImg: /images/live/notice.svg
+ list:
+ - title: KubeSphere 在直播电商行业的多集群应用实践1
+ date: 10/27
+ time: 13:30 - 14:10
+ lastTime: 2020-10-27T14:10:00Z
+ url: ./test
+
+ - title: KubeSphere 在直播电商行业的多集群应用实践2
+ date: 11/27
+ time: 13:30 - 14:10
+ lastTime: 2020-12-27T14:10:00Z
+ url: ./test
+
+section5:
+ title: 分享你的主题
+ content: 想在社区分享你的落地经验?说出你和 KubeSphere 的开源故事,即刻加入 KubeSphere 开源社区直播计划,提交你的分享主题,将有定制礼品相送!
+ btn: 提交分享主题
+ url:
+ image: /images/live/30.svg
+
+---
\ No newline at end of file
diff --git a/content/zh/live/test.md b/content/zh/live/test.md
new file mode 100644
index 000000000..de31ae5f0
--- /dev/null
+++ b/content/zh/live/test.md
@@ -0,0 +1,18 @@
+---
+title: KubeSphere 在直播电商行业的多集群应用实践
+description:
+css: scss/live-detail.scss
+
+section1:
+ snapshot: https://pek3b.qingstor.com/kubesphere-docs/png/20200206170305.png
+ videoUrl: //player.bilibili.com/player.html?aid=69124503&bvid=BV1vJ411T7th&cid=119801064&page=1
+ type: iframe
+ time: 2020-10-13 20:00-20:40
+ timeIcon: /images/live/clock.svg
+ base: 线上
+ baseIcon: /images/live/base.svg
+---
+
+## 导引
+
+随着容器的普及和 Kubernetes 的日渐成熟,企业内部运行多个 Kubernetes 集群已变得非常主流,多集群天然适合业务高可用、异地容灾备份、低延迟、开发生产隔离、避免单一厂商绑定等使用场景,并且很多企业通常会选择将 Kubernetes 多集群分别部署在本地环境+公有云这样的模式来构建容器混合云。本次技术分享将介绍杭州遥望网络公司如何将 KubeSphere 3.0 在生产环境进行落地,并基于 KubeSphere 3.0 打造多集群架构的电商支撑体系,使亿级交易的核心订单交易系统在 KubeSphere 之上平稳运行。
diff --git a/i18n/en.yaml b/i18n/en.yaml
index d9e87fa73..9418c4586 100644
--- a/i18n/en.yaml
+++ b/i18n/en.yaml
@@ -82,4 +82,7 @@
translation: Search Documentation
- id: ALL
translation: ALL
-
+- id: Watch replay
+ translation: Watch replay
+- id: View details
+ translation: View details
diff --git a/i18n/zh.yaml b/i18n/zh.yaml
index 526db19e3..2ed120aa2 100644
--- a/i18n/zh.yaml
+++ b/i18n/zh.yaml
@@ -81,4 +81,8 @@
- id: Search Documentation
translation: 搜索文档
- id: ALL
- translation: 全部
\ No newline at end of file
+ translation: 全部
+- id: Watch replay
+ translation: 观看回放
+- id: View details
+ translation: 了解详情
\ No newline at end of file
diff --git a/layouts/live/list.html b/layouts/live/list.html
index 537058643..bda506674 100644
--- a/layouts/live/list.html
+++ b/layouts/live/list.html
@@ -1,5 +1,4 @@
{{ define "main" }}
-{{ $data := index .Site.Data .Site.Language.Lang }}
{{ with .Params.section1 }}
+
+
+ {{ .title }}
+
+
-
+
{{ .date }}
+{{ .time }}
+' + video.group + '
' var time = '' + video.createTime + '
' var div = '