Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.12.2015, 15:30
Новичок на форуме
Отправить личное сообщение для GrandLamoz Посмотреть профиль Найти все сообщения от GrandLamoz
 
Регистрация: 10.12.2015
Сообщений: 8

Бегущая строка с параметрами
Доброго времени суток.
Прошу помочь с такой таской:
"Создайте бегущую строку. С помощью JavaScript добавьте элементы регулировки следующих параметров: скорость движения текста, цвет текста, направление движения текста, содержание текста."

Спасибо за внимание.
Ответить с цитированием
  #2 (permalink)  
Старый 23.12.2015, 17:12
Интересующийся
Отправить личное сообщение для madCoder Посмотреть профиль Найти все сообщения от madCoder
 
Регистрация: 01.12.2015
Сообщений: 10

https://www.google.com.ua/search?cli...UTF-8&oe=UTF-8
Ответить с цитированием
  #3 (permalink)  
Старый 23.12.2015, 20:30
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Час убил, но написал.


.Ticker {
    background: #000;
    font-size: 15pt;
    height: 30px;
    overflow: hidden;
    position: relative;
    white-space: nowrap;
}
.Ticker span {
    margin: 3px 0;
    position: absolute;
}



function Ticker(data) {
	data = data || {};

	this._enterFrameCallback = this._enterFrame.bind(this);

	this.self = document.createElement('div');
	this.self.classList.add('Ticker');
	this._textElement = document.createElement('span');
	this.self.appendChild(this._textElement);
    
	this.color = data.color || Ticker.DEFAULT_COLOR;
	this.speed = data.speed || Ticker.DEFAULT_SPEED;
	this.text = data.text || '?????';
};

Ticker.prototype = {
	insertTo: function(element) {
		element.appendChild(this.self);
	},
	play: function() {
		this.stop();
		this._state = 1;
		this._enterFrame();
	},
	stop: function() {
		this._state = 0;
	},
	_enterFrame: function() {
		if(this._state == 1) {
			this._left -= this.speed / 10;
			if(this._left < -this._textElement.clientWidth) {
				this._left = this.self.clientWidth;
			}
			this._textElement.style.left = this._left + 'px';
			requestAnimationFrame(this._enterFrameCallback);
		}
	},
	get color() {
		return this._color;
	},
	get speed() {
		return this._speed;
	},
	get text() {
		return this._text;
	},
	set color(value) {
		this._color = value;
		this.self.style.color = value;
	},
	set speed(value) {
		this._speed = value;
	},
	set text(value) {
		var textElement = this._textElement,
			textNode = document.createTextNode(value);
		this._left = this.self.clientWidth;
		this._text = value;
		if(textElement.firstChild) {
			textElement.removeChild(textElement.firstChild);
		}
		textElement.appendChild(textNode);
		this.play();
	}
};

Ticker.DEFAULT_COLOR = '#FF0000';
Ticker.DEFAULT_SPEED = 10;



Инициализация:
var myTicker = new Ticker();
myTicker.text = 'Hello World!';
myTicker.insertTo(document.body);



var myTicker = new Ticker({color: 'green', speed: 5, text: 'foo'});
myTicker.insertTo(document.body);



var myTicker = new Ticker();
myTicker.color = 'blue';
myTicker.speed = 8;
myTicker.text = 'Добрый день!';
myTicker.insertTo(document.body);




Живой пример: https://jsfiddle.net/8kttm17v/

Последний раз редактировалось ruslan_mart, 23.12.2015 в 20:33.
Ответить с цитированием
  #4 (permalink)  
Старый 23.12.2015, 21:11
Новичок на форуме
Отправить личное сообщение для GrandLamoz Посмотреть профиль Найти все сообщения от GrandLamoz
 
Регистрация: 10.12.2015
Сообщений: 8

Ruslan_xDD,
Спасибо огромное!
Ответить с цитированием
  #5 (permalink)  
Старый 24.12.2015, 00:08
Новичок на форуме
Отправить личное сообщение для GrandLamoz Посмотреть профиль Найти все сообщения от GrandLamoz
 
Регистрация: 10.12.2015
Сообщений: 8

Ruslan_xDD,
К сожалению я настолько туп, что должен спросить: А что насчёт регулировки направления текста?
И прошу прощения за то, что напрягаю.
Ответить с цитированием
  #6 (permalink)  
Старый 24.12.2015, 01:03
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Доработал класс.

Теперь можно динамически менять текст и задавать отрицательную скорость.

https://jsfiddle.net/8kttm17v/1/

P.S.: положительная скорость - текст движется слева направо, а отрицательная - наоборот.
Ответить с цитированием
  #7 (permalink)  
Старый 24.12.2015, 01:14
Новичок на форуме
Отправить личное сообщение для GrandLamoz Посмотреть профиль Найти все сообщения от GrandLamoz
 
Регистрация: 10.12.2015
Сообщений: 8

Огромнейшее
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бегущая строка динамическое обновление nikolaygrand Общие вопросы Javascript 4 01.02.2013 08:51
бегущая строка на Jquery noosfera jQuery 10 19.11.2012 17:10
Предполагается наличие ';' в IE7- FINoM (X)HTML/CSS 5 25.08.2012 16:05
Бегущая строка kali4st Ваши сайты и скрипты 10 18.12.2009 15:39
Необходима бегущая строка: непрерывная, снизу вверх Garaeva_Gulnara Элементы интерфейса 3 30.10.2009 18:25