Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.03.2016, 02:31
Аспирант
Отправить личное сообщение для maximamus Посмотреть профиль Найти все сообщения от maximamus
 
Регистрация: 29.01.2015
Сообщений: 81

Сменить текст на картинку в data-toggle-text
Всем привет!
Подскажите пожалуйста, как вместо текста, сделать картинки, что бы менялись когда блок открываешь и закрываешь. Пробовал стилями, но я так понял, что скрипт еще, что то шаманит...
Помогите пожалуйста, а то в программировании дубзеленый(

<button class="js-button" data-toggle-text="&#215;">&#8801;</button>
            <div class="js-container hidden">
                <div>
                   ТЕКСТ
                 </div>
            </div>


;(function($D){
	var $button    = $D.querySelector('.js-button'),
		$container = $D.querySelector('.js-container');

	$button.addEventListener('click', function(e){
		var data = e.target.dataset,
			toggleText = $button.innerHTML,
			isVisible = $container.style.display == 'block';

		$button.innerHTML = data.toggleText;
		data.toggleText = toggleText;

		$container.style.display = isVisible ? 'none' : 'block';
	});
})(document);
Ответить с цитированием
  #2 (permalink)  
Старый 26.03.2016, 03:15
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Где именно нужны картинки и какие?
Ответить с цитированием
  #3 (permalink)  
Старый 26.03.2016, 03:47
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

maximamus, так?
<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Untitled</title>
    <style>
      .hidden {
        display: none;
      }
    </style>
  </head>
  <body>
    <button class="js-button" data-toggle-text="&#215;">&#8801;</button>
    
    <div class="js-container">
      <div>
        <img src="http://javascript.ru/forum/images/smilies/unsure.gif" alt="">
      </div>
    </div>
    
    <script>
      var images = ['unsure.gif', 'laugh.gif', 'agree.gif', 'dance3.gif', 'lol.gif'];
      var button = document.querySelector('.js-button');
      var container = document.querySelector('.js-container');
      var i = 0;
      
      button.onclick = function() {
        toggle(container);
      };
      
      function changeImage() {
        var img = container.querySelector('img');

        img.src = 'http://javascript.ru/forum/images/smilies/' + images[++i % images.length];
      }
      
      function toggle(elem) {
        if ( elem.classList.contains('hidden') ) {
          elem.classList.remove('hidden')
        } else {
          elem.classList.add('hidden');
          changeImage();
        }
      }
    </script>
  </body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 27.03.2016, 05:13
Аспирант
Отправить личное сообщение для maximamus Посмотреть профиль Найти все сообщения от maximamus
 
Регистрация: 29.01.2015
Сообщений: 81

немного не так) но интересно)
нужно что бы сперва было одна картинка, нажал вместо нее другая появилась, еще раз нажал - вернулась предыдущая,.. сейчас тоже самое происходит с текстом
даже не могу пример вставить, так досих пор и не понял, как и где они вставляются.. то нужен function, то не нужен...
Ответить с цитированием
  #5 (permalink)  
Старый 28.03.2016, 01:59
Аспирант
Отправить личное сообщение для maximamus Посмотреть профиль Найти все сообщения от maximamus
 
Регистрация: 29.01.2015
Сообщений: 81

и можно ли как то добавить анимацию на открытие блока? в идеале было бы, что при открытии, каждый элемент появлялся постепенно
Ответить с цитированием
  #6 (permalink)  
Старый 28.03.2016, 18:31
Аспирант
Отправить личное сообщение для maximamus Посмотреть профиль Найти все сообщения от maximamus
 
Регистрация: 29.01.2015
Сообщений: 81

Сообщение от Decode Посмотреть сообщение
Где именно нужны картинки и какие?
в самом верху, когда блок закрыт (три полоски) и когда открыт (Х), вместо них нужно поставить свои картинки (img)
Ответить с цитированием
  #7 (permalink)  
Старый 28.03.2016, 20:54
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

maximamus, так?
<!doctype html>
<html>
<head>
	<meta charset="utf-8" />
	<title>Untitled</title>
	<!--<script src="http://code.jquery.com/jquery-latest.min.js"></script>-->
