Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 01.08.2016, 17:50
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

donkey,
двигаются одновременно (по крайней мере, начинают)
<!doctype html public "-//W3C//DTD HTML 3.2 Final//EN"> 
<html> 
<head> 
<style> 
#x {z-index: -1; position: absolute; background-color: blue; right: 15; top:15; width: 185; height: 185; text-align: center}
#xx {z-index: -2; position: absolute; background-color: red; right: 0; top:10; width: 50; height: 200;}
#xxx {z-index: -3; position: absolute; background-color: yellow; right: -400; top:15; width: 500; height: 185; border: 1px solid black; text-align: center}
</style> 

</head> 
<body> 
<div style="position: fixed; top: 25%; left: 25%; width: 400; Height:300; border: 1px solid #000000;">
&nbsp;[my screen]
<div id="x">That DIV must turn left wih (xxx)</div>
<div id="xx"></div>
<div id="xxx">That DIV must turn left onClick</div>

</div>
<a href="#">onClick</a>
<script>
   var a = document.querySelector("a"),
        x = document.getElementById("x"),
        xxx = document.getElementById("xxx");
   a.onclick = function() {
      var left = parseInt(getComputedStyle(x, "").getPropertyValue('left'));
      if (left > 0) {
         t = setInterval(function() {
             --left;
             x.style.left = left + "px";
             if (left == 0)   clearInterval(t);
          }, 10);
          var leftXXX = parseInt(getComputedStyle(xxx, "").getPropertyValue('left')),
           leftmin =  parseInt(getComputedStyle(x, "").getPropertyValue('width'));
           tt = setInterval(function() {
                --leftXXX;
                xxx.style.left = leftXXX + "px";
                if (leftXXX == leftmin) clearInterval(tt);
            }, 10);
      }
   }
</script>
</body> 
</html>
Ответить с цитированием
  #22 (permalink)  
Старый 01.08.2016, 18:11
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

donkey,
Первый тянет за собой второго
<!doctype html public "-//W3C//DTD HTML 3.2 Final//EN"> 
<html> 
<head> 
<style> 
#x {z-index: -1; position: absolute; background-color: blue; right: 15; top:15; width: 185; height: 185; text-align: center}
#xx {z-index: -2; position: absolute; background-color: red; right: 0; top:10; width: 50; height: 200;}
#xxx {z-index: -3; position: absolute; background-color: yellow; right: -400; top:15; width: 500; height: 185; border: 1px solid black; text-align: center}
</style> 

</head> 
<body> 
<div style="position: fixed; top: 25%; left: 25%; width: 400; Height:300; border: 1px solid #000000;">
&nbsp;[my screen]
<div id="x">That DIV must turn left wih (xxx)</div>
<div id="xx"></div>
<div id="xxx">That DIV must turn left onClick</div>

</div>
<a href="#">onClick</a>
<script>
    var a = document.querySelector("a"),
        x = document.getElementById("x"),
        xxx = document.getElementById("xxx");
    a.onclick = function () {
        var left = parseInt(getComputedStyle(x, "").getPropertyValue('left')),
            widthX = parseInt(getComputedStyle(x, "").getPropertyValue('width')),
            leftXXX = parseInt(getComputedStyle(xxx, "").getPropertyValue('left'))
        if (left > 0) {
            t = setInterval(function () {
                --left;
                x.style.left = left + "px";
                
                leftmin = left + widthX;
                if (leftXXX > leftmin) {
                    xxx.style.left = leftmin + "px";
                };
                if (left == 0) clearInterval(t);
            }, 10);
        }
    }
</script>
</body> 
</html>
Ответить с цитированием
  #23 (permalink)  
Старый 02.08.2016, 04:06
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

donkey, сценарий - это screenplay, то есть то, что должно играть на экране. Сценарий это: техническое задание и технические условия, это чертеэ строительства дома, это технология выпечки хлеба и рецепт приготовления котлет, это алгоритм и тактировка, это что угодно, что рассказывает что надо взять, когда и сколько, куда положить, прибить поставить, пришить и что должно получиться.

У тебя свое заводское понимание устройства веб-сайтов, из которого ты вылезать не хочешь. Как ты придумал - так не делают.
Ответить с цитированием
  #24 (permalink)  
Старый 02.08.2016, 04:08
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Нет никаких "слоев" на веб-странице, это дебильные кодеры 90-х так назвали arbitrary division - который div, когда им их показали вместо table. Веб - это не фотошоп и не люстра.

Твой сценарий пишется так: как сдвинуть два дива одновременно с сохранением относительного положения их друг к другу. Вот так, коротко и ясно. Третий див вообще не колебет, его двигать не надо, значит его нету в сценарии, статист.

method = div1.left = div2.left+div2.width;

Последний раз редактировалось warren buffet, 02.08.2016 в 04:16.
Ответить с цитированием
  #25 (permalink)  
Старый 02.08.2016, 15:57
Интересующийся
Отправить личное сообщение для donkey Посмотреть профиль Найти все сообщения от donkey
 
Регистрация: 29.07.2016
Сообщений: 16

Dilettante_Pro, очень интересно.. По крайней мере теперь, после этих нескольких примеров, становится куда как более ясно как работает скрипт. Вы очень выручили. Спасибо вам!

warren buffet, вы прямо как генерал Кастер из фильма "Маленький Большой Человек", - совершенно точно определили мою профессию по внешнему виду! Крайне рекомендую вам пересмотреть эту шикарную киноленту.. Дабы.. Случайно не повторить весьма печальную участь.. Генерала.. Джорджа Армстронга Кастера! (:
Ответить с цитированием
  #26 (permalink)  
Старый 02.08.2016, 16:33
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Иди сшивай слои умнег. Белыми нитками.
Ответить с цитированием
  #27 (permalink)  
Старый 24.08.2016, 14:14
Интересующийся
Отправить личное сообщение для donkey Посмотреть профиль Найти все сообщения от donkey
 
Регистрация: 29.07.2016
Сообщений: 16

Здравствуйте!

Еще раз большое спасибо, но мне снова нужна помощь с этим скриптом.

Вот с чем я столкнулся: Лиса слишком медленно открывает скрытый слой, даже несмотря на интервал времени установленный в скрипте.. Возможно, что просто скрытый слой слишком "перегружен", но в Хроме все нормально, даже слишком хорошо, только вот при повторном нажатии на ссылку в обеих браузерах снова запускается функция и оба слоя "уходят" с экрана.

Почитал по поводу запрета повторного нажатия и, по ходу, этот вопрос не решается без подключения внешних библиотек.. Возможно ли избежать этого и просто привязать эти два слоя к мыши, без ссылки, и просто "вытягивать" их оба, но не более чем на заранее заданную ширину, как штору?

Буду очень признателен за вашу помощь!

Последний раз редактировалось donkey, 24.08.2016 в 16:27.
Ответить с цитированием
  #28 (permalink)  
Старый 24.08.2016, 14:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,133

Сообщение от donkey
даже несмотря на интервал времени установленный в скрипте..
значение 10 слишком мало для любого браузера, и код использующий setInterval (или document.write ) это плохой код.
Ответить с цитированием
  #29 (permalink)  
Старый 24.08.2016, 16:32
Интересующийся
Отправить личное сообщение для donkey Посмотреть профиль Найти все сообщения от donkey
 
Регистрация: 29.07.2016
Сообщений: 16

рони, поверьте, менял интервал времени, но увы.. Более того, опытным путем установил, что при замене оnClick на onFocus становится ненамного легче в Хроме, но все равно слой рано или поздно "уезжает" со страницы..
Ответить с цитированием
  #30 (permalink)  
Старый 26.08.2016, 18:52
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

donkey,
если еще актуально, посмотрите такой вариант:
<!doctype html public "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<style>
#x {z-index: -1; position: absolute; background-color: blue; right: 15; top:15; width: 185; height: 185; text-align: center}
#xx {z-index: -2; position: absolute; background-color: red; right: 0; top:10; width: 50; height: 200;}
#xxx {z-index: -3; position: absolute; background-color: yellow; right: -400; top:15; width: 500; height: 185; border: 1px solid black; text-align: center}
</style>
 </head>
<body>
<div id="screen" style="position: fixed; top: 25%; left: 25%; width: 400; Height:300; border: 1px solid #000000;">
&nbsp;[my screen]
<div id="x">That DIV must turn left wih (xxx)</div>
<div id="xx"></div>
<div id="xxx">That DIV must turn left onClick</div>
 
</div>
<a href="#">onClick</a>
<script>
    var a = document.querySelector("a"),
        x = document.getElementById("x"),
        xxx = document.getElementById("xxx");
	var screen = document.getElementById("screen");
    a.onclick = function () {
        var leftX = parseInt(getComputedStyle(x, "").getPropertyValue('left')),
            widthX = parseInt(getComputedStyle(x, "").getPropertyValue('width')),
            leftXXX = parseInt(getComputedStyle(xxx, "").getPropertyValue('left')),
			widthXXX = parseInt(getComputedStyle(xxx, "").getPropertyValue('width'));
		if (isNaN(leftX)){
			leftX = parseInt(getComputedStyle(screen, "").getPropertyValue('width'))-
						parseInt(getComputedStyle(x, "").getPropertyValue('right'))-widthX;
		}
		if (isNaN(leftXXX)){
			leftXXX = parseInt(getComputedStyle(screen, "").getPropertyValue('width'))-
						parseInt(getComputedStyle(xxx, "").getPropertyValue('right'))-widthXXX;
		}
		$("#x").css("left", leftX).animate({left: "0px"}, 1500);
		$("#xxx").css("left", leftXXX).animate({left: widthX+"px"}, 1500);
    }
</script>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти точки соприкосновения двух объектов в RaphaelJS Fatalityap Библиотеки/Тулкиты/Фреймворки 3 03.08.2012 16:33
Привязка тултипа к ссылке. nematod Общие вопросы Javascript 0 22.02.2011 19:56
Согласованное движение нескольких объектов. kalach Общие вопросы Javascript 15 18.11.2010 19:06
Массив объектов или объект объектов vladlen Общие вопросы Javascript 19 30.10.2010 03:10
переход по ссылке только после нескольких кликов по ней smilexpo Events/DOM/Window 8 24.11.2009 16:57