danmaku display algorithms; setting box; comment button

This commit is contained in:
DIYgod 2016-05-11 01:29:32 +08:00
parent 0eb803efbd
commit 9220e7b1b6
No known key found for this signature in database
GPG Key ID: F8797DD1088C6506
7 changed files with 206 additions and 139 deletions

View File

@ -1,53 +1,53 @@
{
"danmaku": [
{
"author": "DIYgod",
"time": "2.8",
"text": "此生无悔入",
"color": "#f00",
"type": "right"
},
{
"author": "DIYgod",
"time": "1.6",
"text": "此生无悔入四月来世愿做友人A",
"color": "#ff0",
"type": "right"
},
{
"author": "DIYgod",
"time": "0.4",
"text": "比♂利比♂利爱1",
"text": "此生无悔入四月来世",
"color": "#f00",
"type": "right"
},
{
"author": "DIYgod",
"time": "0.8",
"text": "比♂利比♂利比♂利爱1.2",
"text": "此生无悔入四月来世愿做友人A此生无悔入四月来世愿做",
"color": "#0f0",
"type": "right"
},
{
"author": "DIYgod",
"time": "1.2",
"text": "比♂利比♂利爱1.4比♂利比♂利爱1.4比♂利比♂利爱1.4比♂利比♂利爱1.4比♂利比♂利爱1.4比♂利比♂利爱1.4",
"text": "此生无悔入四月来世愿做友人",
"color": "#00f",
"type": "right"
},
{
"author": "DIYgod",
"time": "1.6",
"text": "比♂利比♂利爱1.6",
"color": "#ff0",
"type": "right"
},
{
"author": "DIYgod",
"time": "2.0",
"text": "比♂利比♂利比♂利爱1.8",
"text": "此生无悔入四月来世愿做友人A",
"color": "#f0f",
"type": "right"
},
{
"author": "DIYgod",
"time": "2.4",
"text": "比♂利比♂利比♂利爱2",
"text": "此生无悔入四月来世愿做友人A",
"color": "#0ff",
"type": "right"
},
{
"author": "DIYgod",
"time": "2.8",
"text": "比♂利比♂利爱2.2",
"color": "#f00",
"type": "right"
}
]
}

View File

