Показать сообщение отдельно
  #1 (permalink)  
Старый 24.10.2017, 10:48
Новичок на форуме
Отправить личное сообщение для bondaryoff Посмотреть профиль Найти все сообщения от bondaryoff
 
Регистрация: 24.10.2017
Сообщений: 2

js Виджет для сайта
Здравствуйте только начал изучать js
появилась задача создать виджет

http://test.webstroy.info/vidget/

Что не получаеться
1) создание нескольких виджетов на одной странице
2) изменение параметров виджетов независимо друг от друга после инициализации

заранее спасибо за помощь

function widget_card(collor, size, vertical, horizontal) {
    window.onload = function() {
      var dr_vidg = document.getElementById(id);
      var color_circle = document.querySelector('.color_circle');
      var color_line = document.querySelector('.color_line');
      // console.log(dr_vidg);
      console.log(color_circle);
      dr_vidg.style.width = size;
      dr_vidg.style.height = size;
      dr_vidg.style.left = vertical;
      dr_vidg.style.top = horizontal;
      color_circle.style.fill = color;
      color_line.style.fill = color;
      console.log(color)
      dr_vidg.onmousedown = function(e) {
        function getCoords(elem) {
          // (1)
          var box = elem.getBoundingClientRect();

          var body = document.body;
          var docEl = document.documentElement;

          // (2)
          var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;
          var scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;

          // (3)
          var clientTop = docEl.clientTop || body.clientTop || 0;
          var clientLeft = docEl.clientLeft || body.clientLeft || 0;

          // (4)
          var top = box.top;
          var left = box.left;

          return {
            top: top,
            left: left
          };
        }
        var coords = getCoords(dr_vidg);
        var shiftX = e.pageX - coords.left;
        var shiftY = e.pageY - coords.top;
        document.body.appendChild(dr_vidg);
        moveAt(e);

        function moveAt(e) {
          dr_vidg.style.left = e.pageX - shiftX + 'px';
          dr_vidg.style.top = e.pageY - shiftY + 'px';
        }
        document.onmousemove = function(e) {
          moveAt(e);
        };
        dr_vidg.onmouseup = function() {
          document.onmousemove = null;
          dr_vidg.onmouseup = null;
        };
      }
      dr_vidg.ondragstart = function() {
        return false;
      };
    };
  }


Инициализация на странице

var id = 'dr_vidg1'
var color = 'red';
var size = '200px';
var vertical = '10%';
var horizontal = '10%';
widget_card(color, size, vertical, horizontal, id);
Ответить с цитированием