diff --git a/CKPLAYER_INTEGRATION.md b/CKPLAYER_INTEGRATION.md new file mode 100644 index 0000000..b294f48 --- /dev/null +++ b/CKPLAYER_INTEGRATION.md @@ -0,0 +1,190 @@ +# CKPlayer 视频播放器集成说明 + +## 🎯 概述 + +已成功将项目中的VideoPlayer组件从原生HTML5 video + HLS.js 替换为 CKPlayer 播放器,并集成了public文件夹中的本地视频播放功能。 + +## 📁 文件结构 + +``` +public/ +├── ckplayer/ # CKPlayer播放器文件 +│ ├── css/ # 样式文件 +│ ├── js/ # 核心JS文件 +│ ├── hls.js/ # HLS支持 +│ └── language/ # 语言包 +└── video/ + └── first.mp4 # 本地视频文件 + +src/ +├── components/ +│ └── VideoPlayer.vue # 更新后的视频播放器组件 +├── views/ +│ ├── LocalVideoDemo.vue # 本地视频演示页面 +│ └── CourseStudy.vue # 课程学习页面 +└── router/ + └── index.ts # 路由配置 +``` + +## 🔧 主要更改 + +### 1. VideoPlayer组件重构 + +- **替换播放器**: 从HTML5 video + HLS.js 改为 CKPlayer +- **新增功能**: 支持本地视频播放 (`useLocalVideo` prop) +- **保持兼容**: 保留原有的props和events接口 +- **动态加载**: 自动加载CKPlayer脚本和样式 + +### 2. 新增Props + +```typescript +interface Props { + videoUrl?: string // 视频URL + title?: string // 视频标题 + description?: string // 视频描述 + poster?: string // 封面图 + autoplay?: boolean // 自动播放 + showControls?: boolean // 显示控制栏 + placeholder?: string // 占位符文本 + useLocalVideo?: boolean // 使用本地视频 (新增) +} +``` + +### 3. 本地视频支持 + +当 `useLocalVideo` 为 `true` 时,组件会自动播放 `/video/first.mp4` 文件。 + +## 🚀 使用方法 + +### 基本用法 + +```vue + +``` + +### 播放本地视频 + +```vue + +``` + +### 支持的视频格式 + +- **MP4**: 直接播放 +- **HLS (.m3u8)**: 使用hls.js插件 +- **本地文件**: public/video/目录下的视频文件 + +## 📱 演示页面 + +### 本地视频演示页面 +- 路径: `/local-video-demo` +- 功能: 专门演示本地视频播放 +- 包含: 播放控制、状态显示、技术说明 + +## 🎮 控制方法 + +组件暴露的方法: + +```typescript +// 播放控制 +play() // 播放视频 +pause() // 暂停视频 +seek(time: number) // 跳转到指定时间 +setVolume(volume: number) // 设置音量 (0-100) +retry() // 重试加载 +``` + +## 📊 事件回调 + +```typescript +@play // 开始播放 +@pause // 暂停播放 +@ended // 播放结束 +@timeupdate // 时间更新 +@error // 播放错误 +``` + +## 🔄 迁移指南 + +### 从旧版VideoPlayer迁移 + +1. **无需更改**: 现有的props和events保持兼容 +2. **新功能**: 可选择使用 `useLocalVideo` 播放本地视频 +3. **性能提升**: CKPlayer提供更好的播放性能和兼容性 + +### 示例迁移 + +```vue + + + + + + + + +``` + +## 🛠️ 技术特性 + +- **自动脚本加载**: 动态加载CKPlayer资源 +- **格式检测**: 自动识别视频格式并选择合适的播放方式 +- **响应式设计**: 支持桌面端和移动端 +- **错误处理**: 完善的错误处理和重试机制 +- **内存管理**: 组件销毁时自动清理资源 + +## 🎨 样式定制 + +CKPlayer样式可通过CSS覆盖: + +```css +:deep(.ckplayer) { + /* 自定义播放器样式 */ +} +``` + +## 📝 注意事项 + +1. **文件路径**: 本地视频文件需放在 `public/video/` 目录下 +2. **跨域问题**: 外部视频URL需要支持跨域访问 +3. **浏览器兼容**: CKPlayer支持现代浏览器 +4. **性能优化**: 大视频文件建议使用CDN或流媒体服务 + +## 🔍 调试 + +开发时可以通过浏览器控制台查看详细的加载和播放日志: + +```javascript +// 查看CKPlayer初始化日志 +console.log('CKPlayer initialized successfully') + +// 查看视频URL变化 +console.log('VideoPlayer: 视频URL变化:', newUrl) +``` + +## 🚀 下一步 + +- 可以添加更多本地视频文件到 `public/video/` 目录 +- 可以扩展组件支持播放列表功能 +- 可以添加字幕支持 +- 可以集成视频分析和统计功能 diff --git a/COURSE_DETAIL_LAYOUT_UPDATE.md b/COURSE_DETAIL_LAYOUT_UPDATE.md new file mode 100644 index 0000000..099f665 --- /dev/null +++ b/COURSE_DETAIL_LAYOUT_UPDATE.md @@ -0,0 +1,215 @@ +# 课程详情页面布局更新说明 + +## 🎯 更新目标 + +根据提供的图片标准,重新设计课程详情页面左侧视频区下面的内容、样式和布局。 + +## 📋 更新内容 + +### 1. 课程标题优化 +**修改前**: +```html +

{{ course.title }}

+``` + +**修改后**: +```html +

{{ course.title }}

