Javascript.RU

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

object.style.position
Привет,
пример закинул в планкер: https://plnkr.co/edit/UQz3yiv2hAJfV5UVoqCu?p=preview

Слайдер, двигает картинки, влево - да, вправо - нет. Почему - вот вопрос. Вывожу в логи, значение style.right - меняется, не пойму че не двигает.
Еще интересует почему создаётся переменная left, почему если просто сделать polosa.style.left+= left+'px'; - то не работает

document.getElementById('slider-left').onclick = sliderLeft;
var left = 0;
function sliderLeft () {
	var poloska = document.getElementById('polosa');
	left = left - 128;
	if (left < -512) {
		left = 0;
	}
	polosa.style.left= left+'px';
};

document.getElementById('slider-right').onclick = sliderRight;
var right = 0;
function sliderRight () {
	var poloska = document.getElementById('polosa');
	right = right + 128;
	if (right > 512) {
		right = 0;
	}
	polosa.style.right = right+'px';
	console.log(polosa.style.right);
	console.log(polosa.style.left);
};
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2017, 18:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

shoopik,
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style type="text/css">
  #slider {
    position: relative;
  }

  #polosa{
    position: absolute;
  }

  </style>

</head>
<body> <button id="slider-left">left</button>
  <button id="slider-right">right</button>
  <div id="slider">
    <div id="polosa">
      <img src="https://cdn0.iconfinder.com/data/icons/superhero-2/256/Spiderman-128.png" alt="">
      <img src="https://cdn0.iconfinder.com/data/icons/superhero-2/256/Robin-128.png" alt="">
      <img src="https://cdn0.iconfinder.com/data/icons/superhero-2/256/Captain_America-128.png" alt="">
      <img src="https://cdn4.iconfinder.com/data/icons/superhero/128/thepunisher.png" alt="">
      <img src="https://cdn0.iconfinder.com/data/icons/IS_hallowen_social/128/su_superman.png" alt="">
    </div>
  </div>




  <script>document.getElementById('slider-left').onclick = sliderLeft;
var left = 0;
function sliderLeft () {
  var poloska = document.getElementById('polosa');
  left = left - 128;
  if (left < -512) {
    left = 0;
  }
  polosa.style.left= left+'px';
};

document.getElementById('slider-right').onclick = sliderRight;

function sliderRight () {
  var poloska = document.getElementById('polosa');
  left = left + 128;
  if (left > 0) {
    left = -512;
  }
  polosa.style.left = left+'px';
};</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 22.07.2017, 19:10
Аспирант
Отправить личное сообщение для shoopik Посмотреть профиль Найти все сообщения от shoopik
 
Регистрация: 02.07.2017
Сообщений: 83

спасибо за решение, но я не понял почему так
во-первых почему не работает polosa.style.right,
ну и во-вторых я так понял полоска двигается от-512 до 0, при нажатии кнопки right - она сразу сдвигается в конец, и получается двигается с конца в право.

update:сделал
if (left > 512) {
    left = 0;
  }


Теперь двигаются вправо, наверно проблема тут в том что они не по кругу идут, ну да ладно. Вопрос почему style.right не работает.

Последний раз редактировалось shoopik, 22.07.2017 в 19:21.
Ответить с цитированием
  #4 (permalink)  
Старый 22.07.2017, 20:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

shoopik,
потому что обьект не может быть в двух местах одновременно и left имеет приоритет над right.
Ответить с цитированием
  #5 (permalink)  
Старый 22.07.2017, 20:19
Аспирант
Отправить личное сообщение для shoopik Посмотреть профиль Найти все сообщения от shoopik
 
Регистрация: 02.07.2017
Сообщений: 83

Сообщение от рони Посмотреть сообщение
shoopik,
потому что обьект не может быть в двух местах одновременно и left имеет приоритет над right.
cпасибо
Ответить с цитированием
Ответ



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

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