</head>
<body>
	<button class="js-button" data-toggle-text="×">≡</button>

	<div class="js-container">
		<div>
			<img src="http://game-tournaments.com/media/smile/yo.png" alt="" />
		</div>
	</div>

	<script>
		var images = ['http://game-tournaments.com/media/smile/yo.png', 'http://www.likiliks.ru/images/smile_high.png'];
		var button = document.querySelector('.js-button');
		var img = document.querySelector('.js-container img');
		var i = 0;

		button.onclick = function() {
			toggle(img);
		};

		function changeImage() {
			img.src = images[++i % images.length];
		}

		function toggle(elem) {
			if (elem.offsetHeight) {
				animate(elem, 1000);
			} else {
				changeImage();
			 	animate(elem, 1000)
			}
		}

		function animate(elem, duration) {
			var begin = performance.now();
			var startHeight = elem.offsetHeight;

			window.requestAnimationFrame(function animate(now) {
				var progress = (now - begin) / duration;

				progress > 1 && (progress = 1);

				if (startHeight)
					elem.style.height = (startHeight - startHeight * progress) + 'px';
				else
					elem.style.height = progress * 256 + 'px';

				progress < 1 && window.requestAnimationFrame(animate);
			});
		}
	</script>

	<!--<script src="http://localhost:35729/livereload.js"></script>-->
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 28.03.2016, 21:04
Аспирант
Отправить личное сообщение для maximamus Посмотреть профиль Найти все сообщения от maximamus
 
Регистрация: 29.01.2015
Сообщений: 81

Сообщение от Decode
maximamus, так?
нет) вот где полоски сверху у Вас, вот там должна меняться картинка, то есть это кнопка, которая открывает блок... блок появился и вместо нее появился крест, нажал на него, блок закрылся и опять полоски появились
Ответить с цитированием
  #9 (permalink)  
Старый 28.03.2016, 21:51
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

<!doctype html>
<html>
<head>
	<meta charset="utf-8" />
	<title>Untitled</title>
	<!--<script src="http://code.jquery.com/jquery-latest.min.js"></script>-->
	<style>
		.hidden img {
			height: 0;
		}
	</style>
</head>
<body>
	<button class="js-button" data-close="&#215;" data-open="&#8801;">&#8801;</button>

	<div class="js-container hidden">
		<img src="http://game-tournaments.com/media/smile/yo.png" alt="" />
	</div>

	<script>
		var images = ['http://game-tournaments.com/media/smile/yo.png', 'http://www.likiliks.ru/images/smile_high.png'];
		var button = document.querySelector('.js-button');
		var container = document.querySelector('.js-container');
		var img = container.querySelector('img');
		var animated = false;
		var i = 0;

		button.onclick = function() {
			toggle(img);
		};

		function changeImage() {
			img.src = images[i++ % images.length];
		}

		function toggle(elem) {
			if ( container.classList.contains('hidden') ) {
				button.innerHTML = button.dataset.close;

				animate(elem, 1000, function() {
					container.classList.remove('hidden');
					changeImage();
				});
			} else {
				button.innerHTML = button.dataset.open;

			 	animate(elem, 1000, function() {
					container.classList.add('hidden');
				});
			}
		}

		function animate(elem, duration, callback) {
			if (animated) return;

			var begin = performance.now();
			var startHeight = elem.offsetHeight;

			animated = true;

			window.requestAnimationFrame(function animate(now) {
				var progress = (now - begin) / duration;

				progress > 1 && (progress = 1);

				if (startHeight)
					elem.style.height = (startHeight - startHeight * progress) + 'px';
				else
					elem.style.height = progress * 256 + 'px';

				(progress < 1) ?  window.requestAnimationFrame(animate) : animated = false;
			});

			setTimeout(callback, 0);
		}
	</script>

	<!--<script src="http://localhost:35729/livereload.js"></script>-->
</body>
</html>
Ответить с цитированием
  #10 (permalink)  
Старый 28.03.2016, 23:00
Аспирант
Отправить личное сообщение для maximamus Посмотреть профиль Найти все сообщения от maximamus
 
Регистрация: 29.01.2015
Сообщений: 81

Сообщение от Decode
new
<button class="js-button" data-close="×" data-open="≡">≡</button>

я про этот блок, что бы в нем поставить картинки, вместо символов
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема со scroll Chrome Элементы интерфейса 2 21.10.2013 14:46
прогкрутка к якорям cOAPerator Общие вопросы Javascript 20 27.08.2013 03:30
Горизонтальная прокрутка контента! andys Элементы интерфейса 5 26.06.2011 23:06
скролл для длинного текста не появляется... dschmitz (X)HTML/CSS 6 27.11.2010 02:34