【发布时间】:2020-08-04 18:32:02
【问题描述】:
我正在开发一个拖放项目,可以将音乐剪辑拖放到不同的位置。我已经弄清楚了拖放,但我需要能够将剪辑添加到播放列表中,以便它们根据放置的位置按顺序播放。有没有人对此或网络上的相关示例有任何经验?
【问题讨论】:
标签: javascript html drag-and-drop playlist
我正在开发一个拖放项目,可以将音乐剪辑拖放到不同的位置。我已经弄清楚了拖放,但我需要能够将剪辑添加到播放列表中,以便它们根据放置的位置按顺序播放。有没有人对此或网络上的相关示例有任何经验?
【问题讨论】:
标签: javascript html drag-and-drop playlist
我在不使用库的情况下做了一个非常简单的示例。 作为基础,我使用了 w3s 示例:https://www.w3schools.com/html/html5_draganddrop.asp 希望对您有所帮助
<!DOCTYPE HTML>
<html>
<head>
<style>
#div1 {
width: 350px;
padding: 10px;
border: 1px solid #aaaaaa;
}
.list {
border: 1px solid #ccc;
cursor: pointer;
margin: 10px;
padding: 5px;
}
</style>
<script>
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function playList() {
var x = document.getElementsByClassName("list");
var y = document.getElementById("showList");
y.innerHTML = "";
for ( var i = 0; i < x.length; i++) {
y.innerHTML += x[i].getAttribute("data-path") + "<br>";
}
}
</script>
</head>
<body>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
<div id="drag1" class="list" data-path="song1.mp3" draggable="true" ondragstart="drag(event)">Song 1</div>
<div id="drag2" class="list" data-path="song2.mp3" draggable="true" ondragstart="drag(event)">Song 2</div>
<div id="drag3" class="list" data-path="song3.mp3" draggable="true" ondragstart="drag(event)">Song 3</div>
<div id="drag4" class="list" data-path="song4.mp3" draggable="true" ondragstart="drag(event)">Song 4</div>
</div>
<button onclick="playList();">PLAY</button>
<div id="showList"></div>
</body>
</html>
【讨论】:
您好,您可以使用 jquery ui,类似这样。
var dragging=false;
$(".list").draggable({
revert: "valid",
start: function(event, ui) {
dragging=true;
},
stop: function(event, ui) {
dragging=false;
}
});
$(".content-list").droppable({
drop: function(event, ui) {
$(this).css('background', 'rgb(0,200,0)');
if($(ui.draggable).hasClass("list")){
$(this).append("<div class='row'>"+$(ui.draggable).html()+"</div>");
}
},
over: function(event, ui) {
$(this).css('background', 'orange');
},
out: function(event, ui) {
$(this).css('background', 'cyan');
}
});
$(".content-list").sortable();
.list{
border: 2px solid #000;
width: 50px;
height: 50px;
float:left;
}
.content-list{
display: inline-block;
padding-left:60px;
border: 2px solid #000;
width: 500px;
height: 500px;
}
.row{
border: 2px solid #000;
width: 100%;
height: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div class="list">1</div>
<div class="list">2</div>
<div class="list">3</div>
<div class="list">4</div>
<div class="list">5</div>
<div class="list">6</div>
<div class="content-list"></div>
希望对你有帮助。
【讨论】: