Files
RGKT/rg-09112127/css/courseHome.css
2025-10-10 19:44:14 +08:00

1022 lines
22 KiB
CSS

html,
body,
.container {
margin: 0;
padding: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
}
:root {
--sidebar-width: 260px;
--sidebar-bg: #fffbe6;
--antd-color-10: #613400;
--antd-color-9: #874d00;
--antd-color-8: #ad6800;
--antd-color-7: #d48806;
--antd-color-6: #faad14;
--antd-color-5: #ffc53d;
--antd-color-4: #ffd666;
--antd-color-3: #ffe58f;
--antd-color-2: #fff1b8;
--antd-color-1: #fffbe6;
--sidebar-text-dark: #2f4f4f;
--sidebar-text-light: #f8fff8;
--sidebar-grade-color: #faad14;
--sidebar-grade-hover: #d48806;
--sidebar-chapter-color: #ffc53d;
--sidebar-chapter-hover: #faad14;
--sidebar-section-color: #ffe58f;
--sidebar-hover-bg: #ffe58f;
--sidebar-active-bg: #ffe58f;
--sidebar-transition: all 0.3s ease;
--sidebar-border-radius: 6px;
--sidebar-box-shadow: 0 2px 8px rgba(0, 100, 0, 0.1);
}
/* 导航条 start */
.container-header {
position: fixed;
top: 0px;
left: 0px;
width: 100%;
height: 75px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
background-color: rgba(255, 255, 255, 0.9);
box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 10px;
z-index: 1000;
padding: 10px 20px;
}
.container-header-logo {
display: flex;
align-items: center;
}
.container-header-nav {
display: flex;
margin-right: 50px;
}
.container-header-nav>div {
text-align: center;
margin-right: 10px;
color: rgb(0, 0, 0);
font-weight: 500;
font-size: 16px;
text-decoration: none;
padding: 5px 20px;
border-radius: 20px;
transition: 0.3s;
border: 1px solid transparent;
cursor: pointer;
}
.barrierFree .container-header-nav>div {
font-size: 24px;
padding: 10px 30px;
}
.barrierFree .container-header-nav>div.barrierBtn {
margin-left: 10px;
color: var(--antd-color-6);
font-weight: 700;
}
.container-header-nav>div:hover {
border: 1px solid #999;
}
.barrierFree .container-header-nav>div.barrierBtn:hover {
border: 1px solid var(--antd-color-8);
}
.container-header-nav>div.active {
background-color: transparent;
color: #000;
border: 1px solid #000;
}
.barrierFree .container-header-nav>div.barrierBtn.active {
background-color: transparent;
color: var(--antd-color-8);
border: 1px solid var(--antd-color-8);
}
/* 导航条 end */
.container-main {
width: 100vw;
height: calc(100vh - 75px);
background-image: url(../asset/bg.png);
background-repeat: no-repeat;
background-size: 100%;
overflow: hidden;
display: flex;
justify-content: space-between;
margin-top: 75px;
position: relative;
/* background-color: #F7F7F5; */
}
/* 侧边栏 start */
.container-main-sidebar {
width: var(--sidebar-width);
height: 100%;
box-sizing: border-box;
background-color: var(--sidebar-bg);
color: var(--sidebar-text-dark);
overflow-y: auto;
transition: var(--sidebar-transition);
box-shadow: var(--sidebar-box-shadow);
border-right: 1px solid var(--antd-color-4);
padding: 15px;
user-select: none;
}
.container-main-sidebar.hidden {
transform: translateX(-100%);
}
.container-main .sidebar-circle {
position: absolute;
top: calc(50% - 30px);
left: var(--sidebar-width);
width: 30px;
height: 60px;
background-color: var(--sidebar-grade-color);
border-radius: 0 30px 30px 0;
line-height: 58px;
padding-left: 4px;
box-sizing: border-box;
color: white;
font-size: 16px;
cursor: pointer;
transition: var(--sidebar-transition);
z-index: 1;
}
/* 定义滚动条样式 */
.container-main-sidebar::-webkit-scrollbar {
width: 0px;
}
.container-main-sidebar ul {
padding: 0;
margin: 0;
}
/* 目录列表样式 */
.container-main-sidebar .directory-list {
list-style: none;
}
.barrierFree .directory-list>.type-item {
font-size: 28px;
text-align: center;
line-height: 40px;
font-weight: 700;
}
/* 年级样式 */
.container-main-sidebar .grade-item {
margin: 8px 0;
border-radius: var(--sidebar-border-radius);
overflow: hidden;
box-shadow: var(--sidebar-box-shadow);
}
.container-main-sidebar .grade-title {
display: flex;
align-items: center;
padding: 12px 15px;
font-weight: 600;
cursor: pointer;
transition: var(--sidebar-transition);
background-color: var(--sidebar-grade-color);
color: var(--sidebar-text-light);
}
.barrierFree .container-main-sidebar .grade-title {
font-size: 24px;
background-color: var(--sidebar-text-light);
color: var(--sidebar-grade-color);
display: block;
text-align: center;
}
.container-main-sidebar .grade-title>span {
font-size: 16px;
}
.container-main-sidebar .grade-title>span>span {
font-size: 10px;
}
.container-main-sidebar .grade-title:hover {
background-color: var(--sidebar-grade-hover);
}
.barrierFree .container-main-sidebar .grade-title:hover {
background-color: var(--sidebar-grade-color);
color: var(--sidebar-text-light);
}
.barrierFree .container-main-sidebar .grade-title.active {
background-color: var(--antd-color-8);
color: var(--sidebar-text-light);
}
.container-main-sidebar .grade-title::before {
content: "📚";
margin-right: 10px;
font-size: 1.1rem;
}
.barrierFree .directory-list .grade-title::before {
content: "";
}
/* 章节样式 */
.container-main-sidebar .chapter-list {
list-style: none;
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease;
background-color: rgba(255, 255, 255, 0.5);
}
.container-main-sidebar .grade-item.active .chapter-list {
max-height: 1000px;
}
.container-main-sidebar .chapter-item {
margin: 4px 0;
}
.container-main-sidebar .chapter-title {
display: flex;
align-items: center;
padding: 10px 15px 10px 35px;
font-weight: 500;
cursor: pointer;
transition: var(--sidebar-transition);
color: var(--sidebar-text-dark);
background-color: var(--sidebar-chapter-color);
color: var(--sidebar-text-light);
}
.container-main-sidebar .chapter-title>span {
font-size: 14px;
}
.container-main-sidebar .chapter-title:hover {
background-color: var(--sidebar-chapter-hover);
}
.container-main-sidebar .chapter-title::before {
content: "📖";
margin-right: 10px;
font-size: 1rem;
}
/* 小节样式 */
.container-main-sidebar .section-list {
list-style: none;
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease;
background-color: rgba(255, 255, 255, 0.3);
}
.container-main-sidebar .section-list>div {
height: 32px;
line-height: 32px;
text-align: center;
font-size: 14px;
font-weight: 700;
color: var(--sidebar-chapter-color);
}
.container-main-sidebar .chapter-item.active .section-list {
max-height: 1000px;
}
.container-main-sidebar .section-item {
margin: 2px 0;
}
.container-main-sidebar .section-title {
display: flex;
align-items: center;
padding: 8px 15px 8px 55px;
font-size: 14px;
cursor: pointer;
transition: var(--sidebar-transition);
color: var(--sidebar-text-dark);
line-height: 20px;
}
.container-main-sidebar .section-title>span {
margin-right: 8px;
font-size: 16px;
}
.container-main-sidebar .section-title:hover {
background-color: var(--sidebar-hover-bg);
}
.container-main-sidebar .section-title.active {
background-color: var(--sidebar-active-bg);
font-weight: 500;
}
/* .container-main-sidebar .section-title::before {
content: "📝";
margin-right: 10px;
font-size: 0.9rem;
color: var(--sidebar-section-color);
} */
/* 箭头图标 */
.container-main-sidebar .arrow {
margin-left: auto;
transition: transform 0.3s ease;
font-size: 0.8rem;
}
.container-main-sidebar .grade-item.active .grade-title .arrow,
.container-main-sidebar .chapter-item.active .chapter-title .arrow {
transform: rotate(90deg);
}
/* 侧边栏 end */
/* 页面主体 start */
.container-main-course {
width: calc(100vw - var(--sidebar-width) - 30px);
height: 100%;
box-sizing: border-box;
overflow: hidden;
padding: 30px 60px 30px 30px;
position: relative;
}
.barrierFree .container-main-course {
width: calc(100vw - var(--sidebar-width) - 105px);
margin-right: 100px;
}
/* 课程内容 start */
.container-main .course-box {
width: 100%;
height: 100%;
padding: 5px;
box-sizing: border-box;
border-radius: 20px;
cursor: pointer;
filter: contrast(1.1);
&::before,
&::after {
content: "";
position: absolute;
top: -10px;
left: -10px;
right: -10px;
bottom: -10px;
border: 4px solid var(--sidebar-grade-color);
transition: all 8s;
animation: boxBorderClippath 16s infinite linear;
border-radius: 10px;
}
&::after {
animation: boxBorderClippath 16s infinite -8s linear;
}
}
@keyframes boxBorderClippath {
0%,
100% {
clip-path: inset(0 0 98% 0);
}
25% {
clip-path: inset(0 98% 0 0);
}
50% {
clip-path: inset(98% 0 0 0);
}
75% {
clip-path: inset(0 0 0 98%);
}
}
/* 课程内容 end */
/* 课程内容 视频播放器 start */
.course-box .box-video {
width: 100%;
height: 100%;
}
.course-box .box-video>video {
width: 100%;
height: 100%;
}
/* 课程内容 视频播放器 end */
/* 课程内容 游戏 start */
.course-box .box-play {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
overflow: hidden;
}
.course-box .box-play>iframe {
width: 100%;
height: 100%;
border: 0;
}
/* 课程内容 游戏 end */
/* 按钮容器 start */
.course-box .box-btn {
width: 80%;
/* 确保宽度足够以居中问题 */
height: 100%;
/* 确保高度足够以垂直居中 */
display: flex;
justify-content: space-between;
align-items: center;
/* 在容器内垂直对齐项目 */
z-index: 2;
position: absolute;
/* 相对于.detail定位 */
top: -75px;
/* 定位在.detail的顶部 */
left: 10%;
/* 定位在.detail的左侧 */
pointer-events: none;
/* 允许点击穿透 */
}
.course-box .box-btn>.box-btn-left,
.course-box .box-btn>.box-btn-right {
width: 135px;
height: 135px;
border-radius: 50%;
font-size: 22px;
font-weight: bold;
border: none;
cursor: pointer;
position: absolute;
/* 相对于.detail定位 */
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
color: white;
pointer-events: auto;
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);
transition: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
z-index: 7;
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
line-height: 1.3;
top: 50%;
/* 相对于.detail垂直居中 */
transform: translateY(-50%);
/* 调整元素高度 */
}
.course-box .box-btn>.box-btn-left {
left: 40px;
/* 距离.detail左边缘40px */
background: linear-gradient(145deg, #87e8de, #13c2c2);
}
.course-box .box-btn>.box-btn-right {
right: 40px;
/* 距离.detail右边缘40px */
background: linear-gradient(145deg, #95de64, #52c41a);
}
.course-box .box-btn>.box-btn-left:hover,
.course-box .box-btn>.box-btn-right:hover {
transform: translateY(-50%) scale(1.12);
/* 调整缩放,保持垂直居中 */
box-shadow: 0 10px 28px rgba(0, 0, 0, 0.35);
}
.course-box .box-btn>.box-btn-left:active,
.course-box .box-btn>.box-btn-right:active {
transform: translateY(-50%) scale(0.9);
/* 调整缩放,保持垂直居中 */
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
}
/* 卡通风格的按钮边框 */
.course-box .box-btn>.box-btn-left,
.course-box .box-btn>.box-btn-right {
border: 8px dashed rgba(255, 255, 255, 0.9);
}
/* 问题框装饰 */
.course-box .box-btn>.box-btn-question {
min-width: 350px;
min-height: 20px;
max-width: 550px;
padding: 18px 35px;
font-size: 24px;
color: #333;
font-weight: bold;
background-color: white;
border-radius: 40px;
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
text-align: center;
position: absolute;
top: -180px;
/* 调整位置到视频区域顶部 */
left: 50%;
transform: translateX(-50%);
/* 水平居中 */
z-index: 6;
border: 4px solid #fadb14;
pointer-events: auto;
font-family: 'Comic Sans MS', 'Noto Sans SC', sans-serif;
animation: boxBtnFloat 4s ease-in-out infinite;
}
@keyframes boxBtnFloat {
0% {
transform: translate(-50%, -50%);
}
50% {
transform: translate(-50%, -62%);
}
100% {
transform: translate(-50%, -50%);
}
}
/* 问题框云朵形状 */
.course-box .box-btn>.box-btn-question {
background: white;
border-radius: 40px;
position: relative;
/* 为::before和::after定位所需 */
}
/* 给问题框添加可爱的装饰元素 */
.course-box .box-btn>.box-btn-question::before {
content: '✨';
position: absolute;
top: -18px;
left: 25px;
font-size: 28px;
color: #ffde59;
animation: boxBtnTwinkle 2s infinite alternate;
text-shadow: 0 0 5px rgba(255, 222, 89, 0.7);
z-index: 5;
}
.course-box .box-btn>.box-btn-question::after {
content: '✨';
position: absolute;
bottom: -18px;
right: 25px;
font-size: 28px;
color: #ffde59;
animation: boxBtnTwinkle 2.5s infinite alternate 1s;
text-shadow: 0 0 5px rgba(255, 222, 89, 0.7);
z-index: 5;
}
@keyframes boxBtnTwinkle {
0% {
opacity: 0.4;
transform: scale(0.8) rotate(-5deg);
}
100% {
opacity: 1;
transform: scale(1.3) rotate(5deg);
}
}
/* 添加彩虹背景效果到问题框 */
.course-box .box-btn>.box-btn-question {
background: white;
position: relative;
}
/* 按钮容器 end */
/* 提示语 start */
.course-box .box-notice {
width: 60vw;
position: absolute;
/* 相对于.detail定位 */
top: 80px;
/* 调整位置 */
left: 50%;
transform: translateX(-50%);
z-index: 25;
}
.course-box .box-notice-text {
width: 100%;
text-align: center;
font-size: 24px;
color: #333;
font-weight: 700;
background-color: rgba(255, 243, 205, 0.9);
padding: 15px 25px;
border-radius: 15px;
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1);
border-left: 5px solid #fadb14;
animation: boxNoticeAppear 0.5s ease-out;
}
@keyframes boxNoticeAppear {
from {
transform: translateY(-20px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
/* 提示语 end */
/* 体感交互 start */
.course-box .box-body {
position: absolute;
padding: 20px;
top: 380px;
/* 垂直居中 */
left: 50%;
/* 水平居中 */
transform: translate(-50%, -50%);
/* 调整元素大小 */
background-color: var(--antd-color-2);
border-radius: 20px;
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}
.barrierFree .course-box .box-body {
top: 80%;
background-color: var(--antd-color-1);
opacity: 0.5;
}
.course-box .box-body>#bodyConnectionStatus {
width: 100%;
height: 40px;
line-height: 40px;
text-align: center;
color: #FF5555;
background-color: #F7F7F5;
border-radius: 10px;
margin-bottom: 10px;
font-weight: 700;
}
.barrierFree .course-box .box-body>#bodyConnectionStatus {
display: none;
}
.course-box .box-body>#bodyHandStatus {
width: 100%;
height: 40px;
line-height: 40px;
text-align: center;
font-weight: bold;
color: #fff;
background: linear-gradient(145deg, var(--antd-color-4), var(--antd-color-6));
border-radius: 10px;
margin: 10px 0;
}
.barrierFree .course-box .box-body>#bodyHandStatus {
display: none;
}
.course-box .box-body>#bodyVideoFeed {
width: 960px;
height: 560px;
border-radius: 10px;
display: block;
margin: 0 auto;
border: 3px solid #FFF5F5;
transform: rotateY(180deg);
}
.barrierFree .course-box .box-body>#bodyVideoFeed {
width: 300px;
height: 240px;
}
/* 体感交互 end */
/* 语音识别 start */
.course-box .box-speech {
position: absolute;
background-color: var(--antd-color-2);
padding: 20px 25px;
border-radius: 15px;
top: 40%;
/* 垂直居中 */
left: 50%;
/* 水平居中 */
transform: translate(-50%, -50%);
/* 调整元素大小 */
width: 400px;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
text-align: center;
}
.barrierFree .course-box .box-speech {
top: 85%;
width: 90%;
background-color: var(--antd-color-1);
opacity: 0.7;
}
.course-box .box-speech-status {
background-color: #F7F7F5;
height: 40px;
line-height: 40px;
margin: 10px 0;
border-radius: 10px;
font-weight: 700;
color: var(--antd-color-6);
}
.barrierFree .course-box .box-speech-status {
display: none;
}
.course-box .box-speech-text {
background-color: white;
border: 2px solid #ddd;
border-radius: 10px;
padding: 15px;
min-height: 70px;
margin: 15px 0;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
max-height: 400px;
overflow: hidden;
}
.barrierFree .course-box .box-speech-text {
background-color: transparent;
}
.course-box .box-speech-button {
display: flex;
gap: 15px;
margin: 15px 0;
}
.barrierFree .course-box .box-speech-button {
display: none;
}
.course-box .speech-action-button {
padding: 12px 15px;
background: linear-gradient(145deg, var(--antd-color-4), var(--antd-color-6));
color: white;
border: none;
border-radius: 10px;
cursor: pointer;
font-size: 16px;
font-weight: bold;
flex: 1;
transition: all 0.3s ease;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.course-box .speech-action-button:hover {
transform: translateY(-3px);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
}
.course-box .speech-action-button:disabled {
background: #aaa;
cursor: not-allowed;
transform: none;
box-shadow: none;
}
.course-box .box-speech-partial {
color: #666;
font-style: italic;
min-height: 24px;
}
.barrierFree .course-box .box-speech-partial {
color: var(--antd-color-10);
font-size: 32px;
font-weight: 700;
min-height: 92px;
}
.course-box .box-speech-final {
color: #333;
font-weight: bold;
min-height: 24px;
margin-top: 10px;
}
.course-box #commandStatus {
background-color: var(--antd-color-2);
color: #000;
}
.course-box .highlight {
background-color: yellow;
padding: 2px 5px;
border-radius: 3px;
}
/* 语音识别 end */
/* 证书 start */
/* 证书区域样式 */
.course-box .box-certificate {
width: 1000px;
height: 705px;
border-radius: 15px;
cursor: pointer;
transition: transform 0.3s ease;
position: absolute;
/* 相对于.detail定位 */
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-size: contain;
}
.course-box .box-certificate>.box-certificate-name {
width: 100%;
margin-top: 310px;
font-size: 48px;
font-weight: 700;
text-align: left;
padding: 0 90px;
box-sizing: border-box;
text-indent: 2em;
font-family: "楷体";
color: #333;
}
.course-box .box-certificate>.box-certificate-name>span {
color: #ff9800;
}
/* 证书 end */
/* 页面主体 end */
/* 操作按钮 start */
.container-main .course-circle {
position: absolute;
top: calc(50% - 30px);
right: 0px;
width: 30px;
height: 60px;
background-color: var(--antd-color-6);
border-radius: 30px 0 0 30px;
line-height: 60px;
padding-left: 4px;
box-sizing: border-box;
color: white;
font-size: 20px;
cursor: pointer;
transition: var(--sidebar-transition);
z-index: 2;
user-select: none;
}
.container-main .course-operation {
position: absolute;
top: calc(50% - 85px);
right: -85px;
width: 85px;
height: 170px;
background-color: var(--antd-color-3);
border-radius: 85px 0 0 85px;
line-height: 85px;
box-sizing: border-box;
color: white;
cursor: pointer;
transition: var(--sidebar-transition);
z-index: 1;
user-select: none;
}
.barrierFree .container-main .course-operation {
position: absolute;
top: calc(50% - 160px);
width: 105px;
right: 20px;
background-color: transparent;
}
.container-main .course-operation.show {
transform: translateX(-100%);
}
.container-main .course-operation>div {
width: 40px;
height: 40px;
border-radius: 30px;
background-color: var(--antd-color-5);
text-align: center;
line-height: 40px;
position: absolute;
font-size: 20px;
}
.container-main .course-operation>div:nth-child(1) {
top: 12px;
right: 2px;
}
.container-main .course-operation>div:nth-child(2) {
top: 44px;
right: 32px;
}
.container-main .course-operation>div:nth-child(3) {
top: 88px;
right: 32px;
}
.container-main .course-operation>div:nth-child(4) {
top: 118px;
right: 2px;
}
.barrierFree .container-main .course-operation>div {
width: 80px;
height: 125px;
font-size: 36px;
position: relative;
padding: 12px;
}
.barrierFree .container-main .course-operation>div>span {
font-size: 24px;
}
.barrierFree .container-main .course-operation>div:nth-child(1) {
top: 0px;
right: 0px;
}
.barrierFree .container-main .course-operation>div:nth-child(1)::after {
content: '语音识别';
}
.barrierFree .container-main .course-operation>div:nth-child(2) {
top: 20px;
right: 0px;
}
.barrierFree .container-main .course-operation>div:nth-child(2)::after {
content: '体感交互';
}
/* 操作按钮 end */