Я видел это несколько раз. Я не могу вспомнить другие сайты, но если вы знаете других, я бы хотел увидеть. (https://gumroad.com/)
В основном, когда они делают что-то вроде:
Поделитесь своими "песнями" прямо с вашими "поклонниками". И слова в цитатах продолжают заменяться.
Мне было интересно, есть ли библиотека JS/JQuery, чтобы помочь с этим. Или иначе я бы хотел, чтобы некоторые другие сайты делали это, чтобы я мог получить идеи!
Благодарю.
Я реализовал нечто подобное (без анимации) с помощью jQuery.
Код в основном циклирует данные из массива каждые 2000 мс и добавляет его в диапазон.
Live Demo - http://jsfiddle.net/Dogbert/vF4rj/3/
JS:
var options = [
["music", "listeners"],
["software", "users"],
["films", "viewers"],
["comics", "readers"]
];
var interval = 2000;
var holder1 = $(".holder-1"), holder2 = $(".holder-2");
var currentIndex = 0;
function doIt() {
holder1.html(options[currentIndex][0]);
holder2.html(options[currentIndex][1]);
currentIndex = (currentIndex + 1) % options.length;
setTimeout(doIt, interval);
}
doIt();
HTML:
<h2>
Sell
<span class="holder-1"></span>
directly to your
<span class="holder-2"></span>
</h2>
Если вас интересует их подход, кажется, что это то, что они делают:
span
тегов. Отображаемая версия имеет местозаполнители в этом месте, которые являются пустыми, а их ширина анимируется с использованием новой ширины из скрытой версии.Довольно умный подход.
Что делает эту работу для Gumroad - это гладкая анимация, поэтому я чувствую, что ответы неполны без этого важного элемента.
При этом библиотека d3 javascript (d3js.org) имеет очень хорошую реализацию базовой функциональности плюс поддержку переходов. Код ключа следующий, который позволяет вам легко указать тип преобразования css, который вы хотите применить (см. Последнюю строку):
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
.append("g")
.attr("transform", "translate(32," + (height / 2) + ")");
Полный пример можно посмотреть здесь: http://bl.ocks.org/mbostock/3808234