Слияние кода завершено, страница обновится автоматически
1. git clone https://github.com/snail-boy/snail-player-native.git
2. Копировать файлы из папки lib в свой проект
Просто запустите index.html
.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Заголовок</title>
<style>
#snailPlayId {
width: 800px;
height: 500px;
margin: 0 auto;
}
h1 {
text-align: center;
}
</style>
</head>
<body>
<h1>snail-player</h1>
<div id='snailPlayId'></div>
</body>
<script type="module">
import SnailPlayer from "./lib/index.js";
new SnailPlayer({
el: '#snailPlayId',
src: 'https://webrabbit.oss-cn-beijing.aliyuncs.com/drawingbed/video.mp4',
autoplay: true, // Автоматическое воспроизведение
loop: true // Циклическое воспроизведение
});
</script>
</html>
// Вычисление времени прогресс-бара
progressTime(offsetY) {
return utils.formatSeconds((offsetY / this.progressw * this.playVideo.duration).toFixed(2));
}
```// Формула вычисления прогресс-бара
progressCalculate() {
return (this.progressw / this.playVideo.duration * this.playVideo.currentTime).toFixed(2);
}
```<!-- Полный экран -->
fullScreenFun() {
const docElm = document.documentElement;
if (!this.isFullScreen) {
utils.addClass(this.el, 'fullscreen-active');
utils.addClass(this.playVideo, 'fullscreen-active');
utils.showClass('snail-player-full-screen-icon');
utils.hiddenClass('snail-player-fullscreen-btn');
utils.changeInnerText('fullscreen-icon', 'Выход с полного экрана');
utils.addClass(this.playBottom, 'sn-player-fullscreen-bottom-active');
setTimeout(() => {
if (docElm.requestFullscreen) {
docElm.requestFullscreen();
} else if (docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen();
} else if (document.webkitRequestFullscreen) {
docElm.webkitRequestFullscreen();
}
}, 100);
this.isFullScreen = true;
utils.hiddenClass('snail-player-web-fullscreen-box');
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitCancelFullscreen) {
document.webkitCancelFullscreen();
}
utils.showClass('snail-player-web-fullscreen-box');
utils.removeClass(this.el, 'fullscreen-active');
utils.removeClass(this.playVideo, 'fullscreen-active');
utils.hiddenClass('snail-player-full-screen-icon');
utils.showClass('snail-player-fullscreen-btn');
utils.changeInnerText('fullscreen-icon', 'Перейти в полноэкранный режим');
utils.removeClass(this.playBottom, 'sn-player-fullscreen-bottom-active');
this.isFullScreen = false;
}
}
// Загрузка CSS
renderCss(url) {
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.href = url;
head.appendChild(link);
}
// Загрузка favicon
renderIcon(url) {
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.type = 'type="image/x-icon"';
link.rel = 'shortcut icon';
link.href = url;
head.appendChild(link);
}
```<h3>Утилиты</h3>
```js
class Utils {
hasClass(ele, cls) {
return !!ele.className.match(new RegExp('(\s|^)' + cls + '(\s|$)'));
}
addClass(ele, cls) {
if (!this.hasClass(ele, cls)) ele.className += ' ' + cls;
}
removeClass(ele, cls) {
if (this.hasClass(ele, cls)) {
const reg = new RegExp('(\s|^)' + cls + '(\s|$)');
ele.className = ele.className.replace(reg, '');
}
}
set(key, value) {
localStorage.setItem(key, value);
}
get(key) {
return localStorage.getItem(key);
}
showClass(cls) {
cls ? document.getElementsByClassName(cls)[0].style.display = 'block' : new Error('Введите имя класса');
}
hideClass(cls) {
cls ? document.getElementsByClassName(cls)[0].style.display = 'none' : new Error('Введите имя класса');
}
changeInnerText(cls, text) {
document.getElementsByClassName(cls)[0].innerHTML = text;
}
clickFu(to, cls) {
// Функция обратного вызова, to — объект клика
to.setAttribute("class", cls);
const siblings = to.parentNode.childNodes;
for (let i = 0; i < siblings.length; i++)
if (siblings[i].nodeType === 1 && siblings[i] !== to) siblings[i].className = '';
}
formatSeconds(value) {
if (!value) return '00:00';
value = parseInt(value);
let time;
if (value > -1) {
let hour = Math.floor(value / 3600);
let min = Math.floor(value / 60) % 60;
let sec = value % 60;
let day = parseInt(hour / 24);
if (day > 0) {
hour = hour - 24 * day;
time = day + ' дней ' + hour + ':';
} else if (hour > 0) {
time = hour + ':';
} else {
time = '';
}
if (min < 10) {
time += '0';
}
time += min + ':';
if (sec < 10) {
time += '0';
}
time += sec;
}
return time;
}
}
``````markdown
## Класс Utils
```javascript
class Utils {
static getClassElement(cls) {
return cls && document.getElementsByClassName(cls)[0];
}
}
export default Utils;
## Операционная среда
Поддерживает все браузеры, поддерживающие ES6.
Рекомендуется использовать Google Chrome.
## Исходный код доступен, присоединяйтесь!
[GitHub адрес](https://github.com/snail-boy/snail-player-native)
[Gitee адрес](https://gitee.com/snailwebboy/snail-player-native)
## Оставьте свои отзывы и предложения
[Issues](https://github.com/snail-boy/snail-player-native/issues)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )