Javascript.RU

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

Не перемещаются объекты. "Резиновый" сайт.
Только начал знакомится с вебом, многое непонятно. Читаю сразу пару книжек (одна строго по JS, а вторая маленькая, кратко охватывает "все").

Идея - создать всплывающий элемент управления, в контейнере строго определенных пропорций, с автоматическим подгоном размеров под высоту страницы (что бы практически не зависеть от размера окна браузера):

Кратко о начатом:
1. Основной контейнер, с привязкой размера к высоте окна, для автоматического подбора размера самим браузером (как сделать полное вписание с учетом и высоты и ширины - пока не нашел)
2. Внутри будут находится динамические модули настроек будующей странички (для отработки по ОнКлик и пр.) и небольшая область с отображением переключаемых параметров.
3. Для пробы создал 4 контейнера DIV и пытаюсь их перемещать по позициям, определяемым процентами видимой области (как-бы по клеточкам).

Проблема: Контейнеры (все 4) в позиции 0,0 и не перемещаются, так же нельзя считать их текущие координаты, да и прочие свойства - они "пустые".
* Если указать пикселы, то контейнеры перемещаются, но теряется привязка к текущему размеру окна браузера, а привязывать по событию изменения размеров окна - кажется неправильным, как минимум некрасиво.

<!DOCTYPE  html>
<html><head>
<meta charset="utf-8">
<title>Probe</title>
<style>
.Main { /* Вместилище */
 width: calc((4vh + 2px) * 10 + 20px);
 height: calc(100vh - 20px);
 background-color: #000;
 border: 4px solid #888;
 margin: 0px;
 padding: 0px;
 position:fixed;
 top: 0px;
 left: calc(50vw - 20vh - 24px);
 }
#DataArea { /* Вывод текста */
 background-color: #444;
 text-align:right;
 font-size:6vh;
 color:#fac;
 padding-right: 3vh;
 }
.Block { /* Все управляемые блоки */
 width: 4vh;
 height: 4vh;
  border: 1px solid #fff;
  background-color: #aaa;
 border-radius: 25%
 }
</style>
</head>
<body>
<div class="Main">
<div id="DataArea">012345678</div>
<div id="Controls">
 <div id="F1" class="Block" style="position:fixed;"></div>
 <div id="F2" class="Block" style="position:fixed;"></div>
 <div id="F3" class="Block" style="position:fixed;"></div>
 <div id="F4" class="Block" style="position:fixed;"></div>
</div>
</div>

<script>
'use strict';
 var b,x,y; //Block-объект, координаты

 for (var p=1;p<5;p++) {
  x=~~(Math.random()*10);
  y=~~(Math.random()*10);
  b='F'+p.toString();
  b=document.getElementById(b);

// А ВОТ ДАЛЬШЕ ПРОБЛЕМА - не могу ни установить новые координаты "блоков", на считать текущие, ни х\у, ни размер!
  b.style.left='calc(40hv * x + x * 2px)';
  b.style.top='calc(4hv * y + y * 2px)';
  alert(b.id+':'+b.style.backgroundColor+':'+b.style.width+':'+b.style.height+':'+b.style.height+':'+b.style.left+':'+b.style.top);
  };
</script>
</body></html>
Ответить с цитированием
  #2 (permalink)  
Старый 13.06.2017, 15:53
Интересующийся
Отправить личное сообщение для NiOl Посмотреть профиль Найти все сообщения от NiOl
 
Регистрация: 11.06.2017
Сообщений: 15

Ээээ, не очень понимаю, что нарисовать )))
Проблема в том, что нужно объекту присвоить свойство, координаты, размер, выраженные в первую очередь в относительных единицах. например так:

Цитата:
Block.style.left='calc(4hv * x + 2px *x)';
При описании стиля в шапке страницы - все нормально, а вот поменять на ходу почему-то не получается - отладчик ошибок не показывает, но и "не рисует". (((
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2017, 18:28
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<!DOCTYPE  html>
<html><head>
<meta charset="utf-8">
<title>Probe</title>
<style>
.Main { /* Вместилище */
 width: calc((4vw + 2px) * 10 + 20px);
 height: calc(100vh - 20px);
 background-color: #000;
 border: 4px solid #888;
 margin: 0px;
 padding: 0px;
 position:fixed;
 top: 0px;
 left: calc(50vw - 20vh - 24px);
 }
#DataArea { /* Вывод текста */
 background-color: #444;
 text-align:right;
 font-size:6vh;
 color:#fac;
 padding-right: 3vh;
 }
.Block { /* Все управляемые блоки */
  position:relative;
  width: 10vh;
  height: 10vh;
  border: 1px solid #fff;
  background-color: #aaa;
 border-radius: 25%
 }
</style>
</head>
<body>
<div class="Main">
<div id="DataArea">012345678</div>
<div id="Controls">
 <div id="F1" class="Block" >1</div>
 <div id="F2" class="Block" >2</div>
 <div id="F3" class="Block" >3</div>
 <div id="F4" class="Block" >4</div>
</div>
</div>

<script>
'use strict';
 var b,x,y; //Block-объект, координаты

 for (var p=1;p<5;p++) {
  x=~~(Math.random()*10);
  y=~~(Math.random()*10);
  b='F'+p.toString();
  b=document.getElementById(b);

  b.style.left = 'calc(4vw* ' + x + ' + ' + x + ' * 2px)';
  b.style.top='calc(3vh * ' + y + ' + ' + y + ' * 2px)';
 //  alert(b.style.cssText);
  };
</script>
</body></html>

А насчет посмотреть стили - https://learn.javascript.ru/styles-and-classes

Последний раз редактировалось Dilettante_Pro, 13.06.2017 в 18:48.
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2017, 22:47
Интересующийся
Отправить личное сообщение для NiOl Посмотреть профиль Найти все сообщения от NiOl
 
Регистрация: 11.06.2017
Сообщений: 15

Dilettante_Pro, спасибо, самые сложные ошибки, как всегда, в мелочах )))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу оценить сайт оконной компании (дизайн и юзабилити) Zdorovtseva Ваши сайты и скрипты 3 11.03.2017 01:13
IFRAME сторонний сайт andrys2007 Общие вопросы Javascript 3 29.09.2013 18:43
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Оцените сайт, плиз mannn Ваши сайты и скрипты 54 18.08.2010 21:41
Наконец-то сайт открыт Илья Кантор Сайт Javascript.ru 9 06.08.2008 02:27