+``` + +**样式更新**: +- 字体大小:24px → 28px +- 字体粗细:600 → 700 +- 行高:1.4 → 1.3 +- 更加突出和醒目 + +### 2. 课程元信息重新设计 +**修改前**: +```html +
+ 分类:{{ course.category?.name }} + 时长:{{ course.price }}天 + +
+``` + +**修改后**: +```html +
+
+ 分类:信息技术 + | + 共6章54节 + | + 12小时43分钟 +
+
+ +
+
+``` + +**样式特点**: +- 左右分布布局 +- 添加图标装饰 +- 分类链接样式 +- 记笔记按钮优化 + +### 3. 课程描述优化 +**修改前**: +```css +.course-description { + margin-bottom: 24px; + line-height: 1.6; + color: #666; +} +``` + +**修改后**: +```css +.course-description { + margin-bottom: 32px; + line-height: 1.8; + color: #333; + font-size: 15px; +} +``` + +**改进点**: +- 增加行高提升可读性 +- 调整颜色增强对比度 +- 增大字体提升阅读体验 + +### 4. 讲师信息重新设计 +**修改前**: +```html +
+
...
+
+
{{ instructor.name }}
+
{{ instructor.title }}
+
{{ instructor.bio }}
+
+
+``` + +**修改后**: +```html +
+
+
...
+
+
{{ instructor.name }}
+
{{ instructor.title }}
+
+
+
+``` + +**布局特点**: +- 水平排列多个讲师 +- 头像居中显示 +- 信息垂直居中对齐 +- 简洁的卡片式设计 + +## 🎨 视觉效果 + +### 整体布局 +``` +┌─────────────────────────────────────────────────────┐ +│ 暑期名师领学,提高班级教学质量!高效冲分指南 │ +│ │ +│ 分类:信息技术 | 📚共6章54节 | ⏱️12小时43分钟 📝记笔记 │ +│ ─────────────────────────────────────────────────── │ +│ │ +│ 本课程深度聚焦问题,让每一位教师了解并学习使用 │ +│ DeepSeek,结合办公自动化职业岗位标准... │ +│ │ +│ 讲师 │ +│ ┌─────┐ ┌─────┐ ┌─────┐ │ +│ │ 👤 │ │ 👤 │ │ 👤 │ │ +│ │汪波 │ │汪波 │ │汪波 │ │ +│ │教授 │ │教授 │ │教授 │ │ +│ └─────┘ └─────┘ └─────┘ │ +│ ─────────────────────────────────────────────────── │ +│ │ +│ 课程介绍 评论(1251) │ +│ │ +└─────────────────────────────────────────────────────┘ +``` + +## 🔧 技术实现 + +### 1. 数据结构 +```javascript +// 讲师数据 +const instructors = ref([ + { + id: 1, + name: '汪波', + title: '教授', + avatar: 'https://...' + }, + // 更多讲师... +]) + +// 计算属性 +const totalLessons = computed(() => groupedSections.value.length) +const totalSections = computed(() => courseSections.value.length) +const formatTotalDuration = () => { + // 计算总时长逻辑 +} +``` + +### 2. 样式特点 +```css +/* 响应式布局 */ +.course-meta { + display: flex; + justify-content: space-between; + align-items: center; +} + +/* 讲师水平排列 */ +.instructors-list { + display: flex; + gap: 24px; + align-items: center; +} + +/* 图标装饰 */ +.icon-time::before { content: "📚"; } +.icon-duration::before { content: "⏱️"; } +.icon-note::before { content: "📝"; } +``` + +## ✅ 更新结果 + +### 视觉改进 +- ✅ **标题更突出**:更大更粗的字体 +- ✅ **信息更丰富**:显示章节数和总时长 +- ✅ **布局更合理**:左右分布的元信息 +- ✅ **讲师展示**:水平排列的多讲师显示 +- ✅ **图标装饰**:增加视觉层次感 + +### 用户体验 +- ✅ **信息层次清晰**:标题、元信息、描述、讲师分层展示 +- ✅ **阅读体验优化**:更好的行高和字体大小 +- ✅ **交互友好**:分类链接和记笔记按钮 +- ✅ **视觉统一**:与整体设计风格保持一致 + +### 响应式适配 +- ✅ **移动端友好**:元信息可以换行显示 +- ✅ **讲师列表**:在小屏幕上保持良好布局 +- ✅ **按钮适配**:记笔记按钮在不同屏幕下正常显示 + +## 🎯 符合图片标准 + +现在的布局完全符合您提供的图片标准: +1. **课程标题**:大字体显示 +2. **元信息行**:分类、章节数、时长、记笔记按钮 +3. **课程描述**:详细的文字介绍 +4. **讲师信息**:水平排列的多个讲师 +5. **标签页**:课程介绍和评论切换 + +布局更加专业、信息更加丰富、视觉效果更加美观!🎉 diff --git a/DUPLICATE_VARIABLE_FIX.md b/DUPLICATE_VARIABLE_FIX.md new file mode 100644 index 0000000..547c373 --- /dev/null +++ b/DUPLICATE_VARIABLE_FIX.md @@ -0,0 +1,153 @@ +# 重复变量声明问题修复说明 + +## 🐛 问题描述 + +在 `CourseDetailEnrolled.vue` 文件中出现了变量重复声明的编译错误: + +``` +[vue/compiler-sfc] Identifier 'totalLessons' has already been declared. (69:6) +``` + +## 🔍 问题原因 + +在同一个作用域中,`totalLessons` 被同时声明为 `ref` 和 `computed`: + +```javascript +// 第一次声明 - 作为 ref +const totalLessons = ref(0) + +// 第二次声明 - 作为 computed(导致冲突) +const totalLessons = computed(() => { + return groupedSections.value.length +}) +``` + +## ✅ 修复方案 + +### 1. 移除重复的 ref 声明 +```javascript +// 修复前 +const progress = ref(0) +const completedLessons = ref(0) +const totalLessons = ref(0) // ❌ 删除这行 +const totalSections = ref(0) // ❌ 删除这行 + +// 修复后 +const progress = ref(0) +const completedLessons = ref(0) +``` + +### 2. 保留 computed 声明 +```javascript +// 保留这些 computed 声明 +const totalLessons = computed(() => { + return groupedSections.value.length +}) + +const totalSections = computed(() => { + return courseSections.value.length +}) +``` + +### 3. 修复相关使用 +```javascript +// 修复前 - 错误地将 computed 当作 ref 使用 +totalSections.value = mockSections.length // ❌ 错误 + +// 修复后 - 移除这行代码,因为 computed 是只读的 +// totalSections 会自动根据 courseSections.value.length 计算 +``` + +## 🎯 修复结果 + +### 变量声明正确性 +- ✅ `totalLessons`:只声明为 `computed` +- ✅ `totalSections`:只声明为 `computed` +- ✅ `progress`:声明为 `ref` +- ✅ `completedLessons`:声明为 `ref` + +### 自动计算逻辑 +```javascript +// totalLessons 自动计算章节数量 +const totalLessons = computed(() => { + return groupedSections.value.length // 返回章节组数量 +}) + +// totalSections 自动计算课程总数 +const totalSections = computed(() => { + return courseSections.value.length // 返回课程总数量 +}) +``` + +### 进度计算逻辑 +```javascript +// 在 loadMockData 函数中 +const completed = mockSections.filter(section => section.completed).length +completedLessons.value = completed // 更新已完成数量 +progress.value = Math.round((completed / mockSections.length) * 100) // 计算百分比 + +// totalSections 会自动更新,因为 courseSections.value 已更新 +``` + +## 🔧 技术说明 + +### Computed vs Ref 的区别 +```javascript +// ref - 可读写的响应式变量 +const count = ref(0) +count.value = 10 // ✅ 可以修改 + +// computed - 只读的计算属性 +const doubleCount = computed(() => count.value * 2) +doubleCount.value = 20 // ❌ 错误!computed 是只读的 +``` + +### 正确的数据流 +``` +courseSections.value (ref) + ↓ 自动计算 +totalSections (computed) + ↓ 用于显示 +模板中的 {{ totalSections }} +``` + +## ✅ 验证修复 + +### 1. 编译检查 +```bash +# 应该没有编译错误 +npm run dev +``` + +### 2. 功能验证 +- ✅ 页面可以正常加载 +- ✅ 章节数量正确显示 +- ✅ 学习进度正确计算 +- ✅ 所有计算属性正常工作 + +### 3. 控制台检查 +```javascript +// 在浏览器控制台中应该看到 +console.log('模拟数据加载完成:', { + total: mockSections.length, // 总课程数 + completed: completed, // 已完成数 + progress: progress.value // 进度百分比 +}) +``` + +## 🎉 修复完成 + +现在 `CourseDetailEnrolled.vue` 文件应该可以正常编译和运行,没有重复变量声明的错误。 + +### 页面访问路径 +- **未报名状态**:`http://localhost:5173/course/1` +- **已报名状态**:`http://localhost:5173/course/1/enrolled` + +### 测试流程 +1. 访问未报名状态页面 +2. 点击"立即报名" +3. 确认报名 +4. 自动跳转到已报名状态页面 +5. 验证彩色可点击的课程章节 + +问题已完全解决!🚀 diff --git a/ENROLLED_PAGE_CREATION.md b/ENROLLED_PAGE_CREATION.md new file mode 100644 index 0000000..e225b4d --- /dev/null +++ b/ENROLLED_PAGE_CREATION.md @@ -0,0 +1,297 @@ +# 已报名状态课程详情页面创建说明 + +## 🎯 创建目标 + +基于未报名状态下的页面样式和布局,重新创建一个已报名成功状态下的课程详情页面,该页面具有: + +1. 相同的样式和布局结构 +2. 右侧课程章节显示为彩色且可点击 +3. 点击视频按钮可以正常播放 +4. 完整的学习功能和进度跟踪 + +## 📋 新页面特性 + +### 1. 页面结构 +``` +CourseDetailEnrolled.vue +├── 面包屑导航 +├── 视频播放器区域(可播放视频) +├── 课程信息区域 +│ ├── 课程标题和元信息 +│ ├── 课程描述 +│ ├── 讲师信息 +│ └── 课程标签页(介绍/评论) +└── 右侧边栏 + ├── 学习进度显示 + ├── 课程章节列表(彩色可点击) + └── 推荐课程 +``` + +### 2. 核心功能差异 + +**未报名状态页面**: +- 课程章节:灰色不可点击 +- 视频区域:显示报名提示 +- 操作按钮:立即报名 + +**已报名状态页面**: +- 课程章节:彩色可点击 +- 视频区域:可播放视频 +- 学习进度:显示学习进度条 +- 操作功能:完整的学习功能 + +### 3. 视频播放功能 +```html +
+ +
+
+
...
+

请选择要播放的视频课程

+
+
+
+``` + +### 4. 学习进度跟踪 +```html +
+
+

学习进度

+ {{ completedLessons }}/{{ totalSections }} +
+
+
+
+

已完成 {{ progress }}%

+
+``` + +## 🎨 样式特点 + +### 1. 彩色课程章节 +```css +/* 课程类型徽章彩色样式 */ +.badge-video { + background: #e6f7ff; + color: #1890ff; + border: 1px solid #91d5ff; +} + +.badge-resource { + background: #f6ffed; + color: #52c41a; + border: 1px solid #b7eb8f; +} + +.badge-homework { + background: #fff2e6; + color: #fa8c16; + border: 1px solid #ffd591; +} + +.badge-exam { + background: #fff1f0; + color: #f5222d; + border: 1px solid #ffa39e; +} +``` + +### 2. 可点击交互 +```css +.lesson-content { + cursor: pointer; + transition: all 0.3s; +} + +.lesson-content:hover { + background: #f8f9fa; +} + +.lesson-content:hover .lesson-title { + color: #1890ff; +} + +/* 操作按钮彩色样式 */ +.video-btn { color: #1890ff; } +.download-btn { color: #52c41a; } +.edit-btn { color: #fa8c16; } +.exam-btn { color: #f5222d; } +``` + +### 3. 学习进度样式 +```css +.progress-bar { + width: 100%; + height: 8px; + background: #f0f0f0; + border-radius: 4px; + overflow: hidden; +} + +.progress-fill { + height: 100%; + background: linear-gradient(90deg, #1890ff, #52c41a); + border-radius: 4px; + transition: width 0.3s ease; +} +``` + +## 🔧 功能实现 + +### 1. 视频播放处理 +```javascript +// 处理视频播放 - 已报名状态,可以正常播放 +const handleVideoPlay = (section: CourseSection) => { + console.log('播放视频:', section.name, section.outline) + currentVideoUrl.value = section.outline || '' + currentSection.value = section + + // 标记为已完成 + if (!section.completed) { + section.completed = true + // 重新计算进度 + const completed = courseSections.value.filter(s => s.completed).length + completedLessons.value = completed + progress.value = Math.round((completed / courseSections.value.length) * 100) + } +} +``` + +### 2. 学习进度计算 +```javascript +// 计算学习进度 +const loadMockData = () => { + const mockSections = generateMockSections() + courseSections.value = mockSections + groupedSections.value = groupSectionsByChapter(mockSections) + + // 计算学习进度 + const completed = mockSections.filter(section => section.completed).length + completedLessons.value = completed + totalSections.value = mockSections.length + progress.value = Math.round((completed / mockSections.length) * 100) +} +``` + +### 3. 章节点击处理 +```javascript +// 处理章节点击 - 已报名状态,可以正常点击 +const handleSectionClick = (section: CourseSection) => { + console.log('点击课程章节:', section.name) + currentSection.value = section + + // 根据类型执行不同操作 + if (isVideoLesson(section)) { + handleVideoPlay(section) + } else if (isResourceLesson(section)) { + handleDownload(section) + } else if (isHomeworkLesson(section)) { + handleHomework(section) + } else if (isExamLesson(section)) { + handleExam(section) + } +} +``` + +## 🚀 路由配置 + +### 1. 新增路由 +```typescript +// router/index.ts +{ + path: '/course/:id/enrolled', + name: 'CourseDetailEnrolled', + component: CourseDetailEnrolled, + meta: { + title: '课程详情 - 已报名' + } +} +``` + +### 2. 跳转逻辑 +```javascript +// 原CourseDetail页面报名成功后跳转 +setTimeout(() => { + enrollSuccessVisible.value = false + // 跳转到已报名状态页面 + router.push(`/course/${courseId.value}/enrolled`) +}, 2000) +``` + +## 📱 用户体验流程 + +### 完整的学习体验 +1. **未报名状态**:`/course/1` - 灰色不可点击章节 +2. **点击报名**:显示报名确认弹窗 +3. **报名成功**:显示成功提示"正在跳转到已报名状态页面..." +4. **自动跳转**:跳转到 `/course/1/enrolled` +5. **已报名状态**:彩色可点击章节,可播放视频 +6. **学习功能**: + - 点击视频章节 → 播放视频 + - 点击资料章节 → 下载资源 + - 点击作业章节 → 打开作业 + - 点击考试章节 → 开始考试 + - 自动更新学习进度 + +### 视觉对比 +**未报名页面** (`/course/1`): +``` +课程章节 ⋮ 正序 +───────────────────────────────── +第一章 课前准备 (灰色) +├── 📹 开课彩蛋 (灰色不可点击) +├── 📹 课程定位 (灰色不可点击) +└── ... + +[立即报名] 按钮 +``` + +**已报名页面** (`/course/1/enrolled`): +``` +学习进度: 3/24 (12%) +▓▓░░░░░░░░░░░░░░░░░░ 12% + +课程章节 ⋮ 正序 +───────────────────────────────── +第一章 课前准备 (正常色) +├── 📹 开课彩蛋 (蓝色可点击) ✓ +├── 📹 课程定位 (蓝色可点击) ✓ +├── 📹 学习建议 (蓝色可点击) ✓ +└── 📄 准备PPT (绿色可点击) + +第二章 程序设计基础知识 +├── 📹 程序设计入门 (蓝色可点击) ✓ +├── 📄 操作PPT (绿色可点击) +└── ... +``` + +## ✅ 功能特点 + +### 已报名状态页面优势 +1. **完整学习体验**:视频播放、资源下载、作业考试 +2. **进度跟踪**:实时显示学习进度和完成状态 +3. **彩色交互**:直观的颜色区分不同类型内容 +4. **响应式设计**:适配不同屏幕尺寸 +5. **状态持久化**:学习进度和完成状态保存 + +### 与未报名页面的区别 +- **视觉效果**:彩色 vs 灰色 +- **交互能力**:可点击 vs 不可点击 +- **功能完整性**:完整学习功能 vs 仅预览 +- **进度跟踪**:有进度显示 vs 无进度显示 + +现在您有了两个独立的页面: +- `/course/:id` - 未报名状态(灰色不可点击) +- `/course/:id/enrolled` - 已报名状态(彩色可点击) + +用户报名成功后会自动跳转到已报名状态页面,体验完整的学习功能!🎉 diff --git a/ENROLLMENT_FLOW_UPDATE.md b/ENROLLMENT_FLOW_UPDATE.md new file mode 100644 index 0000000..7e6b05f --- /dev/null +++ b/ENROLLMENT_FLOW_UPDATE.md @@ -0,0 +1,192 @@ +# 课程详情页报名流程更新说明 + +## 🎯 更新目标 + +修改报名成功后的跳转逻辑,让用户在报名成功后停留在**课程详情页面的已报名状态**,而不是直接跳转到学习页面,这样用户可以看到报名成功后的彩色可点击效果。 + +## 📋 更新内容 + +### 1. 报名流程优化 +**修改前**: +``` +未报名状态 → 点击"立即报名" → 报名确认 → 报名成功 → 跳转到学习页面 +``` + +**修改后**: +``` +未报名状态 → 点击"立即报名" → 报名确认 → 报名成功 → 停留在课程详情页(已报名状态) +``` + +### 2. 报名成功处理逻辑 +```javascript +// 确认报名 +const confirmEnrollment = async () => { + try { + enrollmentLoading.value = true + + // 模拟API调用 + await new Promise(resolve => setTimeout(resolve, 1000)) + + // 报名成功 + isEnrolled.value = true // 关键:设置为已报名状态 + enrollConfirmVisible.value = false + enrollSuccessVisible.value = true + + // 2秒后关闭成功提示,停留在当前页面(已报名状态) + setTimeout(() => { + enrollSuccessVisible.value = false + // 不跳转,让用户看到已报名状态下的彩色可点击效果 + console.log('报名成功!现在显示已报名状态的课程详情页面') + }, 2000) + + } catch (error) { + console.error('报名失败:', error) + } finally { + enrollmentLoading.value = false + } +} +``` + +### 3. 按钮状态和功能 +```javascript +// 处理课程报名 +const handleEnrollCourse = () => { + if (!userStore.isLoggedIn) { + // 未登录,显示登录弹窗 + showLoginModal() + return + } + + if (isEnrolled.value) { + // 已报名,跳转到学习页面 + console.log('用户已报名,跳转到学习页面') + router.push(`/course/${courseId.value}/study`) + return + } + + // 未报名,显示报名确认弹窗 + console.log('用户未报名,显示报名确认弹窗') + enrollConfirmVisible.value = true +} +``` + +### 4. 报名成功提示更新 +```html + + +``` + +## 🎨 用户体验流程 + +### 完整的用户体验 +1. **初始状态**:用户看到灰色不可点击的课程章节 +2. **点击报名**:显示"立即报名"按钮 +3. **确认报名**:弹出报名确认对话框 +4. **报名处理**:显示"报名中..."加载状态 +5. **报名成功**:显示成功提示"现在您可以查看完整的课程内容了" +6. **状态切换**:页面自动切换到已报名状态,课程章节变为彩色可点击 +7. **继续学习**:用户可以点击"进入学习"按钮跳转到学习页面 + +### 视觉变化对比 +**报名前(灰色不可点击)**: +``` +课程章节 ⋮ 正序 +───────────────────────────────── +第一章 课前准备 (灰色) +├── 📹 开课彩蛋:新开始新征程 (灰色不可点击) +├── 📹 课程定位与目标 (灰色不可点击) +└── ... + +立即报名 [按钮] +``` + +**报名后(彩色可点击)**: +``` +课程章节 ⋮ 正序 +───────────────────────────────── +第一章 课前准备 (正常色) +├── 📹 开课彩蛋:新开始新征程 (蓝色可点击) ✓ +├── 📹 课程定位与目标 (蓝色可点击) ✓ +└── ... + +进入学习 [按钮] +``` + +## 🔧 技术实现 + +### 状态管理 +```javascript +// 关键状态变量 +const isEnrolled = ref(false) // 报名状态 +const isUserEnrolled = computed(() => { + return userStore.isLoggedIn && isEnrolled.value // 综合状态 +}) + +// 初始化为未报名状态,便于测试完整流程 +const initializeMockState = () => { + // 模拟用户已登录 + userStore.user = { ... } + userStore.token = 'mock-token' + + // 模拟用户未报名状态,可以测试完整的报名流程 + isEnrolled.value = false // false=未报名状态,true=已报名状态 +} +``` + +### 样式切换 +```html + +
+ +
+ {{ getLessonTypeText(section) }} +
+ + + {{ section.name }} + +
+``` + +## ✅ 测试步骤 + +### 完整测试流程 +1. **刷新页面**:看到未报名状态(灰色章节) +2. **点击"立即报名"**:弹出确认对话框 +3. **点击"确认报名"**:显示加载状态 +4. **等待成功提示**:显示"报名成功!现在您可以查看完整的课程内容了" +5. **观察状态变化**:2秒后提示消失,页面显示已报名状态(彩色章节) +6. **测试功能**:点击课程章节可以正常操作 +7. **进入学习**:点击"进入学习"按钮跳转到学习页面 + +### 状态切换测试 +```javascript +// 在 initializeMockState 函数中修改 +isEnrolled.value = false // 测试未报名状态 +isEnrolled.value = true // 测试已报名状态 +``` + +## 🎯 用户价值 + +### 对用户的好处 +1. **即时反馈**:报名成功后立即看到状态变化 +2. **功能验证**:可以在课程详情页面验证报名是否成功 +3. **内容预览**:报名后可以在详情页面查看完整的课程结构 +4. **决策确认**:看到完整内容后再决定是否立即开始学习 + +### 交互优化 +- **渐进式体验**:从灰色 → 彩色的视觉变化很直观 +- **状态明确**:用户清楚地知道自己的报名状态 +- **操作连贯**:报名 → 查看内容 → 开始学习的自然流程 + +现在用户可以完整体验从未报名到已报名的状态变化,看到报名成功后课程章节从灰色变为彩色可点击的效果!🎉 diff --git a/ENROLLMENT_STATUS_FINAL.md b/ENROLLMENT_STATUS_FINAL.md new file mode 100644 index 0000000..a05a23e --- /dev/null +++ b/ENROLLMENT_STATUS_FINAL.md @@ -0,0 +1,238 @@ +# 课程详情页报名状态最终实现说明 + +## 🎯 功能概述 + +实现了完整的课程详情页报名状态管理,确保只有**同时满足登录和报名**的用户才能看到彩色可点击的课程章节,其他情况都显示灰色不可点击状态。 + +## 📋 状态判断逻辑 + +### 三种状态 +1. **未登录** → 🔒 灰色不可点击 +2. **已登录但未报名** → 🔒 灰色不可点击 +3. **已登录且已报名** → 🎉 彩色可点击 + +### 核心逻辑 +```javascript +// 报名状态管理 +const isEnrolled = ref(false) // 用户是否已报名该课程 +const enrollmentLoading = ref(false) // 报名加载状态 + +// 计算用户是否已报名 - 关键逻辑 +const isUserEnrolled = computed(() => { + // 必须同时满足:用户已登录 AND 已报名该课程 + return userStore.isLoggedIn && isEnrolled.value +}) +``` + +## 🎨 视觉效果 + +### 未报名状态(灰色不可点击) +```css +/* 未报名状态的灰色样式 */ +.lesson-content.unregistered { + cursor: not-allowed; +} + +.lesson-title.disabled { + color: #999; +} + +.lesson-type-badge.disabled { + background: #d9d9d9 !important; + color: #999 !important; +} + +.lesson-action-btn.disabled { + cursor: not-allowed; + opacity: 0.5; +} + +.lesson-action-btn.disabled svg { + color: #d9d9d9 !important; +} +``` + +### 已报名状态(彩色可点击) +- 课程类型标识:蓝色、绿色等彩色显示 +- 课程标题:正常黑色文字 +- 操作按钮:彩色图标,可正常点击 +- 完成状态:绿色完成图标 + +## 🔧 交互逻辑 + +### 课程章节点击处理 +```html +
+ + +
+ {{ getLessonTypeText(section) }} +
+ + +
+ + {{ section.name }} + +
+ + + +
+``` + +### 报名流程 +```javascript +// 处理课程报名 +const handleEnrollCourse = () => { + if (!userStore.isLoggedIn) { + // 未登录,显示登录弹窗 + showLoginModal() + return + } + + if (isEnrolled.value) { + // 已报名,直接跳转到学习页面 + router.push(`/course/${courseId.value}/study`) + return + } + + // 未报名,显示报名确认弹窗 + enrollConfirmVisible.value = true +} + +// 确认报名 +const confirmEnrollment = async () => { + try { + enrollmentLoading.value = true + + // 模拟API调用 + await new Promise(resolve => setTimeout(resolve, 1000)) + + // 报名成功 - 关键:设置报名状态为true + isEnrolled.value = true + enrollConfirmVisible.value = false + enrollSuccessVisible.value = true + + // 2秒后自动跳转 + setTimeout(() => { + enrollSuccessVisible.value = false + router.push(`/course/${courseId.value}/study`) + }, 2000) + + } catch (error) { + console.error('报名失败:', error) + } finally { + enrollmentLoading.value = false + } +} +``` + +## 🎯 章节头部样式 + +根据图片标准更新的章节头部: +```html +
+
+

课程章节

+
+
+ +
+
+``` + +```css +.sections-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 20px; + background: white; + border-bottom: 1px solid #f0f0f0; +} + +.sections-title { + font-size: 18px; + font-weight: 600; + color: #333; + margin: 0; +} +``` + +## 📱 报名确认弹窗 + +### 确认弹窗 +```html + +``` + +### 成功提示 +```html + +``` + +## 🧪 测试状态 + +为了方便测试,在 `initializeMockState` 函数中: + +```javascript +// 模拟用户已登录 +userStore.user = { ... } +userStore.token = 'mock-token' + +// 模拟用户已报名(您可以改为false来测试未报名状态) +isEnrolled.value = true // 改为false可测试未报名状态 +``` + +### 测试不同状态 +1. **测试未登录状态**:注释掉用户登录模拟代码 +2. **测试未报名状态**:设置 `isEnrolled.value = false` +3. **测试已报名状态**:设置 `isEnrolled.value = true` + +## ✅ 最终效果 + +### 状态流转 +1. **未登录** → 点击报名 → 登录弹窗 → 登录成功 → 报名确认 → 报名成功 → 彩色可点击 +2. **已登录未报名** → 点击报名 → 报名确认 → 报名成功 → 彩色可点击 +3. **已登录已报名** → 直接显示彩色可点击状态 + +### 视觉反馈 +- **未报名**:所有课程章节显示为灰色,不可点击 +- **已报名**:所有课程章节显示为彩色,可正常点击学习 + +现在课程详情页面具备完整的报名状态管理,确保只有真正有学习权限的用户才能看到彩色可点击的课程内容!🎉 diff --git a/ENROLLMENT_STATUS_UPDATE.md b/ENROLLMENT_STATUS_UPDATE.md new file mode 100644 index 0000000..36ae289 --- /dev/null +++ b/ENROLLMENT_STATUS_UPDATE.md @@ -0,0 +1,297 @@ +# 课程详情页报名状态功能更新说明 + +## 🎯 更新目标 + +实现课程详情页面的完整报名状态管理,包括: +1. 判断登录和报名状态 +2. 未报名状态显示灰色不可点击样式 +3. 点击立即报名弹出确认提示框 +4. 确认后跳转到已报名的课程详情页面 +5. 更新右侧课程章节头部样式 + +## 📋 功能实现 + +### 1. 报名状态管理 +```javascript +// 报名状态管理 +const isEnrolled = ref(false) // 用户是否已报名该课程 +const enrollmentLoading = ref(false) // 报名加载状态 + +// 计算用户是否已报名 +const isUserEnrolled = computed(() => { + // 必须同时满足:用户已登录 AND 已报名该课程 + return userStore.isLoggedIn && isEnrolled.value +}) + +// 报名确认弹窗 +const enrollConfirmVisible = ref(false) +const enrollSuccessVisible = ref(false) +``` + +### 2. 报名流程处理 +```javascript +// 处理课程报名 +const handleEnrollCourse = () => { + if (!userStore.isLoggedIn) { + // 未登录,显示登录弹窗 + showLoginModal() + return + } + + if (isEnrolled.value) { + // 已报名,直接跳转到学习页面 + router.push(`/course/${courseId.value}/study`) + return + } + + // 未报名,显示报名确认弹窗 + enrollConfirmVisible.value = true +} + +// 确认报名 +const confirmEnrollment = async () => { + try { + enrollmentLoading.value = true + + // 模拟API调用 + await new Promise(resolve => setTimeout(resolve, 1000)) + + // 报名成功 + isEnrolled.value = true + enrollConfirmVisible.value = false + enrollSuccessVisible.value = true + + // 2秒后自动跳转 + setTimeout(() => { + enrollSuccessVisible.value = false + router.push(`/course/${courseId.value}/study`) + }, 2000) + + } catch (error) { + console.error('报名失败:', error) + } finally { + enrollmentLoading.value = false + } +} +``` + +### 3. 课程章节状态控制 +```html +
+ +
+ {{ getLessonTypeText(section) }} +
+ +
+ + {{ section.name }} + +
+ +
+ +
+
+``` + +### 4. 报名确认弹窗 +```html + + + + + +``` + +## 🎨 样式更新 + +### 1. 课程章节头部样式 +根据图片标准更新: +```html +
+
+

课程章节

+
+
+ +
+
+``` + +```css +.sections-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 20px; + background: white; + border-bottom: 1px solid #f0f0f0; +} + +.sections-title { + font-size: 18px; + font-weight: 600; + color: #333; + margin: 0; +} + +.sort-btn { + background: none; + border: none; + color: #999; + padding: 6px 12px; + border-radius: 4px; + cursor: pointer; + font-size: 14px; + display: flex; + align-items: center; + gap: 6px; +} +``` + +### 2. 未报名状态灰色样式 +```css +/* 未报名状态的灰色样式 */ +.lesson-content.unregistered { + cursor: not-allowed; +} + +.lesson-title.disabled { + color: #999; +} + +.lesson-duration.disabled { + color: #999; +} + +.lesson-type-badge.disabled { + background: #d9d9d9 !important; + color: #999 !important; +} + +.lesson-action-btn.disabled { + cursor: not-allowed; + opacity: 0.5; +} + +.lesson-action-btn.disabled svg { + color: #d9d9d9 !important; +} + +.completion-icon.disabled { + opacity: 0.5; +} +``` + +### 3. 弹窗样式 +```css +.modal-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; +} + +.modal-content { + background: white; + border-radius: 8px; + max-width: 400px; + width: 90%; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); +} + +.success-modal { + text-align: center; + padding: 40px 24px; +} + +.success-icon { + width: 60px; + height: 60px; + background: #52c41a; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto 20px; + font-size: 30px; + color: white; + font-weight: bold; +} +``` + +## ✅ 功能流程 + +### 未登录用户 +1. 点击"立即报名" → 显示登录弹窗 +2. 登录成功后 → 显示报名确认弹窗 +3. 确认报名 → 显示报名成功提示 → 跳转学习页面 + +### 已登录未报名用户 +1. 点击"立即报名" → 显示报名确认弹窗 +2. 确认报名 → 显示报名成功提示 → 跳转学习页面 +3. 点击课程章节 → 显示报名确认弹窗 + +### 已报名用户 +1. 点击"立即报名" → 直接跳转学习页面 +2. 点击课程章节 → 正常进入学习 + +## 🎯 视觉效果 + +### 未报名状态 +- 课程章节显示为灰色 +- 所有按钮不可点击 +- 鼠标悬停显示禁用状态 + +### 已报名状态 +- 课程章节显示为彩色 +- 所有功能正常可用 +- 正常的交互反馈 + +### 章节头部 +- 简洁的"课程章节"标题 +- 右侧排序按钮带图标 +- 符合图片设计标准 + +现在课程详情页面具备完整的报名状态管理功能!🎉 diff --git a/EXAM_INTEGRATION.md b/EXAM_INTEGRATION.md new file mode 100644 index 0000000..0b284b2 --- /dev/null +++ b/EXAM_INTEGRATION.md @@ -0,0 +1,244 @@ +# 课程章节考试功能集成说明 + +## 🎯 功能目标 + +实现点击课程详情页面右侧课程章节中的考试部分,能够跳转到之前创建的考试页面功能。 + +## 📋 实现内容 + +### 1. 考试识别逻辑 +```javascript +// 判断是否为考试课程 +const isExamLesson = (section: CourseSection) => { + return section.name.includes('考试') || section.name.includes('测试') +} +``` + +### 2. 考试处理函数 + +#### 未报名状态页面 (CourseDetail.vue) +```javascript +const handleExam = (section: CourseSection) => { + console.log('开始考试:', section) + + // 跳转到考前须知页面 + router.push({ + name: 'ExamNotice', + params: { + courseId: courseId.value, + sectionId: section.id + }, + query: { + courseName: course.value?.title || '课程名称', + examName: section.name + } + }) +} +``` + +#### 已报名状态页面 (CourseDetailEnrolled.vue) +```javascript +// 处理考试 +const handleExam = (section: CourseSection) => { + console.log('开始考试:', section.name) + + // 跳转到考前须知页面 + router.push({ + name: 'ExamNotice', + params: { + courseId: courseId.value.toString(), + sectionId: section.id.toString() + }, + query: { + courseName: course.value?.title || '课程名称', + examName: section.name + } + }) +} +``` + +### 3. 路由配置 +```typescript +// router/index.ts 中已存在的路由 +{ + path: '/course/:courseId/exam/:sectionId/notice', + name: 'ExamNotice', + component: ExamNotice, + meta: { + title: '考前须知' + } +}, +{ + path: '/course/:courseId/exam/:sectionId', + name: 'Exam', + component: Exam, + meta: { + title: '在线考试' + } +} +``` + +## 🎨 用户界面 + +### 1. 考试章节显示 +```html + + +``` + +### 2. 考试徽章样式 +```css +.badge-exam { + background: #fff1f0; + color: #f5222d; + border: 1px solid #ffa39e; +} + +.exam-btn { + color: #f5222d; +} +``` + +## 🚀 完整流程 + +### 1. 用户操作流程 +``` +1. 用户访问课程详情页面 + ↓ +2. 查看右侧课程章节列表 + ↓ +3. 找到考试类型的章节(红色徽章标识) + ↓ +4. 点击考试章节或考试图标 + ↓ +5. 跳转到考前须知页面 + ↓ +6. 阅读考试说明 + ↓ +7. 点击"开始考试"按钮 + ↓ +8. 进入正式考试页面 +``` + +### 2. 页面跳转路径 +``` +课程详情页面 +/course/1 或 /course/1/enrolled + ↓ 点击考试章节 +考前须知页面 +/course/1/exam/15/notice + ↓ 点击开始考试 +正式考试页面 +/course/1/exam/15 +``` + +### 3. 参数传递 +```javascript +// 传递的参数 +{ + params: { + courseId: '1', // 课程ID + sectionId: '15' // 章节ID(考试ID) + }, + query: { + courseName: '课程标题', // 课程名称 + examName: '期末考试' // 考试名称 + } +} +``` + +## 📱 模拟数据 + +### 考试章节示例 +```javascript +// 模拟数据中的考试章节 +{ + id: 15, + lessonId: courseId.value, + name: '期末考试', // 包含"考试"关键词,会被识别为考试类型 + outline: '', + parentId: 0, + sort: 15, + level: 1, + revision: 1, + createdAt: Date.now(), + updatedAt: Date.now(), + deletedAt: null, + completed: false, + duration: undefined +} +``` + +### 考试类型识别 +- **名称包含"考试"**:期末考试、中期考试、单元考试 +- **名称包含"测试"**:能力测试、知识测试、技能测试 + +## 🎯 视觉效果 + +### 1. 未报名状态 +``` +第三章 实战项目 +├── 📹 项目一:计算器开发 (灰色不可点击) +├── 📄 项目源码下载 (灰色不可点击) +├── 📝 作业:完成个人项目 (灰色不可点击) +└── 🎯 期末考试 (灰色不可点击) +``` + +### 2. 已报名状态 +``` +第三章 实战项目 +├── 📹 项目一:计算器开发 (蓝色可点击) +├── 📄 项目源码下载 (绿色可点击) +├── 📝 作业:完成个人项目 (橙色可点击) +└── 🎯 期末考试 (红色可点击) ← 点击跳转到考试 +``` + +## 🔧 技术实现 + +### 1. 考试识别 +- 通过章节名称关键词识别 +- 自动应用红色徽章样式 +- 显示考试图标 + +### 2. 路由跳转 +- 使用 `router.push()` 进行页面跳转 +- 传递课程ID和章节ID作为路由参数 +- 传递课程名称和考试名称作为查询参数 + +### 3. 状态管理 +- 未报名用户点击考试:显示报名提示 +- 已报名用户点击考试:直接跳转到考前须知 + +## ✅ 测试验证 + +### 1. 功能测试 +1. **访问已报名状态页面**:`/course/1/enrolled` +2. **找到考试章节**:第三章中的"期末考试" +3. **验证样式**:红色徽章,考试图标 +4. **点击测试**:点击考试章节或图标 +5. **验证跳转**:应该跳转到 `/course/1/exam/15/notice` +6. **参数验证**:检查页面是否正确显示课程名称和考试名称 + +### 2. 路径验证 +- ✅ 课程详情页面 → 考前须知页面 +- ✅ 考前须知页面 → 正式考试页面 +- ✅ 参数正确传递 +- ✅ 页面正常显示 + +## 🎉 集成完成 + +现在用户可以: +1. 在课程章节中看到考试内容(红色徽章标识) +2. 点击考试章节跳转到考前须知页面 +3. 在考前须知页面了解考试规则 +4. 点击开始考试进入正式考试界面 +5. 完成完整的考试流程 + +考试功能已完全集成到课程学习流程中!🚀 diff --git a/LEARNING_PROGRESS_COMPONENT.md b/LEARNING_PROGRESS_COMPONENT.md new file mode 100644 index 0000000..c345ab8 --- /dev/null +++ b/LEARNING_PROGRESS_COMPONENT.md @@ -0,0 +1,217 @@ +# 学习进度统计组件实现说明 + +## 🎯 概述 + +根据提供的设计图,实现了一个完整的学习进度统计组件 `LearningProgressStats.vue`,包含三个圆形进度图表(课程、作业、考试)和一个总体学习进度条。 + +## 📁 文件位置 + +``` +src/ +├── components/ +│ └── common/ +│ └── LearningProgressStats.vue # 学习进度统计组件 +└── views/ + └── CourseDetailEnrolled.vue # 课程详情页面(已报名状态) +``` + +## 🎨 设计特点 + +### 1. 圆形进度图表 +- **数量**: 3个(课程、作业、考试) +- **样式**: 粗边框圆环(stroke-width: 12px) +- **颜色**: 蓝色主题 (#1890ff) +- **动画**: 平滑的进度动画效果 +- **阴影**: 立体阴影效果 + +### 2. 总体进度条 +- **样式**: 粗进度条(height: 12px) +- **背景**: 渐变背景效果 +- **边框**: 加粗边框设计 +- **阴影**: 进度条阴影效果 + +### 3. 字体样式 +- **百分比**: 24px, 粗体 (font-weight: 700) +- **标签**: 16px, 中等粗体 (font-weight: 600) +- **进度文字**: 18px, 粗体 +- **数字**: 22-24px, 超粗体 + +## 🔧 组件Props + +```typescript +interface Props { + courseProgress?: number // 课程进度百分比 + homeworkProgress?: number // 作业进度百分比 + examProgress?: number // 考试进度百分比 + completedItems?: number // 已完成项目数 + totalItems?: number // 总项目数 +} +``` + +## 📊 默认数据 + +```typescript +// 默认值(与设计图一致) +courseProgress: 31.7% +homeworkProgress: 22.5% +examProgress: 9.6% +completedItems: 13 +totalItems: 54 +``` + +## 🎮 使用方法 + +### 基本用法 + +```vue + + + +``` + +### 动态数据 + +```vue + + + +``` + +## 🎨 样式特性 + +### 1. 圆形进度环 +```css +/* 背景圆环 */ +stroke: #e8f4fd +stroke-width: 12px +opacity: 0.4 + +/* 进度圆环 */ +stroke: #1890ff +stroke-width: 12px +stroke-linecap: round +``` + +### 2. 容器样式 +```css +/* 主容器 */ +background: #ffffff +border-radius: 16px +padding: 32px +box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12) +border: 3px solid #e8f4fd + +/* 进度条容器 */ +background: linear-gradient(135deg, #f8fcff 0%, #e8f4fd 100%) +border-radius: 12px +border-top: 3px solid #e8f4fd +``` + +### 3. 进度条样式 +```css +/* 进度条背景 */ +height: 12px +background: #e8f4fd +border-radius: 6px +border: 2px solid #d9ecff + +/* 进度条填充 */ +background: linear-gradient(90deg, #1890ff 0%, #40a9ff 100%) +box-shadow: 0 2px 4px rgba(24, 144, 255, 0.3) +``` + +## 📱 响应式设计 + +### 桌面端 (>768px) +- 圆形进度图: 120px × 120px +- 字体大小: 24px (百分比) +- 间距: 正常间距 + +### 平板端 (≤768px) +- 圆形进度图: 100px × 100px +- 字体大小: 16px (百分比) +- 间距: 紧凑间距 + +### 移动端 (≤480px) +- 布局: 垂直排列 +- 圆形进度图: 居中显示 +- 最大宽度: 200px + +## 🔮 图标占位符 + +当前使用emoji作为图标占位符: +- 📚 课程 +- 📝 作业 +- 📋 考试 + +**等待您提供具体的图标文件后,可以替换为实际的SVG图标。** + +## 🚀 实际应用 + +学习进度统计组件已集成到课程详情页面(已报名状态): + +### 访问路径 +- 课程详情页面: `/course/1/enrolled` +- 位置: 右侧边栏的学习进度区域 + +### 显示内容 +- 三个圆形进度图表(课程、作业、考试) +- 总体学习进度条 +- 完成项目数统计 (13/54) +- 实时进度数据更新 + +## 🎯 设计图匹配度 + +✅ **完全匹配的特性**: +- 三个圆形进度图表布局 +- 粗边框圆环设计 +- 蓝色主题色彩 +- 百分比数字显示 +- 底部总体进度条 +- 进度数字显示 (13/54) +- 整体卡片样式 + +🔄 **待完善的特性**: +- 等待提供具体的图标文件 +- 可能需要微调颜色深浅 +- 可能需要调整具体的间距 + +## 📝 下一步计划 + +1. **图标替换**: 等待您提供三个中心点的图标文件 +2. **颜色调整**: 根据实际需求微调颜色 +3. **动画优化**: 可以添加更多动画效果 +4. **数据集成**: 与实际的学习数据API集成 + +## 🔗 相关文件 + +- 组件文件: `src/components/common/LearningProgressStats.vue` +- 应用页面: `src/views/CourseDetailEnrolled.vue` +- 查看地址: http://localhost:3001/course/1/enrolled diff --git a/index.html b/index.html index 24f2f0e..ce2cb04 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,10 @@ 在线学习平台 - + + + +
diff --git a/package-lock.json b/package-lock.json index 830f786..869f505 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "@vicons/ionicons5": "^0.13.0", "axios": "^1.11.0", "ckplayer": "^3.1.2", - "hls.js": "^1.6.7", "naive-ui": "^2.42.0", "pinia": "^3.0.3", "vue": "^3.5.17", @@ -21,12 +20,9 @@ "devDependencies": { "@types/node": "^24.0.15", "@vitejs/plugin-vue": "^6.0.0", - "@vue/test-utils": "^2.4.6", - "jsdom": "^26.1.0", "typescript": "^5.8.3", "vite": "^7.0.0", "vite-plugin-vue-devtools": "^7.7.7", - "vitest": "^3.2.4", "vue-tsc": "^3.0.3" } }, @@ -54,27 +50,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -548,121 +523,6 @@ "vue": "^3.0.11" } }, - "node_modules/@csstools/color-helpers": { - "version": "5.0.2", - "resolved": "https://registry.npmmirror.com/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", - "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmmirror.com/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.0.10", - "resolved": "https://registry.npmmirror.com/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz", - "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.0.2", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz", @@ -1155,24 +1015,6 @@ "url": "https://github.com/sponsors/kazupon" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.12", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", @@ -1217,24 +1059,6 @@ "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", "license": "Apache-2.0" }, - "node_modules/@one-ini/wasm": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/@one-ini/wasm/-/wasm-0.1.1.tgz", - "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@polka/url": { "version": "1.0.0-next.29", "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.29.tgz", @@ -1572,23 +1396,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/chai": { - "version": "5.2.2", - "resolved": "https://registry.npmmirror.com/@types/chai/-/chai-5.2.2.tgz", - "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", @@ -1650,131 +1457,6 @@ "vue": "^3.2.25" } }, - "node_modules/@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/mocker/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/@volar/language-core": { "version": "2.4.20", "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.20.tgz", @@ -2063,37 +1745,6 @@ "integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==", "license": "MIT" }, - "node_modules/@vue/test-utils": { - "version": "2.4.6", - "resolved": "https://registry.npmmirror.com/@vue/test-utils/-/test-utils-2.4.6.tgz", - "integrity": "sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-beautify": "^1.14.9", - "vue-component-type-helpers": "^2.0.0" - } - }, - "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/alien-signals": { "version": "2.0.5", "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-2.0.5.tgz", @@ -2101,42 +1752,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, "node_modules/async-validator": { "version": "4.2.5", "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", @@ -2160,13 +1775,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, "node_modules/birpc": { "version": "2.5.0", "resolved": "https://registry.npmmirror.com/birpc/-/birpc-2.5.0.tgz", @@ -2176,16 +1784,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/browserslist": { "version": "4.25.1", "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.25.1.tgz", @@ -2235,16 +1833,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -2279,59 +1867,12 @@ ], "license": "CC-BY-4.0" }, - "node_modules/chai": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/chai/-/chai-5.2.1.tgz", - "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, "node_modules/ckplayer": { "version": "3.1.2", "resolved": "https://registry.npmmirror.com/ckplayer/-/ckplayer-3.1.2.tgz", "integrity": "sha512-JHlWTSRm6aqZx+dYdsa6MWz7151omcGBBF9EKK49NL1WCJ2olbdkt7CPKZHvW4lLVgxxEopmuLYEqNdb2cOPhA==", "license": "MIT" }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", @@ -2344,27 +1885,6 @@ "node": ">= 0.8" } }, - "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2418,40 +1938,12 @@ "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", "license": "MIT" }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/date-fns": { "version": "3.6.0", "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-3.6.0.tgz", @@ -2496,23 +1988,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmmirror.com/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/default-browser": { "version": "5.2.1", "resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.2.1.tgz", @@ -2579,45 +2054,6 @@ "node": ">= 0.4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/editorconfig": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@one-ini/wasm": "0.1.1", - "commander": "^10.0.0", - "minimatch": "9.0.1", - "semver": "^7.5.3" - }, - "bin": { - "editorconfig": "bin/editorconfig" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/editorconfig/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/electron-to-chromium": { "version": "1.5.187", "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.187.tgz", @@ -2625,13 +2061,6 @@ "dev": true, "license": "ISC" }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", @@ -2672,13 +2101,6 @@ "node": ">= 0.4" } }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -2797,16 +2219,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/expect-type": { - "version": "1.2.2", - "resolved": "https://registry.npmmirror.com/expect-type/-/expect-type-1.2.2.tgz", - "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/fdir": { "version": "6.4.6", "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.4.6.tgz", @@ -2858,23 +2270,6 @@ } } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/form-data": { "version": "4.0.4", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.4.tgz", @@ -2994,43 +2389,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", @@ -3108,59 +2466,12 @@ "node": ">=12.0.0" } }, - "node_modules/hls.js": { - "version": "1.6.7", - "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.6.7.tgz", - "integrity": "sha512-QW2fnwDGKGc9DwQUGLbmMOz8G48UZK7PVNJPcOUql1b8jubKx4/eMHNP5mGqr6tYlJNDG1g10Lx2U/qPzL6zwQ==", - "license": "Apache-2.0" - }, "node_modules/hookable": { "version": "5.5.3", "resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz", "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", "license": "MIT" }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/human-signals": { "version": "8.0.1", "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-8.0.1.tgz", @@ -3171,26 +2482,6 @@ "node": ">=18.18.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, "node_modules/is-docker": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz", @@ -3207,16 +2498,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -3249,13 +2530,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, "node_modules/is-stream": { "version": "4.0.1", "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-4.0.1.tgz", @@ -3317,54 +2591,6 @@ "dev": true, "license": "ISC" }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/js-beautify": { - "version": "1.15.4", - "resolved": "https://registry.npmmirror.com/js-beautify/-/js-beautify-1.15.4.tgz", - "integrity": "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "config-chain": "^1.1.13", - "editorconfig": "^1.0.4", - "glob": "^10.4.2", - "js-cookie": "^3.0.5", - "nopt": "^7.2.1" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/js-cookie": { - "version": "3.0.5", - "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz", - "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", @@ -3372,46 +2598,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jsdom": { - "version": "26.1.0", - "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-26.1.0.tgz", - "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssstyle": "^4.2.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.5.0", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.16", - "parse5": "^7.2.1", - "rrweb-cssom": "^0.8.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.1.1", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.1", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^3.0.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", @@ -3470,13 +2656,6 @@ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "license": "MIT" }, - "node_modules/loupe": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/loupe/-/loupe-3.2.0.tgz", - "integrity": "sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==", - "dev": true, - "license": "MIT" - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3526,32 +2705,6 @@ "node": ">= 0.6" } }, - "node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", @@ -3637,22 +2790,6 @@ "dev": true, "license": "MIT" }, - "node_modules/nopt": { - "version": "7.2.1", - "resolved": "https://registry.npmmirror.com/nopt/-/nopt-7.2.1.tgz", - "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm-run-path": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-6.0.0.tgz", @@ -3683,13 +2820,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nwsapi": { - "version": "2.2.21", - "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.21.tgz", - "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==", - "dev": true, - "license": "MIT" - }, "node_modules/open": { "version": "10.2.0", "resolved": "https://registry.npmmirror.com/open/-/open-10.2.0.tgz", @@ -3709,13 +2839,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, "node_modules/parse-ms": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/parse-ms/-/parse-ms-4.0.0.tgz", @@ -3729,32 +2852,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", @@ -3772,30 +2869,6 @@ "node": ">=8" } }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", @@ -3803,16 +2876,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, "node_modules/perfect-debounce": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz", @@ -3903,29 +2966,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true, - "license": "ISC" - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/rfdc": { "version": "1.4.1", "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz", @@ -3972,13 +3018,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmmirror.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, "node_modules/run-applescript": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.0.0.tgz", @@ -3992,26 +3031,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/seemly": { "version": "0.3.10", "resolved": "https://registry.npmmirror.com/seemly/-/seemly-0.3.10.tgz", @@ -4051,13 +3070,6 @@ "node": ">=8" } }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", @@ -4104,124 +3116,6 @@ "node": ">=0.10.0" } }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmmirror.com/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "3.9.0", - "resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.9.0.tgz", - "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-final-newline": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz", @@ -4235,26 +3129,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-literal": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-3.0.0.tgz", - "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, "node_modules/superjson": { "version": "2.2.2", "resolved": "https://registry.npmmirror.com/superjson/-/superjson-2.2.2.tgz", @@ -4267,27 +3141,6 @@ "node": ">=16" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, "node_modules/tinyglobby": { "version": "0.2.14", "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.14.tgz", @@ -4305,56 +3158,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/tinyspy/-/tinyspy-4.0.3.tgz", - "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tldts": { - "version": "6.1.86", - "resolved": "https://registry.npmmirror.com/tldts/-/tldts-6.1.86.tgz", - "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.86" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmmirror.com/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", - "dev": true, - "license": "MIT" - }, "node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz", @@ -4365,32 +3168,6 @@ "node": ">=6" } }, - "node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/treemate": { "version": "0.3.11", "resolved": "https://registry.npmmirror.com/treemate/-/treemate-0.3.11.tgz", @@ -4572,29 +3349,6 @@ "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" } }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/vite-plugin-vue-devtools": { "version": "7.7.7", "resolved": "https://registry.npmmirror.com/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.7.7.tgz", @@ -4670,79 +3424,6 @@ "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" } }, - "node_modules/vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/debug": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, "node_modules/vooks": { "version": "0.2.12", "resolved": "https://registry.npmmirror.com/vooks/-/vooks-0.2.12.tgz", @@ -4783,13 +3464,6 @@ } } }, - "node_modules/vue-component-type-helpers": { - "version": "2.2.12", - "resolved": "https://registry.npmmirror.com/vue-component-type-helpers/-/vue-component-type-helpers-2.2.12.tgz", - "integrity": "sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==", - "dev": true, - "license": "MIT" - }, "node_modules/vue-i18n": { "version": "9.14.5", "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.14.5.tgz", @@ -4872,66 +3546,6 @@ "vue": "^3.0.11" } }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", @@ -4948,143 +3562,6 @@ "node": ">= 8" } }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/wsl-utils": { "version": "0.1.0", "resolved": "https://registry.npmmirror.com/wsl-utils/-/wsl-utils-0.1.0.tgz", @@ -5101,23 +3578,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", diff --git a/package.json b/package.json index b3a949c..5c839cf 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "@vicons/ionicons5": "^0.13.0", "axios": "^1.11.0", "ckplayer": "^3.1.2", - "hls.js": "^1.6.7", "naive-ui": "^2.42.0", "pinia": "^3.0.3", "vue": "^3.5.17", @@ -32,4 +31,3 @@ "vue-tsc": "^3.0.3" } } - \ No newline at end of file diff --git a/public/banners/考前须知.png b/public/banners/考前须知.png new file mode 100644 index 0000000..6910f4d Binary files /dev/null and b/public/banners/考前须知.png differ diff --git a/public/ckplayer/LICENSE b/public/ckplayer/LICENSE new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/public/ckplayer/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/public/ckplayer/css/ckplayer.css b/public/ckplayer/css/ckplayer.css new file mode 100644 index 0000000..2c40043 --- /dev/null +++ b/public/ckplayer/css/ckplayer.css @@ -0,0 +1,1609 @@ +.ckplayer-error{ + position: fixed; + z-index: 9999999; + left: 10px; + bottom: 10px; + width: auto; + height: 38px; + line-height: 38px; + padding: 0 .85rem; + background: rgb(0,0,0,.9); + border-radius: .25rem; + color: #FFF; + font-size: 14px; + white-space: nowrap; +} +.ckplayer-ckplayer{ + width: 100%; + height: 100%; + float: left; + background: #000; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main.ck-nocursor{ + cursor: none; +} +.ckplayer-ckplayer-smallwindow{ + position: fixed; + z-index: 9999999; + width: 420px; + max-width: 100%; + height: 266px; + right: 10px; + bottom: 10px; +} +.ckplayer-ckplayer .ck-main{ + width: 100%; + height: 100%; + overflow: hidden; + background: #000; + position: relative; +} +.ckplayer-ckplayer .ck-main .ck-video{ + width: 100%; + height: 100%; + overflow: hidden; + position:absolute; + z-index: 1; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-video video,.ckplayer-ckplayer .ck-main .ck-video canvas{ + width: 100%; + height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-error{ + width: 100%; + height: 80px; + line-height: 35px; + text-align: center; + color: #FFF; + position:absolute; + z-index: 70; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main .ck-logo{ + position:absolute; + right: 20px; + top:20px; + z-index: 400; +} +.ckplayer-ckplayer .ck-main .ck-loading{ + position:absolute; + top:0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + z-index: 80; + width: 80px; + height: 80px; + border-radius: 50%; + background: url(images/loading.png) no-repeat center center; + background-size: 100% 100%; + animation: ck-Circle 1.5s linear infinite; + -webkit-animation: ck-Circle 1.5s linear infinite +} +.ckplayer-ckplayer .ck-main .ck-center-play{ + background: url(images/play.png) no-repeat 70% center; + background-size:60% 60%; + border: 8px solid rgba(255,255,255,.3); + border-radius: 50%; + box-sizing:border-box; + -moz-box-sizing:border-box; /* Firefox */ + -webkit-box-sizing:border-box; /* Safari */ + width: 80px; + height: 80px; + position: absolute; + display: none; + z-index: 90; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + cursor: pointer; + transition: .2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-center-play{ + width: 100px; + height: 100px; +} +.ckplayer-ckplayer .ck-main .ck-center-play:hover{ + width: 100px; + height: 100px; + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-center-play:hover{ + width: 120px; + height: 120px; +} +.ckplayer-ckplayer .ck-main .ck-buffer{ + background: url(images/buffer.png) no-repeat center center; + background-size:100% 100%; + border-radius: 50%; + width: 60px; + height: 60px; + position: absolute; + z-index: 100; + top:0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + display: none; + animation: ck-Circle 1s linear infinite; + -webkit-animation: ck-Circle 1s linear infinite +} +.ckplayer-ckplayer .ck-main .ck-message{ + position: absolute; + z-index: 240; + left:5px; + bottom: 78px; + padding: 0 1rem; + line-height: 30px; + height: 30px; + width: auto; + min-width: 1px; + border-radius: .25rem; + background: rgba(0,0,0,.6); + font-size: 14px; + color: #FFF; + display: none; + white-space:nowrap; +} +.ckplayer-ckplayer .ck-main .ck-message-right{ + left:auto; + right: 5px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-message{ + font-size: 18px; + bottom: 100px; +} +.ckplayer-ckplayer .ck-main .ck-tip{ + width: auto; + height: auto; + position: absolute; + z-index: 230; + display: none; + margin-bottom: 1px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-content{ + width: auto; + height: auto; + white-space: nowrap; + min-width: 1px; + background: rgba(0,0,0,.6); + font-size: 14px; + color: #FFF; + line-height: 32px; + height: 32px; + padding: 0 15px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-content-float-auto{ + border-radius: 5px; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-content-float-left{ + border-radius: 5px; + float: left; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-tip .ck-content{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-triangle{ + width: 0px; + height: 0px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-triangle-auto{ + border-left: 8px solid transparent; + border-top: 8px solid rgba(0, 0, 0,.6); + border-right: 8px solid transparent; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-triangle-left{ + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 8px solid rgba(0, 0, 0,.6); + float: left; + margin-top: 10px; +} +.ckplayer-ckplayer .ck-main .ck-preview{ + position: absolute; + z-index: 210; + width: 100%; + left:0; + bottom: 64px; + overflow: hidden; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-preview{ + bottom: 86px; +} +.ckplayer-ckplayer .ck-main .ck-preview-load-img{ + position: absolute; + z-index: 210; + top:110%; +} +.ckplayer-ckplayer .ck-main .ck-preview .ck-preview-bg{ + position: absolute; + z-index: 1; + top:0; + float: left; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-preview .ck-preview-bg .ck-preview-img{ + background-repeat: no-repeat ; + float: left; +} +.ckplayer-ckplayer .ck-main .ck-preview .ck-preview-frame{ + position: absolute; + z-index: 2; + top:0; + left:-1000px; + border:4px solid #0078ff; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} +.ckplayer-ckplayer .ck-main .ck-prompt-words{ + position: absolute; + z-index: 220; + width: 213px; + line-height: 23px; + font-size: 14px; + color: #FFF; + background: rgba(0, 0, 0,.6); + overflow: hidden; + display: none; + margin-bottom: 10px; + border-radius: 3px; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .2s; + animation-duration: .2s; + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} +.ckplayer-ckplayer .ck-main .ck-prompt-words .ck-prompt-content{ + padding: 5px; +} +.ckplayer-ckplayer .ck-main .ck-layer{ + position: absolute; + z-index: 101; +} +.ckplayer-ckplayer .ck-main .ck-tempTime{ + position: absolute; + z-index: 20; + left:10px; + bottom: 5px; + display: none; + font-size: 14px; + line-height: 28px; + color: #FFF; +} +/*关于*/ +.ckplayer-ckplayer .ck-main .ck-about{ + position: absolute; + z-index: 200; + width: 50%; + max-width: 600px; + min-width: 400px; + left: 1rem; + top: 1rem; + background: rgba(0,0,0,.6); + padding: 1rem 0; + display: none; +} +.ckplayer-ckplayer .ck-main .ck-about ul{ + padding: 0; + margin: 0; +} +.ckplayer-ckplayer .ck-main .ck-about ul li{ + list-style:none; + color: #FFF; + font-size: 12px; + line-height: 18px; + height: 18px; + padding: 0; + margin: 0; +} +.ckplayer-ckplayer .ck-main .ck-about ul li .ck-about-title{ + width: 100px; + text-align: right; + float: left; + padding-right: .5rem; +} +.ckplayer-ckplayer .ck-main .ck-about ul li .ck-about-content{ + width: auto; + float: left; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar{ + position: absolute; + z-index: 1; + top: 0; + right: 0; + width: 96px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar{ + width: 140px; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-copy{ + background-position:-1632px 0; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-copy:hover{ + background-position:-1680px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-copy{ + background-position:-2380px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-copy:hover{ + background-position:-2450px 0; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-close{ + background-position:-1728px 0; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-close:hover{ + background-position:-1776px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-close{ + background-position:-2520px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-close:hover{ + background-position:-2590px 0; +} +/*截图显示容器*/ +.ckplayer-ckplayer .ck-main .ck-screenshot{ + position: absolute; + z-index: 220; + width: auto; + height: 144px; + margin: auto !important; + top: 0; + bottom: 0; + right: 55px; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-screenshot{ + height: 210px; + right: 77px; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-img{ + position: absolute; + z-index: 1; + width: 100%; + height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-img img{ + height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar{ + position: absolute; + z-index: 1; + width: 100%; + height: 36px; + bottom: 5px; + text-align: center; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-btn{ + display: inline-block; + overflow: hidden; + border: 0px solid transparent; + border-radius: 5px; + vertical-align: middle; + text-align: center; + text-decoration: none; + white-space: nowrap; + font-size: 14px; + line-height: 30px; + padding: 0px 15px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #fff; + margin: 0 5px; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-btn:hover{ + color: #FFFF00; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-btn:focus{ + outline:0; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-down{ + background-color: #007bff; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-close{ + background-color: #505050; + color: #fff; +} +/*广告*/ +.ckplayer-ckplayer .ck-main .ck-yytf{ + position: absolute; + z-index: 800; + width: 100%; + height: 100%; + left: 0px; + top: 0px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-front-link{ + width: 100%; + height: 100%; + display: none; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-front-picture{ + width: 100%; + height: 100%; + background: #000; + display: none; + text-align: center; + line-height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-front-picture img{ + max-width: 100%; + max-height: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top{ + position: absolute; + z-index: 3; + top: 10px; + right: 10px; +} + +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top div{ + float: right; + margin-left: 10px; + font-size: 14px; + border-radius: 15px; + background: rgba(0,0,0,.6); + padding: 0px 10px; + line-height: 30px; + height: 30px; + color: #FFF; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-top div{ + font-size: 18px; + border-radius: 20px; + line-height: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top .ck-yytf-closetime{ + display: none; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top .ck-yytf-closead{ + cursor: pointer; + display: none; +} + +/*显示广告时的底部内容*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom{ + position: absolute; + z-index: 3; + bottom: 10px; + right: 10px; +} +/*显示广告时的底部按钮-共用*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-btn{ + background-color: rgba(0,0,0,.6); + background-image: url(images/ckplayer.png); + background-size: auto 100%; + border: none; + outline: none; + width: 30px; + height: 30px; + cursor: pointer; + background-repeat: no-repeat; + border-radius: 50%; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-btn{ + width: 40px; + height: 40px; +} +/*显示广告时的静音按钮*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit{ + float: right; + width: 30px; + height: 30px; + margin-left: 10px; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit{ + width: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted{ + background-position:-180px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted:hover{ + background-position:-210px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted{ + background-position:-240px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted:hover{ + background-position:-270px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted{ + background-position:-240px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted:hover{ + background-position:-280px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted{ + background-position:-320px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted:hover{ + background-position:-360px 0; +} +/*显示广告时的全屏按钮*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit{ + float: right; + width: 30px; + height: 30px; + margin-left: 10px; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit{ + width: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full{ + background-position:-300px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full:hover{ + background-position:-330px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull{ + background-position:-360px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull:hover{ + background-position:-390px 0; +} + +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full{ + background-position:-400px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full:hover{ + background-position:-440px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull{ + background-position:-480px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull:hover{ + background-position:-520px 0; +} +/*广告查看详情按钮*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-details{ + float: right; + font-size: 14px; + border-radius: 15px; + background: rgba(0,0,0,.6); + padding: 0 10px; + color: #FFF; + line-height: 30px; + height: 30px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-details{ + font-size: 18px; + border-radius: 20px; + line-height: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-details a{ + color: #FFF; + text-decoration: none; +} +/*暂停广告容器*/ +.ckplayer-ckplayer .ck-main .ck-pause-yytf{ + display: none; + position:absolute; + z-index: 800; + max-width: 100%; + max-height: 100%; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-pause-yytf img{ + max-width: 100%; + max-height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-pause-close{ + position:absolute; + z-index: 1; + right: -15px; + top:-15px; + width: 30px; + height: 30px; + background-color: transparent; + background-image: url(images/adclose.png); + border: none; + outline: none; + cursor: pointer; + background-repeat: no-repeat ; +} +.ckplayer-ckplayer .ck-main .ck-pause-close:hover{ + background-position:-30px 0; +} +/*右键菜单*/ +.ckplayer-ckplayer-menu{ + width:120px; + background: rgba(50,50,50,.6); + position: absolute; + z-index: 9000; + font-size:14px ; + border: 1px #000 solid; + display: none; +} +.ckplayer-ckplayer-menu .ck-li{ + color: #adadad; + line-height: 35px; + padding: 0 0 0 5px; +} +.ckplayer-ckplayer-menu .ck-li a{ + color: #FFF; + text-decoration: none; +} +.ckplayer-ckplayer-menu .ck-underline{ + border-bottom: 1px #000 solid; +} +/*控制栏*/ +.ckplayer-ckplayer .ck-main .ck-bar{ + position:absolute; + z-index: 260; + left:0px; + bottom:0px; + width: 100%; + height: 48px; + background: rgba(0,0,0,.3); + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar{ + height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar.ck-bar-out{ + bottom: -50px; + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar.ck-bar-out{ + bottom: -80px; + transition: 0.2s; +} + +/*按钮公用样式*/ +.ckplayer-ckplayer .ck-main .ck-bar-btn{ + background-color: transparent; + background-image: url(images/ckplayer.48.png); + background-size: auto 100%; + border: none; + outline: none; + width: 48px; + height: 48px; + cursor: pointer; + background-repeat: no-repeat ; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar-btn{ + background-image: url(images/ckplayer.png); + width: 70px; + height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-btn:hover{ + background-size:auto 100%; +} + +/*播放暂停按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-play{ + background-position:0px top; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-play:hover{ + background-position:-48px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-play:hover{ + background-position:-70px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-pause{ + background-position:-96px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-pause{ + background-position:-140px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-pause:hover{ + background-position:-144px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-pause:hover{ + background-position:-210px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-refresh{ + background-position:-192px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-refresh{ + background-position:-280px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-refresh:hover{ + background-position:-240px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-refresh:hover{ + background-position:-350px 0; +} + +/*返回播放按钮*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-btn-backlive{ + float: left; + font-size: 16px; + line-height: 28px; + border-radius: 3px; + margin: 10px; + border: 0px; + background: rgba(3,60,146,.5); + color: #FFF; + cursor: pointer; + padding: 0 8px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-btn-backlive{ + font-size: 18px; + line-height: 36px; + margin: 17px 10px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-btn-backlive:hover{ + background: rgba(3,60,146,.9); +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-btn-backlive:focus{ + outline:0; + background: rgba(3,60,146,.6); +} +/*静音取消静音按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-muted{ + background-position:-288px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-muted{ + background-position:-420px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-muted:hover{ + background-position:-336px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-muted:hover{ + background-position:-490px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-exitmuted{ + background-position:-384px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-exitmuted{ + background-position:-560px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-exitmuted:hover{ + background-position:-432px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-exitmuted:hover{ + background-position:-630px 0; +} + +/*全屏按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit{ + float: right; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-full{ + background-position:-480px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-full{ + background-position:-700px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-full:hover{ + background-position:-528px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-full:hover{ + background-position:-770px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-exitfull{ + background-position:-672px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-exitfull{ + background-position:-840px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-exitfull:hover{ + background-position:-720px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-exitfull:hover{ + background-position:-910px 0; +} + +/*网页全屏按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit{ + float: right; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-webfull{ + background-position:-768px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-webfull{ + background-position:-1120px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-webfull:hover{ + background-position:-816px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-webfull:hover{ + background-position:-1190px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull{ + background-position:-864px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull{ + background-position:-1260px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull:hover{ + background-position:-912px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull:hover{ + background-position:-1330px 0; +} + +/*剧场模式按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit{ + float: right; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-theatre{ + background-position:-960px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-theatre{ + background-position:-1400px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-theatre:hover{ + background-position:-1008px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-theatre:hover{ + background-position:-1470px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre{ + background-position:-1056px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre{ + background-position:-1540px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre:hover{ + background-position:-1104px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre:hover{ + background-position:-1610px 0; +} +/*播放速度*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box{ + float: right; + height: 48px; + line-height: 48px; + position: relative; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playbackrate-box{ + height: 70px; + line-height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate{ + height: 100%; + padding: 0 10px; + white-space:nowrap; + font-size: 16px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate:hover{ + color: #0368d0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate-bg-box { + width: auto; + height: auto; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box:hover .ck-bar-playbackrate-bg-box { + display: block; +} +/*字幕*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box{ + float: right; + height: 48px; + line-height: 48px; + position: relative; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-track-box{ + height: 70px; + line-height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box .ck-bar-track{ + height: 100%; + padding: 0 10px; + white-space:nowrap; + font-size: 16px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-track-box .ck-bar-track{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box .ck-bar-track:hover{ + color: #0368d0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box .ck-bar-track-bg-box { + width: auto; + height: auto; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box:hover .ck-bar-track-bg-box { + display: block; +} +/*清晰度*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box{ + float: right; + height: 48px; + line-height: 48px; + position: relative; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-definition-box{ + height: 70px; + line-height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box .ck-bar-definition{ + height: 100%; + padding: 0 10px; + white-space:nowrap; + font-size: 16px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-definition-box .ck-bar-definition{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box .ck-bar-definition:hover{ + color: #0368d0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box .ck-bar-definition-bg-box { + width: auto; + height: auto; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box:hover .ck-bar-definition-bg-box { + display: block; +} +/*列表切换*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box { + background: rgba(0,0,0,.001); + position: absolute; + z-index: 1; + bottom: 46px; + display: none; + -webkit-animation-duration: .2s; + animation-duration: .2s; + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-list-bg-box { + bottom: 68px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg{ + background: rgba(0,0,0,.6); + float: left; + border-radius: 5px; + padding: 10px; + margin-bottom: 10px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p{ + width: 100%; + float: left; + line-height: 35px; + color: #FFF; + text-align: center; + font-size: 14px; + background-color: rgba(0,0,0,0); + border: 0px; + white-space:nowrap; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p:hover{ + color: #0368d0; + font-size: 16px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p:hover{ + font-size: 20px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p-focus{ + color: #0368d0; +} +/*下一集按钮*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-next{ + float: left; + background-position:-672px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-next{ + background-position:-980px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-next:hover{ + background-position:-720px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-next:hover{ + background-position:-1050px 0; +} +/*进度栏*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress{ + width: 100%; + position:absolute; + z-index: 1; + height: 12px; + top:-11px; + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg{ + width: 100%; + background: rgba(255,255,255,.3); + margin-top: 2px; + overflow: hidden; + height: 10px; + transition: .2s; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-load{ + float: left; + width: 0px; + background: rgba(169,169,169,.7); + height: 10px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-play{ + width: 0px; + background: #0368d0; + position: absolute; + z-index: 1; + height: 10px; + transition: .2s; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-mouseline{ + width: 3px; + background: rgba(255,255,255,.6); + position: absolute; + z-index: 2; + display: none; + height: 10px; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-prompt{ + background: #FFF; + position: absolute; + z-index: 3; + border-radius: 50%; + width: 10px; + height: 10px; + top:2px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-slider{ + border-radius: 50%; + overflow: hidden; + position: relative; + float: left; + z-index: 4; + left: 0px; + cursor: pointer; + width: 12px; + height: 12px; + top: -11px; + background: #FFF; + box-shadow: 0px 0px 0px 4px rgba(255,255,255,.5); +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-slider:hover{ + background: #0368d0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg:hover .ck-bar-progress-mouseline{ + display: block; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out{ + height: 2px; + top:-2px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-bg,.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-load,.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-bg .ck-bar-progress-play{ + height: 2px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-slider{ + width: 12px; + height: 2px; + top: -2px; + box-shadow: 0px 0px 0px 0px rgba(255,255,255,0); + background: rgba(255,255,255,0); + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-bg .ck-bar-progress-prompt{ + height: 2px; + border-radius: 0; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-slider-move .ck-bar-progress-play,.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-slider-move .ck-bar-progress-slider{ + transition: 0s; +} + +/*音量调节栏*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox{ + float: right; + width: 48px; + overflow-x: hidden; +} +/*音量调节栏*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox{ + width: 70px; +} +/*默认状态-音量调节总外框*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume{ + width: 48px; + height: 215px; + background: rgba(0,0,0,.01); + position: absolute; + z-index: 1; + bottom: 46px; + display: none; + overflow: hidden; +} +/*全屏状态-音量调节总外框*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-bar-volume{ + width: 70px; + bottom: 68px; +} +/*默认状态-音量调节总外框-鼠标经过时样式*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox:hover .ck-bar-volume{ + display: block; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .1s; + animation-duration: .1s; + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} +/*共用状态-音量调节内部外框*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volumex{ + width: 100%; + height: 200px; + float: left; + background: rgba(0,0,0,.8); + border-radius: 5px; +} +/*共用状态-音量调节顶部文字*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-txt{ + width: 100%; + height: 40px; + line-height: 40px; + color: #FFF; + text-align: center; + font-size: 1rem; + float: left; + overflow: hidden; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +/*共用状态-音量调节背景色*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-bg{ + width: 8px; + height: 140px; + background: #808080; + border-radius: 3px; + overflow: hidden; + cursor: pointer; + margin: auto; +} +/*共用状态-音量调节前景色*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-bg .ck-bar-volume-pp{ + width: 8px; + height: 140px; + background: #0368d0; + margin-top: 140px; +} +/*共用状态-音量调节拖动小按钮*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-slider{ + width: 10px; + height: 10px; + background: #FFF; + border-radius: 50%; + overflow: hidden; + box-shadow: 0px 0px 0px 8px rgba(255,255,255,.5); + position: absolute; + z-index: 1; + top: 0px; + left: 19px; + cursor: pointer; +} +/*全屏状态-音量调节拖动小按钮*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-slider{ + left: 30px; +} +/*默认状态-显示时间*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-time{ + float: left; + line-height: 48px; + font-size: 16px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +/*全屏状态-显示时间*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-time{ + float: left; + line-height: 70px; + font-size: 18px; + color: #FFF; +} +/*右侧控制栏*/ +.ckplayer-ckplayer .ck-main .ck-right-bar{ + position: absolute; + z-index: 260; + top: 0; + right: 2px; + bottom: 0; + margin: auto !important; + width: 48px; + height: 144px; + background: rgba(0,0,0,.3); + border-radius: 5px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-right-bar-hide{ + right: -48px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar{ + width: 70px; + height: 210px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar-hide{ + right: -70px; + transition: .2s; +} +/*截图按钮*/ +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-btn-screenshot{ + float: left; + background-position:-1536px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-btn-screenshot{ + background-position:-2240px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-btn-screenshot:hover{ + background-position:-1584px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-btn-screenshot:hover{ + background-position:-2310px 0; +} +/*小窗口按钮组*/ +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows button{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open{ + background-position:-1248px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open{ + background-position:-1820px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open:hover{ + background-position:-1296px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open:hover{ + background-position:-1890px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close{ + background-position:-1152px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close{ + background-position:-1680px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close:hover{ + background-position:-1200px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close:hover{ + background-position:-1750px 0; +} +/*循环按钮组*/ +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open{ + background-position:-1440px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open{ + background-position:-2100px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open:hover{ + background-position:-1488px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open:hover{ + background-position:-2170px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close{ + background-position:-1344px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close{ + background-position:-1960px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close:hover{ + background-position:-1392px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close:hover{ + background-position:-2030px 0; +} +/*顶部显示栏*/ +.ckplayer-ckplayer .ck-main .ck-top-bar{ + position: absolute; + z-index: 260; + top: -36px; + width: 100%; + height: 36px; + background: rgba(0,0,0,.3); + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-top-bar-hide{ + top: -36px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-top-bar{ + top: 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-top-bar-hide{ + top: -36px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom{ + position: absolute; + z-index: 260; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container{ + float: left; + margin-left: 10px; + margin-top: 9px; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left{ + float: left; + width: 20px; + height: 18px; + border: 1px solid #FFF; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container:hover .ck-top-bar-zoom-left, +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container.ck-top-bar-zoom-container-focus .ck-top-bar-zoom-left{ + border-color: #0368d0; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container:hover .ck-top-bar-zoom-left div, +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container.ck-top-bar-zoom-container-focus .ck-top-bar-zoom-left div{ + background: #0368d0; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-right{ + float: left; + font-size: 14px; + color: #FFF; + padding-left: 5px; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container:hover .ck-top-bar-zoom-right, +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container.ck-top-bar-zoom-container-focus .ck-top-bar-zoom-right{ + color: #0368d0; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left .ck-top-bar-zoom-button-50{ + width: 50%; + height: 50%; + background: #FFF; + margin: 4.5px 25%; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left .ck-top-bar-zoom-button-75{ + width: 75%; + height: 50%; + background: #FFF; + margin: 4.5px 12.5%; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left .ck-top-bar-zoom-button-100{ + width: 100%; + height: 50%; + background: #FFF; + margin: 4.5px 0; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-title{ + position: absolute; + z-index: 1; + top: 0px; + width: 100%; + height: 36px; + line-height: 36px; + text-align: center; + font-size: 18px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-time{ + float: right; + height: 36px; + line-height: 36px; + font-size: 14px; + color: #FFF; + padding: 0 1rem 0; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +/*以下为缓动效果样式*/ +.ck-animate { + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .3s; + animation-duration: .3s; +} +.ck-animate-bouncein { + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} + +@-webkit-keyframes ck-bounceIn { + 0% { + opacity: 0; + -webkit-transform: scale(.5); + transform: scale(.5) + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes ck-bounceIn { + 0% { + opacity: 0; + -webkit-transform: scale(.5); + -ms-transform: scale(.5); + transform: scale(.5); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + } +} +.ck-animate-bounceout { + -webkit-animation-name: ck-bounceOut; + animation-name: ck-bounceOut; +} + +@-webkit-keyframes ck-bounceOut { + 0% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } + 100% { + opacity: 0; + -webkit-transform: scale(.5); + transform: scale(.5); + } +} + +@keyframes ck-bounceOut { + 0% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } + 100% { + opacity: 0; + -webkit-transform: scale(.5); + transform: scale(.5); + } +} +.ck-animate-circle { + animation: ck-Circle 1s linear infinite; + -webkit-animation: ck-Circle 1s linear infinite +} + +@-webkit-keyframes ck-Circle { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg) + } + 25% { + transform: rotate(90deg); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg) + } + 50% { + transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg) + } + 75% { + transform: rotate(270deg); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg) + } + 100% { + transform: rotate(360deg); + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg) + } +} + +@keyframes ck-Circle { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg) + } + 25% { + transform: rotate(90deg); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg) + } + 50% { + transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg) + } + 75% { + transform: rotate(270deg); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg) + } + 100% { + transform: rotate(360deg); + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg) + } +} \ No newline at end of file diff --git a/public/ckplayer/css/ckplayer.ixigua.css b/public/ckplayer/css/ckplayer.ixigua.css new file mode 100644 index 0000000..31281d6 --- /dev/null +++ b/public/ckplayer/css/ckplayer.ixigua.css @@ -0,0 +1,1707 @@ +.ckplayer-error{ + position: fixed; + z-index: 9999999; + left: 10px; + bottom: 10px; + width: auto; + height: 38px; + line-height: 38px; + padding: 0 .85rem; + background: rgb(0,0,0,.9); + border-radius: .25rem; + color: #FFF; + font-size: 14px; + white-space: nowrap; +} +.ckplayer-ckplayer{ + width: 100%; + height: 100%; + float: left; + background: #000; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main.ck-nocursor{ + cursor: none; +} +.ckplayer-ckplayer-smallwindow{ + position: fixed; + z-index: 9999999; + width: 420px; + max-width: 100%; + height: 266px; + right: 10px; + bottom: 10px; +} +.ckplayer-ckplayer .ck-main{ + width: 100%; + height: 100%; + overflow: hidden; + background: #000; + position: relative; +} +.ckplayer-ckplayer .ck-main .ck-video{ + width: 100%; + height: 100%; + overflow: hidden; + position:absolute; + z-index: 1; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-video video,.ckplayer-ckplayer .ck-main .ck-video canvas{ + width: 100%; + height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-error{ + width: 100%; + height: 80px; + line-height: 35px; + text-align: center; + color: #FFF; + position:absolute; + z-index: 70; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main .ck-logo{ + position:absolute; + right: 20px; + top:20px; + z-index: 400; +} +.ckplayer-ckplayer .ck-main .ck-loading{ + position:absolute; + top:0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + z-index: 80; + width: 80px; + height: 80px; + border-radius: 50%; + background: url(images/loading.png) no-repeat center center; + background-size: 100% 100%; + animation: ck-Circle 1.5s linear infinite; + -webkit-animation: ck-Circle 1.5s linear infinite +} +.ckplayer-ckplayer .ck-main .ck-center-play{ + background: url(images/play.png) no-repeat 70% center; + background-size:60% 60%; + border: 8px solid rgba(255,255,255,.3); + border-radius: 50%; + box-sizing:border-box; + -moz-box-sizing:border-box; /* Firefox */ + -webkit-box-sizing:border-box; /* Safari */ + width: 80px; + height: 80px; + position: absolute; + display: none; + z-index: 90; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + cursor: pointer; + transition: .2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-center-play{ + width: 100px; + height: 100px; +} +.ckplayer-ckplayer .ck-main .ck-center-play:hover{ + width: 100px; + height: 100px; + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-center-play:hover{ + width: 120px; + height: 120px; +} +.ckplayer-ckplayer .ck-main .ck-buffer{ + background: url(images/buffer.png) no-repeat center center; + background-size:100% 100%; + border-radius: 50%; + width: 60px; + height: 60px; + position: absolute; + z-index: 100; + top:0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + display: none; + animation: ck-Circle 1s linear infinite; + -webkit-animation: ck-Circle 1s linear infinite +} +.ckplayer-ckplayer .ck-main .ck-message{ + position: absolute; + z-index: 240; + left:5px; + bottom: 78px; + padding: 0 1rem; + line-height: 30px; + height: 30px; + width: auto; + min-width: 1px; + border-radius: .25rem; + background: rgba(0,0,0,.6); + font-size: 14px; + color: #FFF; + display: none; + white-space:nowrap; +} +.ckplayer-ckplayer .ck-main .ck-message-right{ + left:auto; + right: 5px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-message{ + font-size: 18px; + bottom: 100px; +} +.ckplayer-ckplayer .ck-main .ck-tip{ + width: auto; + height: auto; + position: absolute; + z-index: 230; + display: none; + margin-bottom: 1px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-content{ + width: auto; + height: auto; + white-space: nowrap; + min-width: 1px; + background: rgba(0,0,0,.6); + font-size: 14px; + color: #FFF; + line-height: 32px; + height: 32px; + padding: 0 15px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-content-float-auto{ + border-radius: 5px; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-content-float-left{ + border-radius: 5px; + float: left; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-tip .ck-content{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-triangle{ + width: 0px; + height: 0px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-triangle-auto{ + border-left: 8px solid transparent; + border-top: 8px solid rgba(0, 0, 0,.6); + border-right: 8px solid transparent; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-triangle-left{ + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 8px solid rgba(0, 0, 0,.6); + float: left; + margin-top: 10px; +} +.ckplayer-ckplayer .ck-main .ck-preview{ + position: absolute; + z-index: 210; + width: 100%; + left:0; + bottom: 64px; + overflow: hidden; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-preview{ + bottom: 86px; +} +.ckplayer-ckplayer .ck-main .ck-preview-load-img{ + position: absolute; + z-index: 210; + top:110%; +} +.ckplayer-ckplayer .ck-main .ck-preview .ck-preview-bg{ + position: absolute; + z-index: 1; + top:0; + float: left; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-preview .ck-preview-bg .ck-preview-img{ + background-repeat: no-repeat ; + float: left; +} +.ckplayer-ckplayer .ck-main .ck-preview .ck-preview-frame{ + position: absolute; + z-index: 2; + top:0; + left:-1000px; + border:4px solid #0078ff; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} +.ckplayer-ckplayer .ck-main .ck-prompt-words{ + position: absolute; + z-index: 220; + width: 213px; + line-height: 23px; + font-size: 14px; + color: #FFF; + background: rgba(0, 0, 0,.6); + overflow: hidden; + display: none; + margin-bottom: 10px; + border-radius: 3px; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .2s; + animation-duration: .2s; + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} +.ckplayer-ckplayer .ck-main .ck-prompt-words .ck-prompt-content{ + padding: 5px; +} +.ckplayer-ckplayer .ck-main .ck-layer{ + position: absolute; + z-index: 101; +} +.ckplayer-ckplayer .ck-main .ck-tempTime{ + position: absolute; + z-index: 20; + left:10px; + bottom: 5px; + display: none; + font-size: 14px; + line-height: 28px; + color: #FFF; +} +/*关于*/ +.ckplayer-ckplayer .ck-main .ck-about{ + position: absolute; + z-index: 200; + width: 50%; + max-width: 600px; + min-width: 400px; + left: 1rem; + top: 1rem; + background: rgba(0,0,0,.6); + padding: 1rem 0; + display: none; +} +.ckplayer-ckplayer .ck-main .ck-about ul{ + padding: 0; + margin: 0; +} +.ckplayer-ckplayer .ck-main .ck-about ul li{ + list-style:none; + color: #FFF; + font-size: 12px; + line-height: 18px; + height: 18px; + padding: 0; + margin: 0; +} +.ckplayer-ckplayer .ck-main .ck-about ul li .ck-about-title{ + width: 100px; + text-align: right; + float: left; + padding-right: .5rem; +} +.ckplayer-ckplayer .ck-main .ck-about ul li .ck-about-content{ + width: auto; + float: left; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar{ + position: absolute; + z-index: 1; + top: 0; + right: 0; + width: 96px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar{ + width: 140px; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-copy{ + background-position:-1632px 0; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-copy:hover{ + background-position:-1680px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-copy{ + background-position:-2380px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-copy:hover{ + background-position:-2450px 0; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-close{ + background-position:-1728px 0; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-close:hover{ + background-position:-1776px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-close{ + background-position:-2520px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-close:hover{ + background-position:-2590px 0; +} +/*截图显示容器*/ +.ckplayer-ckplayer .ck-main .ck-screenshot{ + position: absolute; + z-index: 220; + width: auto; + height: 144px; + margin: auto !important; + top: 0; + bottom: 0; + right: 55px; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-screenshot{ + height: 210px; + right: 77px; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-img{ + position: absolute; + z-index: 1; + width: 100%; + height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-img img{ + height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar{ + position: absolute; + z-index: 1; + width: 100%; + height: 36px; + bottom: 5px; + text-align: center; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-btn{ + display: inline-block; + overflow: hidden; + border: 0px solid transparent; + border-radius: 5px; + vertical-align: middle; + text-align: center; + text-decoration: none; + white-space: nowrap; + font-size: 14px; + line-height: 30px; + padding: 0px 15px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #fff; + margin: 0 5px; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-btn:hover{ + color: #FFFF00; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-btn:focus{ + outline:0; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-down{ + background-color: #007bff; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-close{ + background-color: #505050; + color: #fff; +} +/*广告*/ +.ckplayer-ckplayer .ck-main .ck-yytf{ + position: absolute; + z-index: 800; + width: 100%; + height: 100%; + left: 0px; + top: 0px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-front-link{ + width: 100%; + height: 100%; + display: none; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-front-picture{ + width: 100%; + height: 100%; + background: #000; + display: none; + text-align: center; + line-height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-front-picture img{ + max-width: 100%; + max-height: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top{ + position: absolute; + z-index: 3; + top: 10px; + right: 10px; +} + +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top div{ + float: right; + margin-left: 10px; + font-size: 14px; + border-radius: 15px; + background: rgba(0,0,0,.6); + padding: 0px 10px; + line-height: 30px; + height: 30px; + color: #FFF; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-top div{ + font-size: 18px; + border-radius: 20px; + line-height: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top .ck-yytf-closetime{ + display: none; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top .ck-yytf-closead{ + cursor: pointer; + display: none; +} + +/*显示广告时的底部内容*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom{ + position: absolute; + z-index: 3; + bottom: 10px; + right: 10px; +} +/*显示广告时的底部按钮-共用*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-btn{ + background-color: rgba(0,0,0,.6); + background-image: url(images/ckplayer_ixigua.png); + background-size: auto 100%; + border: none; + outline: none; + width: 30px; + height: 30px; + cursor: pointer; + background-repeat: no-repeat; + border-radius: 50%; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-btn{ + width: 40px; + height: 40px; +} +/*显示广告时的静音按钮*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit{ + float: right; + width: 30px; + height: 30px; + margin-left: 10px; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit{ + width: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted{ + background-position:-180px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted:hover{ + background-position:-210px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted{ + background-position:-240px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted:hover{ + background-position:-270px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted{ + background-position:-240px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted:hover{ + background-position:-280px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted{ + background-position:-320px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted:hover{ + background-position:-360px 0; +} +/*显示广告时的全屏按钮*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit{ + float: right; + width: 30px; + height: 30px; + margin-left: 10px; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit{ + width: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full{ + background-position:-300px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full:hover{ + background-position:-330px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull{ + background-position:-360px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull:hover{ + background-position:-390px 0; +} + +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full{ + background-position:-400px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full:hover{ + background-position:-440px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull{ + background-position:-480px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull:hover{ + background-position:-520px 0; +} +/*广告查看详情按钮*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-details{ + float: right; + font-size: 14px; + border-radius: 15px; + background: rgba(0,0,0,.6); + padding: 0 10px; + color: #FFF; + line-height: 30px; + height: 30px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-details{ + font-size: 18px; + border-radius: 20px; + line-height: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-details a{ + color: #FFF; + text-decoration: none; +} +/*暂停广告容器*/ +.ckplayer-ckplayer .ck-main .ck-pause-yytf{ + display: none; + position:absolute; + z-index: 800; + max-width: 100%; + max-height: 100%; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-pause-yytf img{ + max-width: 100%; + max-height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-pause-close{ + position:absolute; + z-index: 1; + right: -15px; + top:-15px; + width: 30px; + height: 30px; + background-color: transparent; + background-image: url(images/adclose.png); + border: none; + outline: none; + cursor: pointer; + background-repeat: no-repeat ; +} +.ckplayer-ckplayer .ck-main .ck-pause-close:hover{ + background-position:-30px 0; +} +/*右键菜单*/ +.ckplayer-ckplayer-menu{ + width:120px; + background: rgba(0,0,0,.8); + position: absolute; + z-index: 9000; + font-size:14px ; + border: 1px #000 solid; + display: none; + border-radius: 5px; +} +.ckplayer-ckplayer-menu .ck-li{ + color: #adadad; + line-height: 35px; + padding: 0 0 0 5px; +} +.ckplayer-ckplayer-menu .ck-li a{ + color: #FFF; + text-decoration: none; +} +.ckplayer-ckplayer-menu .ck-underline{ + border-bottom: 1px #000 solid; +} +/*控制栏*/ +.ckplayer-ckplayer .ck-main .ck-bar{ + position:absolute; + z-index: 260; + left:0px; + bottom:0px; + width: 100%; + height: 48px; + background: rgba(0,0,0,.3); + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar{ + height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar.ck-bar-out{ + bottom: -50px; + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar.ck-bar-out{ + bottom: -80px; + transition: 0.2s; +} + +/*按钮公用样式*/ +.ckplayer-ckplayer .ck-main .ck-bar-btn{ + background-color: transparent; + background-image: url(images/ckplayer_ixigua.48.png); + background-size: auto 100%; + border: none; + outline: none; + width: 48px; + height: 48px; + cursor: pointer; + background-repeat: no-repeat ; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar-btn{ + background-image: url(images/ckplayer_ixigua.png); + width: 70px; + height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-btn:hover{ + background-size:auto 100%; +} + +/*播放暂停按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-play{ + background-position:0px top; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-play:hover{ + background-position:-48px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-play:hover{ + background-position:-70px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-pause{ + background-position:-96px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-pause{ + background-position:-140px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-pause:hover{ + background-position:-144px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-pause:hover{ + background-position:-210px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-refresh{ + background-position:-192px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-refresh{ + background-position:-280px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-refresh:hover{ + background-position:-240px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-refresh:hover{ + background-position:-350px 0; +} + +/*返回播放按钮*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-btn-backlive{ + float: left; + font-size: 16px; + line-height: 28px; + border-radius: 3px; + margin: 10px; + border: 0px; + background: rgba(3,60,146,.5); + color: #FFF; + cursor: pointer; + padding: 0 8px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-btn-backlive{ + font-size: 18px; + line-height: 36px; + margin: 17px 10px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-btn-backlive:hover{ + background: rgba(3,60,146,.9); +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-btn-backlive:focus{ + outline:0; + background: rgba(3,60,146,.6); +} +/*静音取消静音按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-muted{ + background-position:-288px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-muted{ + background-position:-420px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-muted:hover{ + background-position:-336px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-muted:hover{ + background-position:-490px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-exitmuted{ + background-position:-384px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-exitmuted{ + background-position:-560px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-exitmuted:hover{ + background-position:-432px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-exitmuted:hover{ + background-position:-630px 0; +} + +/*全屏按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit{ + float: right; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-full{ + background-position:-480px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-full{ + background-position:-700px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-full:hover{ + background-position:-528px 0; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-name: ck-button-hover; + animation-name: ck-button-hover; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-full:hover{ + background-position:-770px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-exitfull{ + background-position:-672px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-exitfull{ + background-position:-840px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-exitfull:hover{ + background-position:-720px 0; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-name: ck-button-hover; + animation-name: ck-button-hover; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-exitfull:hover{ + background-position:-910px 0; +} + +/*网页全屏按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit{ + float: right; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-webfull{ + background-position:-768px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-webfull{ + background-position:-1120px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-webfull:hover{ + background-position:-816px 0; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-name: ck-button-hover; + animation-name: ck-button-hover; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-webfull:hover{ + background-position:-1190px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull{ + background-position:-864px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull{ + background-position:-1260px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull:hover{ + background-position:-912px 0; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-name: ck-button-hover; + animation-name: ck-button-hover; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull:hover{ + background-position:-1330px 0; +} + +/*剧场模式按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit{ + float: right; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-theatre{ + background-position:-960px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-theatre{ + background-position:-1400px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-theatre:hover{ + background-position:-1008px 0; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-name: ck-button-hover-x; + animation-name: ck-button-hover-x; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-theatre:hover{ + background-position:-1470px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre{ + background-position:-1056px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre{ + background-position:-1540px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre:hover{ + background-position:-1104px 0; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-name: ck-button-hover-x; + animation-name: ck-button-hover-x; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre:hover{ + background-position:-1610px 0; +} +/*播放速度*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box{ + float: right; + height: 48px; + line-height: 48px; + position: relative; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playbackrate-box{ + height: 70px; + line-height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate{ + height: 100%; + padding: 0 10px; + white-space:nowrap; + font-size: 16px; + color: #cfcccc; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate:hover{ + color: #FFF; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate-bg-box { + width: auto; + height: auto; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box:hover .ck-bar-playbackrate-bg-box { + display: block; +} +/*字幕*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box{ + float: right; + height: 48px; + line-height: 48px; + position: relative; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-track-box{ + height: 70px; + line-height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box .ck-bar-track{ + height: 100%; + padding: 0 10px; + white-space:nowrap; + font-size: 16px; + color: #cfcccc; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-track-box .ck-bar-track{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box .ck-bar-track:hover{ + color: #FFF; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box .ck-bar-track-bg-box { + width: auto; + height: auto; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box:hover .ck-bar-track-bg-box { + display: block; +} +/*清晰度*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box{ + float: right; + height: 48px; + line-height: 48px; + position: relative; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-definition-box{ + height: 70px; + line-height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box .ck-bar-definition{ + height: 100%; + padding: 0 10px; + white-space:nowrap; + font-size: 16px; + color: #cfcccc; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-definition-box .ck-bar-definition{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box .ck-bar-definition:hover{ + color: #FFF; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box .ck-bar-definition-bg-box { + width: auto; + height: auto; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box:hover .ck-bar-definition-bg-box { + display: block; +} +/*列表切换*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box { + background: rgba(0,0,0,.001); + position: absolute; + z-index: 1; + bottom: 46px; + display: none; + -webkit-animation-duration: .2s; + animation-duration: .2s; + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-list-bg-box { + bottom: 68px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg{ + background: rgba(0,0,0,.6); + float: left; + border-radius: 5px; + padding: 10px; + margin-bottom: 10px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p{ + width: 100%; + float: left; + line-height: 35px; + color: #cfcccc; + text-align: center; + font-size: 14px; + background-color: rgba(0,0,0,0); + border: 0px; + white-space:nowrap; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p:hover{ + color: #FFF; + font-size: 16px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p:hover{ + font-size: 20px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p-focus{ + color: #FF0302; +} +/*下一集按钮*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-next{ + float: left; + background-position:-672px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-next{ + background-position:-980px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-next:hover{ + background-position:-720px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-next:hover{ + background-position:-1050px 0; +} +/*进度栏*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress{ + width: 100%; + position:absolute; + z-index: 1; + height: 12px; + top:-11px; + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg{ + width: 100%; + background: rgba(255,255,255,.3); + margin-top: 2px; + overflow: hidden; + height: 10px; + transition: .2s; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-load{ + float: left; + width: 0px; + background: rgba(169,169,169,.7); + height: 10px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-play{ + width: 0px; + background: #e80101; + position: absolute; + z-index: 1; + height: 10px; + transition: .2s; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-mouseline{ + width: 3px; + background: rgba(255,255,255,.6); + position: absolute; + z-index: 2; + display: none; + height: 10px; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-prompt{ + background: #FFF; + position: absolute; + z-index: 3; + border-radius: 50%; + width: 10px; + height: 10px; + top:2px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-slider{ + border-radius: 50%; + overflow: hidden; + position: relative; + float: left; + z-index: 4; + left: 0px; + cursor: pointer; + width: 12px; + height: 12px; + top: -11px; + background: #FFF; + box-shadow: 0px 0px 0px 4px rgba(255,255,255,.5); +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-slider:hover{ + background: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg:hover .ck-bar-progress-mouseline{ + display: block; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out{ + height: 2px; + top:-2px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-bg,.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-load,.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-bg .ck-bar-progress-play{ + height: 2px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-slider{ + width: 12px; + height: 2px; + top: -2px; + box-shadow: 0px 0px 0px 0px rgba(255,255,255,0); + background: rgba(232,1,1,0); + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-bg .ck-bar-progress-prompt{ + height: 2px; + border-radius: 0; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-slider-move .ck-bar-progress-play,.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-slider-move .ck-bar-progress-slider{ + transition: 0s; +} + +/*音量调节栏*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox{ + float: right; + width: 48px; + overflow-x: hidden; +} +/*音量调节栏*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox{ + width: 70px; +} +/*默认状态-音量调节总外框*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume{ + width: 48px; + height: 215px; + background: rgba(0,0,0,.01); + position: absolute; + z-index: 1; + bottom: 46px; + display: none; + overflow: hidden; +} +/*全屏状态-音量调节总外框*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-bar-volume{ + width: 70px; + bottom: 68px; +} +/*默认状态-音量调节总外框-鼠标经过时样式*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox:hover .ck-bar-volume{ + display: block; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .1s; + animation-duration: .1s; + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} +/*共用状态-音量调节内部外框*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volumex{ + width: 100%; + height: 200px; + float: left; + background: rgba(0,0,0,.8); + border-radius: 5px; +} +/*共用状态-音量调节顶部文字*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-txt{ + width: 100%; + height: 40px; + line-height: 40px; + color: #FFF; + text-align: center; + font-size: 1rem; + float: left; + overflow: hidden; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +/*共用状态-音量调节背景色*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-bg{ + width: 8px; + height: 140px; + background: #808080; + border-radius: 3px; + overflow: hidden; + cursor: pointer; + margin: auto; +} +/*共用状态-音量调节前景色*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-bg .ck-bar-volume-pp{ + width: 8px; + height: 140px; + background: #e80101; + margin-top: 140px; +} +/*共用状态-音量调节拖动小按钮*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-slider{ + width: 10px; + height: 10px; + background: #FFF; + border-radius: 50%; + overflow: hidden; + box-shadow: 0px 0px 0px 8px rgba(255,255,255,.5); + position: absolute; + z-index: 1; + top: 0px; + left: 19px; + cursor: pointer; +} +/*全屏状态-音量调节拖动小按钮*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-slider{ + left: 30px; +} +/*默认状态-显示时间*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-time{ + float: left; + line-height: 48px; + font-size: 16px; + color: #cfcccc; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +/*全屏状态-显示时间*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-time{ + float: left; + line-height: 70px; + font-size: 18px; + color: #cfcccc; +} +/*右侧控制栏*/ +.ckplayer-ckplayer .ck-main .ck-right-bar{ + position: absolute; + z-index: 260; + top: 0; + right: 2px; + bottom: 0; + margin: auto !important; + width: 48px; + height: 144px; + background: rgba(0,0,0,.3); + border-radius: 5px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-right-bar-hide{ + right: -48px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar{ + width: 70px; + height: 210px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar-hide{ + right: -70px; + transition: .2s; +} +/*截图按钮*/ +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-btn-screenshot{ + float: left; + background-position:-1536px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-btn-screenshot{ + background-position:-2240px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-btn-screenshot:hover{ + background-position:-1584px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-btn-screenshot:hover{ + background-position:-2310px 0; +} +/*小窗口按钮组*/ +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows button{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open{ + background-position:-1248px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open{ + background-position:-1820px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open:hover{ + background-position:-1296px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open:hover{ + background-position:-1890px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close{ + background-position:-1152px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close{ + background-position:-1680px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close:hover{ + background-position:-1200px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close:hover{ + background-position:-1750px 0; +} +/*循环按钮组*/ +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open{ + background-position:-1440px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open{ + background-position:-2100px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open:hover{ + background-position:-1488px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open:hover{ + background-position:-2170px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close{ + background-position:-1344px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close{ + background-position:-1960px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close:hover{ + background-position:-1392px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close:hover{ + background-position:-2030px 0; +} +/*顶部显示栏*/ +.ckplayer-ckplayer .ck-main .ck-top-bar{ + position: absolute; + z-index: 260; + top: -36px; + width: 100%; + height: 36px; + background: rgba(0,0,0,.3); + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-top-bar-hide{ + top: -36px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-top-bar{ + top: 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-top-bar-hide{ + top: -36px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom{ + position: absolute; + z-index: 260; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container{ + float: left; + margin-left: 10px; + margin-top: 9px; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left{ + float: left; + width: 20px; + height: 18px; + border: 1px solid #FFF; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container:hover .ck-top-bar-zoom-left, +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container.ck-top-bar-zoom-container-focus .ck-top-bar-zoom-left{ + border-color: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container:hover .ck-top-bar-zoom-left div, +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container.ck-top-bar-zoom-container-focus .ck-top-bar-zoom-left div{ + background: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-right{ + float: left; + font-size: 14px; + color: #FFF; + padding-left: 5px; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container:hover .ck-top-bar-zoom-right, +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container.ck-top-bar-zoom-container-focus .ck-top-bar-zoom-right{ + color: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left .ck-top-bar-zoom-button-50{ + width: 50%; + height: 50%; + background: #FFF; + margin: 4.5px 25%; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left .ck-top-bar-zoom-button-75{ + width: 75%; + height: 50%; + background: #FFF; + margin: 4.5px 12.5%; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left .ck-top-bar-zoom-button-100{ + width: 100%; + height: 50%; + background: #FFF; + margin: 4.5px 0; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-title{ + position: absolute; + z-index: 1; + top: 0px; + width: 100%; + height: 36px; + line-height: 36px; + text-align: center; + font-size: 18px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-time{ + float: right; + height: 36px; + line-height: 36px; + font-size: 14px; + color: #FFF; + padding: 0 1rem 0; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +/*以下为缓动效果样式*/ +.ck-animate { + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .3s; + animation-duration: .3s; +} +.ck-animate-bouncein { + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} + +@-webkit-keyframes ck-bounceIn { + 0% { + opacity: 0; + -webkit-transform: scale(.5); + transform: scale(.5) + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes ck-bounceIn { + 0% { + opacity: 0; + -webkit-transform: scale(.5); + -ms-transform: scale(.5); + transform: scale(.5); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + } +} +.ck-animate-bounceout { + -webkit-animation-name: ck-bounceOut; + animation-name: ck-bounceOut; +} + +@-webkit-keyframes ck-bounceOut { + 0% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } + 100% { + opacity: 0; + -webkit-transform: scale(.5); + transform: scale(.5); + } +} + +@keyframes ck-bounceOut { + 0% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } + 100% { + opacity: 0; + -webkit-transform: scale(.5); + transform: scale(.5); + } +} + +.ck-animate-circle { + animation: ck-Circle 1s linear infinite; + -webkit-animation: ck-Circle 1s linear infinite +} + +@-webkit-keyframes ck-Circle { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg) + } + 25% { + transform: rotate(90deg); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg) + } + 50% { + transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg) + } + 75% { + transform: rotate(270deg); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg) + } + 100% { + transform: rotate(360deg); + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg) + } +} + +@keyframes ck-Circle { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg) + } + 25% { + transform: rotate(90deg); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg) + } + 50% { + transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg) + } + 75% { + transform: rotate(270deg); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg) + } + 100% { + transform: rotate(360deg); + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg) + } +} + +@-webkit-keyframes ck-button-hover { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + -webkit-transform: scale(1.2); + transform: scale(1.2); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes ck-button-hover { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + -webkit-transform: scale(1.2); + transform: scale(1.2); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@-webkit-keyframes ck-button-hover-x { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + -webkit-transform: scale(1.2,1); + transform: scale(1.2,1); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes ck-button-hover-x { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + -webkit-transform: scale(1.2,1); + transform: scale(1.2,1); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} \ No newline at end of file diff --git a/public/ckplayer/css/ckplayer.red.css b/public/ckplayer/css/ckplayer.red.css new file mode 100644 index 0000000..fc804e3 --- /dev/null +++ b/public/ckplayer/css/ckplayer.red.css @@ -0,0 +1,1609 @@ +.ckplayer-error{ + position: fixed; + z-index: 9999999; + left: 10px; + bottom: 10px; + width: auto; + height: 38px; + line-height: 38px; + padding: 0 .85rem; + background: rgb(0,0,0,.9); + border-radius: .25rem; + color: #FFF; + font-size: 14px; + white-space: nowrap; +} +.ckplayer-ckplayer{ + width: 100%; + height: 100%; + float: left; + background: #000; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main.ck-nocursor{ + cursor: none; +} +.ckplayer-ckplayer-smallwindow{ + position: fixed; + z-index: 9999999; + width: 420px; + max-width: 100%; + height: 266px; + right: 10px; + bottom: 10px; +} +.ckplayer-ckplayer .ck-main{ + width: 100%; + height: 100%; + overflow: hidden; + background: #000; + position: relative; +} +.ckplayer-ckplayer .ck-main .ck-video{ + width: 100%; + height: 100%; + overflow: hidden; + position:absolute; + z-index: 1; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-video video,.ckplayer-ckplayer .ck-main .ck-video canvas{ + width: 100%; + height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-error{ + width: 100%; + height: 80px; + line-height: 35px; + text-align: center; + color: #FFF; + position:absolute; + z-index: 70; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main .ck-logo{ + position:absolute; + right: 20px; + top:20px; + z-index: 400; +} +.ckplayer-ckplayer .ck-main .ck-loading{ + position:absolute; + top:0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + z-index: 80; + width: 80px; + height: 80px; + border-radius: 50%; + background: url(images/loading.png) no-repeat center center; + background-size: 100% 100%; + animation: ck-Circle 1.5s linear infinite; + -webkit-animation: ck-Circle 1.5s linear infinite +} +.ckplayer-ckplayer .ck-main .ck-center-play{ + background: url(images/play.png) no-repeat 70% center; + background-size:60% 60%; + border: 8px solid rgba(255,255,255,.3); + border-radius: 50%; + box-sizing:border-box; + -moz-box-sizing:border-box; /* Firefox */ + -webkit-box-sizing:border-box; /* Safari */ + width: 80px; + height: 80px; + position: absolute; + display: none; + z-index: 90; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + cursor: pointer; + transition: .2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-center-play{ + width: 100px; + height: 100px; +} +.ckplayer-ckplayer .ck-main .ck-center-play:hover{ + width: 100px; + height: 100px; + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-center-play:hover{ + width: 120px; + height: 120px; +} +.ckplayer-ckplayer .ck-main .ck-buffer{ + background: url(images/buffer.png) no-repeat center center; + background-size:100% 100%; + border-radius: 50%; + width: 60px; + height: 60px; + position: absolute; + z-index: 100; + top:0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + display: none; + animation: ck-Circle 1s linear infinite; + -webkit-animation: ck-Circle 1s linear infinite +} +.ckplayer-ckplayer .ck-main .ck-message{ + position: absolute; + z-index: 240; + left:5px; + bottom: 78px; + padding: 0 1rem; + line-height: 30px; + height: 30px; + width: auto; + min-width: 1px; + border-radius: .25rem; + background: rgba(0,0,0,.6); + font-size: 14px; + color: #FFF; + display: none; + white-space:nowrap; +} +.ckplayer-ckplayer .ck-main .ck-message-right{ + left:auto; + right: 5px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-message{ + font-size: 18px; + bottom: 100px; +} +.ckplayer-ckplayer .ck-main .ck-tip{ + width: auto; + height: auto; + position: absolute; + z-index: 230; + display: none; + margin-bottom: 1px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-content{ + width: auto; + height: auto; + white-space: nowrap; + min-width: 1px; + background: rgba(0,0,0,.6); + font-size: 14px; + color: #FFF; + line-height: 32px; + height: 32px; + padding: 0 15px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-content-float-auto{ + border-radius: 5px; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-content-float-left{ + border-radius: 5px; + float: left; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-tip .ck-content{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-triangle{ + width: 0px; + height: 0px; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-triangle-auto{ + border-left: 8px solid transparent; + border-top: 8px solid rgba(0, 0, 0,.6); + border-right: 8px solid transparent; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-tip .ck-triangle-left{ + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 8px solid rgba(0, 0, 0,.6); + float: left; + margin-top: 10px; +} +.ckplayer-ckplayer .ck-main .ck-preview{ + position: absolute; + z-index: 210; + width: 100%; + left:0; + bottom: 64px; + overflow: hidden; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-preview{ + bottom: 86px; +} +.ckplayer-ckplayer .ck-main .ck-preview-load-img{ + position: absolute; + z-index: 210; + top:110%; +} +.ckplayer-ckplayer .ck-main .ck-preview .ck-preview-bg{ + position: absolute; + z-index: 1; + top:0; + float: left; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-preview .ck-preview-bg .ck-preview-img{ + background-repeat: no-repeat ; + float: left; +} +.ckplayer-ckplayer .ck-main .ck-preview .ck-preview-frame{ + position: absolute; + z-index: 2; + top:0; + left:-1000px; + border:4px solid #0078ff; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} +.ckplayer-ckplayer .ck-main .ck-prompt-words{ + position: absolute; + z-index: 220; + width: 213px; + line-height: 23px; + font-size: 14px; + color: #FFF; + background: rgba(0, 0, 0,.6); + overflow: hidden; + display: none; + margin-bottom: 10px; + border-radius: 3px; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .2s; + animation-duration: .2s; + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} +.ckplayer-ckplayer .ck-main .ck-prompt-words .ck-prompt-content{ + padding: 5px; +} +.ckplayer-ckplayer .ck-main .ck-layer{ + position: absolute; + z-index: 101; +} +.ckplayer-ckplayer .ck-main .ck-tempTime{ + position: absolute; + z-index: 20; + left:10px; + bottom: 5px; + display: none; + font-size: 14px; + line-height: 28px; + color: #FFF; +} +/*关于*/ +.ckplayer-ckplayer .ck-main .ck-about{ + position: absolute; + z-index: 200; + width: 50%; + max-width: 600px; + min-width: 400px; + left: 1rem; + top: 1rem; + background: rgba(0,0,0,.6); + padding: 1rem 0; + display: none; +} +.ckplayer-ckplayer .ck-main .ck-about ul{ + padding: 0; + margin: 0; +} +.ckplayer-ckplayer .ck-main .ck-about ul li{ + list-style:none; + color: #FFF; + font-size: 12px; + line-height: 18px; + height: 18px; + padding: 0; + margin: 0; +} +.ckplayer-ckplayer .ck-main .ck-about ul li .ck-about-title{ + width: 100px; + text-align: right; + float: left; + padding-right: .5rem; +} +.ckplayer-ckplayer .ck-main .ck-about ul li .ck-about-content{ + width: auto; + float: left; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar{ + position: absolute; + z-index: 1; + top: 0; + right: 0; + width: 96px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar{ + width: 140px; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-copy{ + background-position:-1632px 0; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-copy:hover{ + background-position:-1680px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-copy{ + background-position:-2380px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-copy:hover{ + background-position:-2450px 0; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-close{ + background-position:-1728px 0; +} +.ckplayer-ckplayer .ck-main .ck-about .ck-about-bar .ck-btn-about-close:hover{ + background-position:-1776px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-close{ + background-position:-2520px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-about .ck-about-bar .ck-btn-about-close:hover{ + background-position:-2590px 0; +} +/*截图显示容器*/ +.ckplayer-ckplayer .ck-main .ck-screenshot{ + position: absolute; + z-index: 220; + width: auto; + height: 144px; + margin: auto !important; + top: 0; + bottom: 0; + right: 55px; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-screenshot{ + height: 210px; + right: 77px; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-img{ + position: absolute; + z-index: 1; + width: 100%; + height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-img img{ + height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar{ + position: absolute; + z-index: 1; + width: 100%; + height: 36px; + bottom: 5px; + text-align: center; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-btn{ + display: inline-block; + overflow: hidden; + border: 0px solid transparent; + border-radius: 5px; + vertical-align: middle; + text-align: center; + text-decoration: none; + white-space: nowrap; + font-size: 14px; + line-height: 30px; + padding: 0px 15px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #fff; + margin: 0 5px; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-btn:hover{ + color: #FFFF00; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-btn:focus{ + outline:0; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-down{ + background-color: #007bff; +} +.ckplayer-ckplayer .ck-main .ck-screenshot .ck-screenshot-bar .ck-screenshot-close{ + background-color: #505050; + color: #fff; +} +/*广告*/ +.ckplayer-ckplayer .ck-main .ck-yytf{ + position: absolute; + z-index: 800; + width: 100%; + height: 100%; + left: 0px; + top: 0px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-front-link{ + width: 100%; + height: 100%; + display: none; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-front-picture{ + width: 100%; + height: 100%; + background: #000; + display: none; + text-align: center; + line-height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-front-picture img{ + max-width: 100%; + max-height: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top{ + position: absolute; + z-index: 3; + top: 10px; + right: 10px; +} + +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top div{ + float: right; + margin-left: 10px; + font-size: 14px; + border-radius: 15px; + background: rgba(0,0,0,.6); + padding: 0px 10px; + line-height: 30px; + height: 30px; + color: #FFF; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-top div{ + font-size: 18px; + border-radius: 20px; + line-height: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top .ck-yytf-closetime{ + display: none; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-top .ck-yytf-closead{ + cursor: pointer; + display: none; +} + +/*显示广告时的底部内容*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom{ + position: absolute; + z-index: 3; + bottom: 10px; + right: 10px; +} +/*显示广告时的底部按钮-共用*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-btn{ + background-color: rgba(0,0,0,.6); + background-image: url(images/ckplayer_red.png); + background-size: auto 100%; + border: none; + outline: none; + width: 30px; + height: 30px; + cursor: pointer; + background-repeat: no-repeat; + border-radius: 50%; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-btn{ + width: 40px; + height: 40px; +} +/*显示广告时的静音按钮*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit{ + float: right; + width: 30px; + height: 30px; + margin-left: 10px; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit{ + width: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted{ + background-position:-180px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted:hover{ + background-position:-210px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted{ + background-position:-240px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted:hover{ + background-position:-270px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted{ + background-position:-240px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-muted:hover{ + background-position:-280px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted{ + background-position:-320px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-mutedandexit .ck-yytf-mutedandexit-exitmuted:hover{ + background-position:-360px 0; +} +/*显示广告时的全屏按钮*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit{ + float: right; + width: 30px; + height: 30px; + margin-left: 10px; + overflow: hidden; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit{ + width: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full{ + background-position:-300px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full:hover{ + background-position:-330px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull{ + background-position:-360px 0; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull:hover{ + background-position:-390px 0; +} + +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full{ + background-position:-400px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-full:hover{ + background-position:-440px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull{ + background-position:-480px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-fullandexit .ck-yytf-fullandexit-exitfull:hover{ + background-position:-520px 0; +} +/*广告查看详情按钮*/ +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-details{ + float: right; + font-size: 14px; + border-radius: 15px; + background: rgba(0,0,0,.6); + padding: 0 10px; + color: #FFF; + line-height: 30px; + height: 30px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-yytf .ck-yytf-bottom .ck-yytf-details{ + font-size: 18px; + border-radius: 20px; + line-height: 40px; + height: 40px; +} +.ckplayer-ckplayer .ck-main .ck-yytf .ck-yytf-bottom .ck-yytf-details a{ + color: #FFF; + text-decoration: none; +} +/*暂停广告容器*/ +.ckplayer-ckplayer .ck-main .ck-pause-yytf{ + display: none; + position:absolute; + z-index: 800; + max-width: 100%; + max-height: 100%; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} +.ckplayer-ckplayer .ck-main .ck-pause-yytf img{ + max-width: 100%; + max-height: 100%; +} +.ckplayer-ckplayer .ck-main .ck-pause-close{ + position:absolute; + z-index: 1; + right: -15px; + top:-15px; + width: 30px; + height: 30px; + background-color: transparent; + background-image: url(images/adclose.png); + border: none; + outline: none; + cursor: pointer; + background-repeat: no-repeat ; +} +.ckplayer-ckplayer .ck-main .ck-pause-close:hover{ + background-position:-30px 0; +} +/*右键菜单*/ +.ckplayer-ckplayer-menu{ + width:120px; + background: rgba(50,50,50,.6); + position: absolute; + z-index: 9000; + font-size:14px ; + border: 1px #000 solid; + display: none; +} +.ckplayer-ckplayer-menu .ck-li{ + color: #adadad; + line-height: 35px; + padding: 0 0 0 5px; +} +.ckplayer-ckplayer-menu .ck-li a{ + color: #FFF; + text-decoration: none; +} +.ckplayer-ckplayer-menu .ck-underline{ + border-bottom: 1px #000 solid; +} +/*控制栏*/ +.ckplayer-ckplayer .ck-main .ck-bar{ + position:absolute; + z-index: 260; + left:0px; + bottom:0px; + width: 100%; + height: 48px; + background: rgba(0,0,0,.3); + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar{ + height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar.ck-bar-out{ + bottom: -50px; + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar.ck-bar-out{ + bottom: -80px; + transition: 0.2s; +} + +/*按钮公用样式*/ +.ckplayer-ckplayer .ck-main .ck-bar-btn{ + background-color: transparent; + background-image: url(images/ckplayer_red.48.png); + background-size: auto 100%; + border: none; + outline: none; + width: 48px; + height: 48px; + cursor: pointer; + background-repeat: no-repeat ; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar-btn{ + background-image: url(images/ckplayer_red.png); + width: 70px; + height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-btn:hover{ + background-size:auto 100%; +} + +/*播放暂停按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-play{ + background-position:0px top; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-play:hover{ + background-position:-48px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-play:hover{ + background-position:-70px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-pause{ + background-position:-96px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-pause{ + background-position:-140px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-pause:hover{ + background-position:-144px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-pause:hover{ + background-position:-210px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-refresh{ + background-position:-192px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-refresh{ + background-position:-280px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playandpause .ck-btn-refresh:hover{ + background-position:-240px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playandpause .ck-btn-refresh:hover{ + background-position:-350px 0; +} + +/*返回播放按钮*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-btn-backlive{ + float: left; + font-size: 16px; + line-height: 28px; + border-radius: 3px; + margin: 10px; + border: 0px; + background: rgba(3,60,146,.5); + color: #FFF; + cursor: pointer; + padding: 0 8px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-btn-backlive{ + font-size: 18px; + line-height: 36px; + margin: 17px 10px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-btn-backlive:hover{ + background: rgba(3,60,146,.9); +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-btn-backlive:focus{ + outline:0; + background: rgba(3,60,146,.6); +} +/*静音取消静音按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-muted{ + background-position:-288px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-muted{ + background-position:-420px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-muted:hover{ + background-position:-336px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-muted:hover{ + background-position:-490px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-exitmuted{ + background-position:-384px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-exitmuted{ + background-position:-560px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-btn-exitmuted:hover{ + background-position:-432px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-btn-exitmuted:hover{ + background-position:-630px 0; +} + +/*全屏按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit{ + float: right; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-full{ + background-position:-480px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-full{ + background-position:-700px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-full:hover{ + background-position:-528px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-full:hover{ + background-position:-770px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-exitfull{ + background-position:-672px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-exitfull{ + background-position:-840px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-fullandexit .ck-btn-exitfull:hover{ + background-position:-720px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-fullandexit .ck-btn-exitfull:hover{ + background-position:-910px 0; +} + +/*网页全屏按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit{ + float: right; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-webfull{ + background-position:-768px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-webfull{ + background-position:-1120px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-webfull:hover{ + background-position:-816px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-webfull:hover{ + background-position:-1190px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull{ + background-position:-864px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull{ + background-position:-1260px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull:hover{ + background-position:-912px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-webfullandexit .ck-btn-exitwebfull:hover{ + background-position:-1330px 0; +} + +/*剧场模式按钮组*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit{ + float: right; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-theatre{ + background-position:-960px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-theatre{ + background-position:-1400px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-theatre:hover{ + background-position:-1008px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-theatre:hover{ + background-position:-1470px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre{ + background-position:-1056px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre{ + background-position:-1540px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre:hover{ + background-position:-1104px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-theatreandexit .ck-btn-exittheatre:hover{ + background-position:-1610px 0; +} +/*播放速度*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box{ + float: right; + height: 48px; + line-height: 48px; + position: relative; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playbackrate-box{ + height: 70px; + line-height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate{ + height: 100%; + padding: 0 10px; + white-space:nowrap; + font-size: 16px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate:hover{ + color: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box .ck-bar-playbackrate-bg-box { + width: auto; + height: auto; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-playbackrate-box:hover .ck-bar-playbackrate-bg-box { + display: block; +} +/*字幕*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box{ + float: right; + height: 48px; + line-height: 48px; + position: relative; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-track-box{ + height: 70px; + line-height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box .ck-bar-track{ + height: 100%; + padding: 0 10px; + white-space:nowrap; + font-size: 16px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-track-box .ck-bar-track{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box .ck-bar-track:hover{ + color: #0368d0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box .ck-bar-track-bg-box { + width: auto; + height: auto; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-track-box:hover .ck-bar-track-bg-box { + display: block; +} +/*清晰度*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box{ + float: right; + height: 48px; + line-height: 48px; + position: relative; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-definition-box{ + height: 70px; + line-height: 70px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box .ck-bar-definition{ + height: 100%; + padding: 0 10px; + white-space:nowrap; + font-size: 16px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-definition-box .ck-bar-definition{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box .ck-bar-definition:hover{ + color: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box .ck-bar-definition-bg-box { + width: auto; + height: auto; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-definition-box:hover .ck-bar-definition-bg-box { + display: block; +} +/*列表切换*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box { + background: rgba(0,0,0,.001); + position: absolute; + z-index: 1; + bottom: 46px; + display: none; + -webkit-animation-duration: .2s; + animation-duration: .2s; + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-list-bg-box { + bottom: 68px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg{ + background: rgba(0,0,0,.6); + float: left; + border-radius: 5px; + padding: 10px; + margin-bottom: 10px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p{ + width: 100%; + float: left; + line-height: 35px; + color: #FFF; + text-align: center; + font-size: 14px; + background-color: rgba(0,0,0,0); + border: 0px; + white-space:nowrap; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p:hover{ + color: #e80101; + font-size: 16px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p:hover{ + font-size: 20px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p{ + font-size: 18px; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-list-bg-box .ck-list-bg .ck-list-p-focus{ + color: #FF0302; +} +/*下一集按钮*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-next{ + float: left; + background-position:-672px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-next{ + background-position:-980px 0; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-next:hover{ + background-position:-720px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-next:hover{ + background-position:-1050px 0; +} +/*进度栏*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress{ + width: 100%; + position:absolute; + z-index: 1; + height: 12px; + top:-11px; + transition: 0.2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg{ + width: 100%; + background: rgba(255,255,255,.3); + margin-top: 2px; + overflow: hidden; + height: 10px; + transition: .2s; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-load{ + float: left; + width: 0px; + background: rgba(169,169,169,.7); + height: 10px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-play{ + width: 0px; + background: #e80101; + position: absolute; + z-index: 1; + height: 10px; + transition: .2s; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-mouseline{ + width: 3px; + background: rgba(255,255,255,.6); + position: absolute; + z-index: 2; + display: none; + height: 10px; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg .ck-bar-progress-prompt{ + background: #FFF; + position: absolute; + z-index: 3; + border-radius: 50%; + width: 10px; + height: 10px; + top:2px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-slider{ + border-radius: 50%; + overflow: hidden; + position: relative; + float: left; + z-index: 4; + left: 0px; + cursor: pointer; + width: 12px; + height: 12px; + top: -11px; + background: #FFF; + box-shadow: 0px 0px 0px 4px rgba(255,255,255,.5); +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-slider:hover{ + background: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress .ck-bar-progress-bg:hover .ck-bar-progress-mouseline{ + display: block; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out{ + height: 2px; + top:-2px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-bg,.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-load,.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-bg .ck-bar-progress-play{ + height: 2px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-slider{ + width: 12px; + height: 2px; + top: -2px; + box-shadow: 0px 0px 0px 0px rgba(255,255,255,0); + background: rgba(232,1,1,0); + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-out .ck-bar-progress-bg .ck-bar-progress-prompt{ + height: 2px; + border-radius: 0; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-slider-move .ck-bar-progress-play,.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-progress.ck-bar-progress-slider-move .ck-bar-progress-slider{ + transition: 0s; +} + +/*音量调节栏*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox{ + float: right; + width: 48px; + overflow-x: hidden; +} +/*音量调节栏*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox{ + width: 70px; +} +/*默认状态-音量调节总外框*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume{ + width: 48px; + height: 215px; + background: rgba(0,0,0,.01); + position: absolute; + z-index: 1; + bottom: 46px; + display: none; + overflow: hidden; +} +/*全屏状态-音量调节总外框*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-bar-volume{ + width: 70px; + bottom: 68px; +} +/*默认状态-音量调节总外框-鼠标经过时样式*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox:hover .ck-bar-volume{ + display: block; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .1s; + animation-duration: .1s; + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} +/*共用状态-音量调节内部外框*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volumex{ + width: 100%; + height: 200px; + float: left; + background: rgba(0,0,0,.8); + border-radius: 5px; +} +/*共用状态-音量调节顶部文字*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-txt{ + width: 100%; + height: 40px; + line-height: 40px; + color: #FFF; + text-align: center; + font-size: 1rem; + float: left; + overflow: hidden; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +/*共用状态-音量调节背景色*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-bg{ + width: 8px; + height: 140px; + background: #808080; + border-radius: 3px; + overflow: hidden; + cursor: pointer; + margin: auto; +} +/*共用状态-音量调节前景色*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-bg .ck-bar-volume-pp{ + width: 8px; + height: 140px; + background: #e80101; + margin-top: 140px; +} +/*共用状态-音量调节拖动小按钮*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-slider{ + width: 10px; + height: 10px; + background: #FFF; + border-radius: 50%; + overflow: hidden; + box-shadow: 0px 0px 0px 8px rgba(255,255,255,.5); + position: absolute; + z-index: 1; + top: 0px; + left: 19px; + cursor: pointer; +} +/*全屏状态-音量调节拖动小按钮*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-volumebox .ck-bar-volume .ck-bar-volume-slider{ + left: 30px; +} +/*默认状态-显示时间*/ +.ckplayer-ckplayer .ck-main .ck-bar .ck-bar-time{ + float: left; + line-height: 48px; + font-size: 16px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +/*全屏状态-显示时间*/ +.ckplayer-ckplayer .ck-main.ck-main-full .ck-bar .ck-bar-time{ + float: left; + line-height: 70px; + font-size: 18px; + color: #FFF; +} +/*右侧控制栏*/ +.ckplayer-ckplayer .ck-main .ck-right-bar{ + position: absolute; + z-index: 260; + top: 0; + right: 2px; + bottom: 0; + margin: auto !important; + width: 48px; + height: 144px; + background: rgba(0,0,0,.3); + border-radius: 5px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-right-bar-hide{ + right: -48px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar{ + width: 70px; + height: 210px; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar-hide{ + right: -70px; + transition: .2s; +} +/*截图按钮*/ +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-btn-screenshot{ + float: left; + background-position:-1536px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-btn-screenshot{ + background-position:-2240px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-btn-screenshot:hover{ + background-position:-1584px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-btn-screenshot:hover{ + background-position:-2310px 0; +} +/*小窗口按钮组*/ +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows button{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open{ + background-position:-1248px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open{ + background-position:-1820px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open:hover{ + background-position:-1296px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-open:hover{ + background-position:-1890px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close{ + background-position:-1152px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close{ + background-position:-1680px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close:hover{ + background-position:-1200px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-smallwindows .ck-btn-smallwindows-close:hover{ + background-position:-1750px 0; +} +/*循环按钮组*/ +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop{ + float: left; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open{ + background-position:-1440px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open{ + background-position:-2100px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open:hover{ + background-position:-1488px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-open:hover{ + background-position:-2170px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close{ + background-position:-1344px 0; + display: none; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close{ + background-position:-1960px 0; +} +.ckplayer-ckplayer .ck-main .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close:hover{ + background-position:-1392px 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-right-bar .ck-right-bar-loop .ck-btn-loop-close:hover{ + background-position:-2030px 0; +} +/*顶部显示栏*/ +.ckplayer-ckplayer .ck-main .ck-top-bar{ + position: absolute; + z-index: 260; + top: -36px; + width: 100%; + height: 36px; + background: rgba(0,0,0,.3); + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-top-bar-hide{ + top: -36px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-top-bar{ + top: 0; +} +.ckplayer-ckplayer .ck-main.ck-main-full .ck-top-bar-hide{ + top: -36px; + transition: .2s; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom{ + position: absolute; + z-index: 260; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container{ + float: left; + margin-left: 10px; + margin-top: 9px; + cursor: pointer; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left{ + float: left; + width: 20px; + height: 18px; + border: 1px solid #FFF; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container:hover .ck-top-bar-zoom-left, +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container.ck-top-bar-zoom-container-focus .ck-top-bar-zoom-left{ + border-color: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container:hover .ck-top-bar-zoom-left div, +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container.ck-top-bar-zoom-container-focus .ck-top-bar-zoom-left div{ + background: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-right{ + float: left; + font-size: 14px; + color: #FFF; + padding-left: 5px; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container:hover .ck-top-bar-zoom-right, +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container.ck-top-bar-zoom-container-focus .ck-top-bar-zoom-right{ + color: #e80101; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left .ck-top-bar-zoom-button-50{ + width: 50%; + height: 50%; + background: #FFF; + margin: 4.5px 25%; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left .ck-top-bar-zoom-button-75{ + width: 75%; + height: 50%; + background: #FFF; + margin: 4.5px 12.5%; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-zoom .ck-top-bar-zoom-container .ck-top-bar-zoom-left .ck-top-bar-zoom-button-100{ + width: 100%; + height: 50%; + background: #FFF; + margin: 4.5px 0; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-title{ + position: absolute; + z-index: 1; + top: 0px; + width: 100%; + height: 36px; + line-height: 36px; + text-align: center; + font-size: 18px; + color: #FFF; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +.ckplayer-ckplayer .ck-main .ck-top-bar .ck-top-bar-time{ + float: right; + height: 36px; + line-height: 36px; + font-size: 14px; + color: #FFF; + padding: 0 1rem 0; + -moz-user-select:none; /*火狐*/ + -webkit-user-select:none; /*webkit浏览器*/ + -ms-user-select:none; /*IE10*/ + -khtml-user-select:none; /*早期浏览器*/ + user-select:none; +} +/*以下为缓动效果样式*/ +.ck-animate { + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: .3s; + animation-duration: .3s; +} +.ck-animate-bouncein { + -webkit-animation-name: ck-bounceIn; + animation-name: ck-bounceIn; +} + +@-webkit-keyframes ck-bounceIn { + 0% { + opacity: 0; + -webkit-transform: scale(.5); + transform: scale(.5) + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes ck-bounceIn { + 0% { + opacity: 0; + -webkit-transform: scale(.5); + -ms-transform: scale(.5); + transform: scale(.5); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + } +} +.ck-animate-bounceout { + -webkit-animation-name: ck-bounceOut; + animation-name: ck-bounceOut; +} + +@-webkit-keyframes ck-bounceOut { + 0% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } + 100% { + opacity: 0; + -webkit-transform: scale(.5); + transform: scale(.5); + } +} + +@keyframes ck-bounceOut { + 0% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } + 100% { + opacity: 0; + -webkit-transform: scale(.5); + transform: scale(.5); + } +} +.ck-animate-circle { + animation: ck-Circle 1s linear infinite; + -webkit-animation: ck-Circle 1s linear infinite +} + +@-webkit-keyframes ck-Circle { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg) + } + 25% { + transform: rotate(90deg); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg) + } + 50% { + transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg) + } + 75% { + transform: rotate(270deg); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg) + } + 100% { + transform: rotate(360deg); + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg) + } +} + +@keyframes ck-Circle { + 0% { + transform: rotate(0deg); + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg) + } + 25% { + transform: rotate(90deg); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg) + } + 50% { + transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg) + } + 75% { + transform: rotate(270deg); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg) + } + 100% { + transform: rotate(360deg); + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg) + } +} \ No newline at end of file diff --git a/public/ckplayer/css/images/adclose.png b/public/ckplayer/css/images/adclose.png new file mode 100644 index 0000000..b3c0b7b Binary files /dev/null and b/public/ckplayer/css/images/adclose.png differ diff --git a/public/ckplayer/css/images/buffer.png b/public/ckplayer/css/images/buffer.png new file mode 100644 index 0000000..198d4a1 Binary files /dev/null and b/public/ckplayer/css/images/buffer.png differ diff --git a/public/ckplayer/css/images/ckplayer.48.png b/public/ckplayer/css/images/ckplayer.48.png new file mode 100644 index 0000000..650c117 Binary files /dev/null and b/public/ckplayer/css/images/ckplayer.48.png differ diff --git a/public/ckplayer/css/images/ckplayer.png b/public/ckplayer/css/images/ckplayer.png new file mode 100644 index 0000000..15940cf Binary files /dev/null and b/public/ckplayer/css/images/ckplayer.png differ diff --git a/public/ckplayer/css/images/ckplayer_ixigua.48.png b/public/ckplayer/css/images/ckplayer_ixigua.48.png new file mode 100644 index 0000000..7301e36 Binary files /dev/null and b/public/ckplayer/css/images/ckplayer_ixigua.48.png differ diff --git a/public/ckplayer/css/images/ckplayer_ixigua.png b/public/ckplayer/css/images/ckplayer_ixigua.png new file mode 100644 index 0000000..818c261 Binary files /dev/null and b/public/ckplayer/css/images/ckplayer_ixigua.png differ diff --git a/public/ckplayer/css/images/ckplayer_red.48.png b/public/ckplayer/css/images/ckplayer_red.48.png new file mode 100644 index 0000000..5f226ac Binary files /dev/null and b/public/ckplayer/css/images/ckplayer_red.48.png differ diff --git a/public/ckplayer/css/images/ckplayer_red.png b/public/ckplayer/css/images/ckplayer_red.png new file mode 100644 index 0000000..d872a0a Binary files /dev/null and b/public/ckplayer/css/images/ckplayer_red.png differ diff --git a/public/ckplayer/css/images/loading.png b/public/ckplayer/css/images/loading.png new file mode 100644 index 0000000..fe16ca3 Binary files /dev/null and b/public/ckplayer/css/images/loading.png differ diff --git a/public/ckplayer/css/images/logo.png b/public/ckplayer/css/images/logo.png new file mode 100644 index 0000000..4ca44d2 Binary files /dev/null and b/public/ckplayer/css/images/logo.png differ diff --git a/public/ckplayer/css/images/play.png b/public/ckplayer/css/images/play.png new file mode 100644 index 0000000..f9e111b Binary files /dev/null and b/public/ckplayer/css/images/play.png differ diff --git a/public/ckplayer/flv.js/LICENSE b/public/ckplayer/flv.js/LICENSE new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/public/ckplayer/flv.js/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/public/ckplayer/flv.js/README.md b/public/ckplayer/flv.js/README.md new file mode 100644 index 0000000..7382967 --- /dev/null +++ b/public/ckplayer/flv.js/README.md @@ -0,0 +1,104 @@ + +flv.js [![npm](https://img.shields.io/npm/v/flv.js.svg?style=flat)](https://www.npmjs.com/package/flv.js) +====== +An HTML5 Flash Video (FLV) Player written in pure JavaScript without Flash. LONG LIVE FLV! + +This project relies on [Media Source Extensions][] to work. + +**For FLV live stream playback, please consider [mpegts.js][] which is under active development.** + +**This project will become rarely maintained.** + +[mpegts.js]: https://github.com/xqq/mpegts.js +## Overview +flv.js works by transmuxing FLV file stream into ISO BMFF (Fragmented MP4) segments, followed by feeding mp4 segments into an HTML5 `