diff --git a/components/mip-video-demo/README.md b/components/mip-video-demo/README.md new file mode 100644 index 00000000..424686e4 --- /dev/null +++ b/components/mip-video-demo/README.md @@ -0,0 +1,59 @@ +# mip-video-demo MIP 视频扩展组件 + +目前项目存在如下需求: 视频播放前不展示视频控制控件,需要点击播放按钮播放视频,再展示视频播放控件,并且视频播放结束后,视频需要返回到播放前的位置。这个功能无法通过 mip-video 的现有机制实现,因此需要开发 mip-video-demo 来实现相关功能。 + +标题|内容 +----|---- +类型|通用 +支持布局|responsive,fixed-height,fill,container,fixed +所需脚本| [https://c.mipcdn.com/static/v2/mip-video-demo/mip-video-demo.js](https://c.mipcdn.com/static/v2/mip-video-demo/mip-video-demo.js) + +## 示例 + + +### 基本使用 + +它的基本使用方法如下所示: + +```html + + + +
点击播放
+``` + +## 属性 + +### src + +说明:视频地址 +必选项:是 +类型:字符串 +取值范围:URL +默认值:无 + + +### poster + +说明:封面图地址,为了保证视频载入过程中仍然有很好的呈现效果,请设置该字段 +必选项:否 +类型:字符串 +取值范围:URL +默认值:无 + + +### controls + +说明:是否显示视频控制控件,包括开始/暂停按钮、全屏按钮、音量按钮等 +必选项:否 +类型:字符串 +取值范围:任何 +默认值:无 + + +### back + +说明:视频播放结束后是否返回第一帧 +必选项:否 \ No newline at end of file diff --git a/components/mip-video-demo/example/index.html b/components/mip-video-demo/example/index.html new file mode 100644 index 00000000..aa80a0fb --- /dev/null +++ b/components/mip-video-demo/example/index.html @@ -0,0 +1,21 @@ + + + + + + MIP page + + + + + + + +
点击播放
+ + + + \ No newline at end of file diff --git a/components/mip-video-demo/index.less b/components/mip-video-demo/index.less new file mode 100644 index 00000000..b9240a84 --- /dev/null +++ b/components/mip-video-demo/index.less @@ -0,0 +1,6 @@ +mip-video-demo { + .wrapper { + margin: 0 auto; + text-align: center; + } +} diff --git a/components/mip-video-demo/mip-video-demo.js b/components/mip-video-demo/mip-video-demo.js new file mode 100644 index 00000000..ff6851c4 --- /dev/null +++ b/components/mip-video-demo/mip-video-demo.js @@ -0,0 +1,46 @@ +/** + * @file mip-video-demo + * @author nxl(2779523120@qq.com) + */ +const { + CustomElement +} = MIP + +export default class MIPVideoDemo extends CustomElement { + build () { + let element = document.getElementsByClassName('open')[0] + let element2 = document.getElementById('video') + let src = element2.getAttribute('src') + let t1 = element2.hasAttribute('poster') + // let html = '' + let html = 'src="' + src + '"' + if (t1 === true) { + let poster = element2.getAttribute('poster') + // html = '' + html = 'poster="' + poster + '" src="' + src + '"' + } + + let t2 = element2.hasAttribute('controls') + if (t2 === true) { + // html = '' + html = html + 'controls' + } + // element2.innerHTML = html; + element2.innerHTML = '' + element.addEventListener('click', function () { + element.style.display = 'none' + element2.getElementsByTagName('video')[0].play() + element2.getElementsByTagName('video')[0].setAttribute('controls', 'controls') + }) + let back = element2.hasAttribute('back') + if (back === true) { + element2.getElementsByTagName('video')[0].addEventListener('ended', function () { + element.style.display = 'block' + element2.getElementsByTagName('video')[0].removeAttribute('controls') + let videoSrc = element2.getElementsByTagName('video')[0].currentSrc + element2.getElementsByTagName('video')[0].src = '' + element2.getElementsByTagName('video')[0].src = videoSrc + }) + } + } +}