Облако слов всплывающее видео

1

Я только что получил шаблон облака из T3. Теперь я добавил ссылку на каждое слово в слове "облако", но хочу, чтобы видео появилось, когда я щелкнул слова в слове "облако". Как мне изменить свой код? Большое спасибо.

Вот мой Javascript:

<script>
var fill = d3.scale.category20();
var words = [{"text":"Worry", "url":"http://google.com/"},
         {"text":"Choices", "url":"http://bing.com/"},
       ]

var width = 1080;
var height = 500;
for (var i = 0; i < words.length; i++) {
 words[i].size = 10 + Math.random() * 90;
}

d3.layout.cloud()
.size([width, height])
.words(words)
.padding(5)
.rotate(function() { return ~~ ((Math.random() * 6) - 3) * 30 + 8; })
.font("Impact")
.fontSize(function(d) { return d.size;})
.on("end", draw)
.start();

function draw(words) {
  d3.select("#word-cloud")
    .append("svg")
    .attr("width", width)
    .attr("height", height)
    .append("g")
    .attr("transform", "translate("+ width/2 +","+ height/2 +")")
    .selectAll("text")
    .data(words)
    .enter()
    .append("text")
    .style("font-size", function(d) { return d.size + "px"; })
    .style("font-family", "Impact")
    .style("fill", function(d, i) { return fill(i); })
    .attr("text-anchor", "middle")
    .attr("transform", function(d) {
        return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
    })
    .text(function(d) { return d.text; })
    .on("click", function (d, i){
    window.open(d.url, "_blank");
    });
}
  • 0
    Так что сейчас он открывает URL в новом окне, верно? Если это так, то вместо использования кода "window.open" я бы порекомендовал посмотреть на запуск модального всплывающего окна, содержащего встроенное видео.
Теги:
d3.js
video
popup

1 ответ

0

Мой предложенный подход:

  1. Создание модального окна
  2. Открытие модального слова при нажатии на слово
  3. Динамически заполнять код встраивания в модальный, в зависимости от того, какое слово нажата (я не делал эту часть для вас, но должен быть легко выполнимым, поскольку он является частью данных для доступа).

Я создал JSFiddle, который доставит вам большую часть пути, с дополнительной работой, необходимой здесь:

.on("click", function (d, i){
    // Dynamically populate embed

    // Open the modal
    document.getElementById('myModal').style.display = "block";
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню