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 */