@ -61,8 +61,8 @@
autoplay: false,
theme: '#FADFA3',
video: {
url: 'http://o6m1pq7od.bkt.clouddn.com/禁绝的边境线.mp4',
pic: 'http://o6m1pq7od.bkt.clouddn.com/禁绝的边境线.jpg'
url: 'http://o6m1pq7od.bkt.clouddn.com/最后的告白.mp4',
pic: 'http://o6m1pq7od.bkt.clouddn.com/poster.jpg'
},
danmaku: {
get: 'danmaku.json'

File diff suppressed because one or more lines are too long

2
dist/DPlayer.min.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -17,7 +17,8 @@
'loop': ['0 0 32 32', 'M1.882 16.941c0 4.152 3.221 7.529 7.177 7.529v1.882c-4.996 0-9.060-4.222-9.060-9.412s4.064-9.412 9.060-9.412h7.96l-3.098-3.098 1.331-1.331 5.372 5.37-5.37 5.372-1.333-1.333 3.1-3.098h-7.962c-3.957 0-7.177 3.377-7.177 7.529zM22.94 7.529v1.882c3.957 0 7.177 3.377 7.177 7.529s-3.221 7.529-7.177 7.529h-7.962l3.098-3.098-1.331-1.331-5.37 5.37 5.372 5.372 1.331-1.331-3.1-3.1h7.96c4.998 0 9.062-4.222 9.062-9.412s-4.064-9.412-9.060-9.412z'],
'full': ['0 0 32 33', 'M6.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v4h4c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333zM30.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h4v-4c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM30.667 12c-0.8 0-1.333-0.533-1.333-1.333v-4h-4c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM1.333 12c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333h-4v4c0 0.8-0.533 1.333-1.333 1.333z'],
'setting': ['0 0 32 29', 'M28.633 17.104c0.035 0.21 0.026 0.463-0.026 0.76s-0.14 0.598-0.262 0.904c-0.122 0.306-0.271 0.581-0.445 0.825s-0.367 0.419-0.576 0.524c-0.209 0.105-0.393 0.157-0.55 0.157s-0.332-0.035-0.524-0.105c-0.175-0.052-0.393-0.1-0.655-0.144s-0.528-0.052-0.799-0.026c-0.271 0.026-0.541 0.083-0.812 0.17s-0.502 0.236-0.694 0.445c-0.419 0.437-0.664 0.934-0.734 1.493s0.009 1.092 0.236 1.598c0.175 0.349 0.148 0.699-0.079 1.048-0.105 0.14-0.271 0.284-0.498 0.432s-0.476 0.284-0.747 0.406-0.555 0.218-0.851 0.288c-0.297 0.070-0.559 0.105-0.786 0.105-0.157 0-0.306-0.061-0.445-0.183s-0.236-0.253-0.288-0.393h-0.026c-0.192-0.541-0.52-1.009-0.982-1.402s-1-0.589-1.611-0.589c-0.594 0-1.131 0.197-1.611 0.589s-0.816 0.851-1.009 1.375c-0.087 0.21-0.218 0.362-0.393 0.458s-0.367 0.144-0.576 0.144c-0.244 0-0.52-0.044-0.825-0.131s-0.611-0.197-0.917-0.327c-0.306-0.131-0.581-0.284-0.825-0.458s-0.428-0.349-0.55-0.524c-0.087-0.122-0.135-0.266-0.144-0.432s0.057-0.397 0.197-0.694c0.192-0.402 0.266-0.86 0.223-1.375s-0.266-0.991-0.668-1.428c-0.244-0.262-0.541-0.432-0.891-0.511s-0.681-0.109-0.995-0.092c-0.367 0.017-0.742 0.087-1.127 0.21-0.244 0.070-0.489 0.052-0.734-0.052-0.192-0.070-0.371-0.231-0.537-0.485s-0.314-0.533-0.445-0.838c-0.131-0.306-0.231-0.62-0.301-0.943s-0.087-0.59-0.052-0.799c0.052-0.384 0.227-0.629 0.524-0.734 0.524-0.21 0.995-0.555 1.415-1.035s0.629-1.017 0.629-1.611c0-0.611-0.21-1.144-0.629-1.598s-0.891-0.786-1.415-0.996c-0.157-0.052-0.288-0.179-0.393-0.38s-0.157-0.406-0.157-0.616c0-0.227 0.035-0.48 0.105-0.76s0.162-0.55 0.275-0.812 0.244-0.502 0.393-0.72c0.148-0.218 0.31-0.38 0.485-0.485 0.14-0.087 0.275-0.122 0.406-0.105s0.275 0.052 0.432 0.105c0.524 0.21 1.070 0.275 1.637 0.197s1.070-0.327 1.506-0.747c0.21-0.209 0.362-0.467 0.458-0.773s0.157-0.607 0.183-0.904c0.026-0.297 0.026-0.568 0-0.812s-0.048-0.419-0.065-0.524c-0.035-0.105-0.066-0.227-0.092-0.367s-0.013-0.262 0.039-0.367c0.105-0.244 0.293-0.458 0.563-0.642s0.563-0.336 0.878-0.458c0.314-0.122 0.62-0.214 0.917-0.275s0.533-0.092 0.707-0.092c0.227 0 0.406 0.074 0.537 0.223s0.223 0.301 0.275 0.458c0.192 0.471 0.507 0.886 0.943 1.244s0.952 0.537 1.546 0.537c0.611 0 1.153-0.17 1.624-0.511s0.803-0.773 0.996-1.297c0.070-0.14 0.179-0.284 0.327-0.432s0.301-0.223 0.458-0.223c0.244 0 0.511 0.035 0.799 0.105s0.572 0.166 0.851 0.288c0.279 0.122 0.537 0.279 0.773 0.472s0.423 0.402 0.563 0.629c0.087 0.14 0.113 0.293 0.079 0.458s-0.070 0.284-0.105 0.354c-0.227 0.506-0.297 1.039-0.21 1.598s0.341 1.048 0.76 1.467c0.419 0.419 0.934 0.651 1.546 0.694s1.179-0.057 1.703-0.301c0.14-0.087 0.31-0.122 0.511-0.105s0.371 0.096 0.511 0.236c0.262 0.244 0.493 0.616 0.694 1.113s0.336 1 0.406 1.506c0.035 0.297-0.013 0.528-0.144 0.694s-0.266 0.275-0.406 0.327c-0.542 0.192-1.004 0.528-1.388 1.009s-0.576 1.026-0.576 1.637c0 0.594 0.162 1.113 0.485 1.559s0.747 0.764 1.27 0.956c0.122 0.070 0.227 0.14 0.314 0.21 0.192 0.157 0.323 0.358 0.393 0.602v0zM16.451 19.462c0.786 0 1.528-0.149 2.227-0.445s1.305-0.707 1.821-1.231c0.515-0.524 0.921-1.131 1.218-1.821s0.445-1.428 0.445-2.214c0-0.786-0.148-1.524-0.445-2.214s-0.703-1.292-1.218-1.808c-0.515-0.515-1.122-0.921-1.821-1.218s-1.441-0.445-2.227-0.445c-0.786 0-1.524 0.148-2.214 0.445s-1.292 0.703-1.808 1.218c-0.515 0.515-0.921 1.118-1.218 1.808s-0.445 1.428-0.445 2.214c0 0.786 0.149 1.524 0.445 2.214s0.703 1.297 1.218 1.821c0.515 0.524 1.118 0.934 1.808 1.231s1.428 0.445 2.214 0.445v0z'],
'right': ['0 0 32 32', 'M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z']
'right': ['0 0 32 32', 'M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z'],
'comment': ['0 0 32 32', 'M27.128 0.38h-22.553c-2.336 0-4.229 1.825-4.229 4.076v16.273c0 2.251 1.893 4.076 4.229 4.076h4.229v-2.685h8.403l-8.784 8.072 1.566 1.44 7.429-6.827h9.71c2.335 0 4.229-1.825 4.229-4.076v-16.273c0-2.252-1.894-4.076-4.229-4.076zM28.538 19.403c0 1.5-1.262 2.717-2.819 2.717h-8.36l-0.076-0.070-0.076 0.070h-11.223c-1.557 0-2.819-1.217-2.819-2.717v-13.589c0-1.501 1.262-2.718 2.819-2.718h19.734c1.557 0 2.819-0.141 2.819 1.359v14.947zM9.206 10.557c-1.222 0-2.215 0.911-2.215 2.036s0.992 2.035 2.215 2.035c1.224 0 2.216-0.911 2.216-2.035s-0.992-2.036-2.216-2.036zM22.496 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.224 0 2.215-0.911 2.215-2.035s-0.991-2.036-2.215-2.036zM15.852 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.222 0 2.215-0.911 2.215-2.035s-0.992-2.036-2.215-2.036z']
};
this.getSVG = (type) => {
return `
@ -89,7 +90,7 @@
func();
}
}
};
}
/**
* AutoLink initialization function
@ -97,7 +98,8 @@
init() {
this.element = this.option.element;
let eleHTML = `
this.element.innerHTML = `
<div class="dplayer-mask"></div>
<div class="dplayer-video-wrap">
<video class="dplayer-video" poster="${this.option.video.pic}">
<source src="${this.option.video.url}" type="video/mp4">
@ -129,21 +131,13 @@
<button class="dplayer-icon dplayer-setting-icon">`
+ this.getSVG('setting')
+ ` </button>
<div class="dplayer-setting-box">
<div class="dplayer-setting-item dplayer-setting-loop">
<span class="dplayer-label">洗脑循环</span>
<div class="dplayer-toggle">
<input class="dplayer-toggle-setting-input" type="checkbox" name="dplayer-toggle" id="dplayer-toggle">
<label for="dplayer-toggle"></label>
</div>
</div>
<div class="dplayer-setting-item dplayer-setting-speed">
<span class="dplayer-label">速度</span>
<div class="dplayer-toggle">`
+ this.getSVG('right')
+ ` </div>
</div>
<div class="dplayer-setting-box"></div>
</div>
<div class="dplayer-comment">
<button class="dplayer-icon dplayer-comment-icon">`
+ this.getSVG('comment')
+ ` </button>
<div class="dplayer-comment-box"></div>
</div>
<button class="dplayer-icon dplayer-full-icon">`
+ this.getSVG('full')
@ -159,27 +153,12 @@
</div>
</div>
`;
this.element.innerHTML = eleHTML;
// get this audio object
this.audio = this.element.getElementsByClassName('dplayer-video')[0];
this.ptime = this.element.getElementsByClassName('dplayer-ptime')[0];
// hide controller if mouse stops for 2 seconds
let hideTime = 0;
const hideController = () => {
this.element.classList.remove('dplayer-hide-controller');
clearTimeout(hideTime);
hideTime = setTimeout(() => {
if (this.audio.played.length) {
this.element.classList.add('dplayer-hide-controller');
}
}, 2000);
};
this.element.addEventListener('mousemove', hideController);
this.element.addEventListener('click', hideController);
// play and pause button
this.playButton = this.element.getElementsByClassName('dplayer-play-icon')[0];
this.toggle = () => {
@ -197,9 +176,43 @@
// control play progress
this.playedBar = this.element.getElementsByClassName('dplayer-played')[0];
this.loadedBar = this.element.getElementsByClassName('dplayer-loaded')[0];
this.thumb = this.element.getElementsByClassName('dplayer-thumb')[0];
this.bar = this.element.getElementsByClassName('dplayer-bar-wrap')[0];
let barWidth;
this.audio.addEventListener('seeked', () => {
if (this.option.danmaku) {
for (let i = 0; i < this.dan.length; i++) {
if (this.dan[i].time >= this.audio.currentTime) {
this.danIndex = i;
return;
}
}
}
});
this.setTime = () => {
if (this.option.danmaku) {
this.playedTime = setInterval(() => {
this.updateBar('played', this.audio.currentTime / this.audio.duration, 'width');
this.ptime.innerHTML = this.secondToTime(this.audio.currentTime);
this.trigger('playing');
const item = this.dan[this.danIndex];
if (item && this.audio.currentTime >= item.time) {
this.danmakuIn(item.text, item.color, item.type);
this.danIndex++;
}
}, 100);
}
else {
this.playedTime = setInterval(() => {
this.updateBar('played', this.audio.currentTime / this.audio.duration, 'width');
this.ptime.innerHTML = this.secondToTime(this.audio.currentTime);
this.trigger('playing');
}, 100);
}
};
this.bar.addEventListener('click', (event) => {
const e = event || window.event;
barWidth = this.bar.clientWidth;
@ -224,11 +237,7 @@
document.removeEventListener('mouseup', thumbUp);
document.removeEventListener('mousemove', thumbMove);
this.audio.currentTime = parseFloat(this.playedBar.style.width) / 100 * this.audio.duration;
this.playedTime = setInterval(() => {
this.updateBar('played', this.audio.currentTime / this.audio.duration, 'width');
this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = this.secondToTime(this.audio.currentTime);
this.trigger('playing');
}, 100);
this.setTime();
};
this.bar.addEventListener('mousedown', () => {
@ -329,53 +338,23 @@
return actualTop - elementScrollTop;
}
// toggle setting box
const settingIcon = this.element.getElementsByClassName('dplayer-setting-icon')[0];
const settingBox = this.element.getElementsByClassName('dplayer-setting-box')[0];
settingIcon.addEventListener('click', () => {
if (settingBox.classList.contains('dplayer-setting-box-open')) {
settingBox.classList.remove('dplayer-setting-box-open')
}
else {
settingBox.classList.add('dplayer-setting-box-open')
}
});
// setting
const settingEvent = () => {
// loop control
const loopEle = this.element.getElementsByClassName('dplayer-setting-loop')[0];
const loopToggle = loopEle.getElementsByClassName('dplayer-toggle-setting-input')[0];
loopEle.addEventListener('click', () => {
loopToggle.checked = !loopToggle.checked;
if (loopToggle.checked) {
this.loop = true;
this.audio.loop = this.loop;
}
else {
this.loop = false;
this.audio.loop = this.loop;
}
settingBox.classList.remove('dplayer-setting-box-open');
});
loopToggle.addEventListener('change', () => {
if (loopToggle.checked) {
this.loop = true;
this.audio.loop = this.loop;
}
else {
this.loop = false;
this.audio.loop = this.loop;
}
settingBox.classList.remove('dplayer-setting-box-open');
});
// speed control
const settingBack = settingBox.innerHTML;
const speedEle = this.element.getElementsByClassName('dplayer-setting-speed')[0];
speedEle.addEventListener('click', () => {
settingBox.classList.add('dplayer-setting-box-narrow');
settingBox.innerHTML = `
const settingHTML = {
'original': `
<div class="dplayer-setting-item dplayer-setting-loop">
<span class="dplayer-label">洗脑循环</span>
<div class="dplayer-toggle">
<input class="dplayer-toggle-setting-input" type="checkbox" name="dplayer-toggle" id="dplayer-toggle">
<label for="dplayer-toggle"></label>
</div>
</div>
<div class="dplayer-setting-item dplayer-setting-speed">
<span class="dplayer-label">速度</span>
<div class="dplayer-toggle">`
+ this.getSVG('right')
+ ` </div>
</div>`,
'speed': `
<div class="dplayer-setting-speed-item" data-speed="0.5">
<span class="dplayer-label">0.5</span>
</div>
@ -393,24 +372,101 @@
</div>
<div class="dplayer-setting-speed-item" data-speed="2">
<span class="dplayer-label">2</span>
</div>`;
</div>`
};
// toggle setting box
const settingIcon = this.element.getElementsByClassName('dplayer-setting-icon')[0];
const settingBox = this.element.getElementsByClassName('dplayer-setting-box')[0];
const mask = this.element.getElementsByClassName('dplayer-mask')[0];
settingBox.innerHTML = settingHTML.original;
const closeSetting = () => {
if (settingBox.classList.contains('dplayer-setting-box-open')) {
settingBox.classList.remove('dplayer-setting-box-open');
mask.classList.remove('dplayer-mask-show');
setTimeout(() => {
settingBox.classList.remove('dplayer-setting-box-narrow');
settingBox.innerHTML = settingHTML.original;
settingEvent();
}, 300);
}
};
const openSetting = () => {
settingBox.classList.add('dplayer-setting-box-open');
mask.classList.add('dplayer-mask-show');
};
mask.addEventListener('click', () => {
closeSetting();
});
settingIcon.addEventListener('click', () => {
openSetting();
});
const settingEvent = () => {
// loop control
const loopEle = this.element.getElementsByClassName('dplayer-setting-loop')[0];
const loopToggle = loopEle.getElementsByClassName('dplayer-toggle-setting-input')[0];
loopToggle.checked = this.loop;
loopEle.addEventListener('click', () => {
loopToggle.checked = !loopToggle.checked;
if (loopToggle.checked) {
this.loop = true;
this.audio.loop = this.loop;
}
else {
this.loop = false;
this.audio.loop = this.loop;
}
closeSetting();
});
loopToggle.addEventListener('change', () => {
if (loopToggle.checked) {
this.loop = true;
this.audio.loop = this.loop;
}
else {
this.loop = false;
this.audio.loop = this.loop;
}
closeSetting();
});
// speed control
const speedEle = this.element.getElementsByClassName('dplayer-setting-speed')[0];
speedEle.addEventListener('click', () => {
settingBox.classList.add('dplayer-setting-box-narrow');
settingBox.innerHTML = settingHTML.speed;
const speedItem = settingBox.getElementsByClassName('dplayer-setting-speed-item');
for (let i = 0; i < speedItem.length; i++) {
speedItem[i].addEventListener('click', () => {
this.audio.playbackRate = speedItem[i].dataset.speed;
settingBox.classList.remove('dplayer-setting-box-narrow');
setTimeout(() => {
settingBox.innerHTML = settingBack;
settingEvent();
}, 300);
settingBox.classList.remove('dplayer-setting-box-open');
closeSetting();
});
}
});
};
settingEvent();
// hide controller if mouse stops for 2 seconds
let hideTime = 0;
const hideController = () => {
this.element.classList.remove('dplayer-hide-controller');
clearTimeout(hideTime);
hideTime = setTimeout(() => {
if (this.audio.played.length) {
this.element.classList.add('dplayer-hide-controller');
closeSetting();
}
}, 2000);
};
this.element.addEventListener('mousemove', hideController);
this.element.addEventListener('click', hideController);
// full screen
this.element.getElementsByClassName('dplayer-full-icon')[0].addEventListener('click', () => {
if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {
@ -488,18 +544,24 @@
const itemHeight = 30;
const itemY = danHeight / itemHeight;
let danTunnel = {};
window.danTunnel = danTunnel;
const danItemRight = (ele) => {
return danContainer.getBoundingClientRect().right - ele.getBoundingClientRect().right;
};
const danSpeed = (ele) => {
return (danWidth + ele.offsetWidth) / 5;
};
const getTunnel = (ele) => {
const tmp = danWidth / danSpeed(ele);
for (let i = 0; i <= itemY - 1; i++) {
let item = danTunnel[i + ''];
if (item && item.length) {
for (let j = 0; j < item.length; j++) {
if (danItemRight(item[j]) <= 0) {
const danRight = danItemRight(item[j]);
if (danRight <= 640 - (tmp * danSpeed(item[j])) || danRight <= 0) {
break;
}
if (j === item.length - 1) {
@ -550,7 +612,7 @@
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
this.dan = JSON.parse(xhr.responseText).danmaku;
this.dan = JSON.parse(xhr.responseText).danmaku.sort((a, b) => a.time - b.time);
console.log(this.dan);
// autoplay
@ -591,26 +653,7 @@
if (this.playedTime) {
clearInterval(this.playedTime);
}
if (this.option.danmaku) {
this.playedTime = setInterval(() => {
this.updateBar('played', this.audio.currentTime / this.audio.duration, 'width');
this.ptime.innerHTML = this.secondToTime(this.audio.currentTime);
this.trigger('playing');
const item = this.dan[this.danIndex];
if (item && this.audio.currentTime >= item.time) {
this.danmakuIn(item.text, item.color, item.type);
this.danIndex++;
}
}, 100);
}
else {
this.playedTime = setInterval(() => {
this.updateBar('played', this.audio.currentTime / this.audio.duration, 'width');
this.ptime.innerHTML = this.secondToTime(this.audio.currentTime);
this.trigger('playing');
}, 100);
}
this.setTime();
this.element.classList.add('dplayer-playing');
this.trigger('play');
}

View File

@ -39,6 +39,20 @@
}
}
.dplayer-mask {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 1;
display: none;
&.dplayer-mask-show {
display: block;
}
}
.dplayer-video-wrap {
position: relative;
background: #000;
@ -58,7 +72,7 @@
right: 0;
top: 0;
bottom: 0;
font-size: 24px;
font-size: 22px;
color: #fff;
.dplayer-danmaku-item {
@ -200,6 +214,10 @@
&:hover {
opacity: 1;
}
&.dplayer-comment-icon {
padding: 10px 9px 9px;
}
}
.dplayer-svg-shadow {
@ -294,6 +312,7 @@
padding: 7px 0;
transition: all .3s ease-in-out;
overflow: hidden;
z-index: 2;
&.dplayer-setting-box-open {
transform: translateX(0);
@ -319,6 +338,11 @@
}
}
.dplayer-comment {
display: inline-block;
height: 100%;
}
.dplayer-label {
color: #eee;
font-size: 13px;