Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2018, 14:36
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Как определить координаты
Добрый день, есть рисунок:

Как можно для стрелочки obj1 определить начало, чтобы оно было таким:
x1;(y2-y1)/2 и конец:x2;(y3-y4)/2 чтобы эти полученные координаты передать уже в svg для рисования линии.
Да, прямоугольники задаются не статически, а могут создавать динамически.
То есть вся суть стоит именно в определении координат двух динамических блоков
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2018, 14:37
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

y1,y2,y3,y4,x1,x2 от края рабочей области в браузере.
Ответить с цитированием
  #3 (permalink)  
Старый 24.07.2018, 14:46
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

https://learn.javascript.ru/coordinates
Ответить с цитированием
  #4 (permalink)  
Старый 24.07.2018, 14:55
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Подвопрос тогда:
прямоугольникам,которые создаются динамически,лучше присваивать абсолютное позиционирование или какое?
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2018, 15:01
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Начинающий-Js-кодер,
на этот вопрос правильного ответа нет. зависит от ситуации и целей использования этих прямоугольников
Ответить с цитированием
  #6 (permalink)  
Старый 24.07.2018, 15:11
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Их нужно разместить на некотором пространстве, чтобы они располагались не друг за другом, а свободно. то есть один в левом угле, второй в правом,третий посередине,четвертый еще где-то.
Ответить с цитированием
  #7 (permalink)  
Старый 24.07.2018, 15:12
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Начинающий-Js-кодер,
тогда ,понятное дело, абсолютно позиционировать
Ответить с цитированием
  #8 (permalink)  
Старый 24.07.2018, 15:26
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

А как лучше поступить:сделать с абсютным позиционированием сначала блоки сами, а потом уже с абсолютным позиционированием стрелочки,задавая им свою длину то есть в HTML это будет так:
<div>Block1</div>
<div>Block2</div>
<div>Block3</div>
<div>Block...</div>
<div>BlockN</div>
<line/>
<line/>
<line/>
<line/>

Или сначала блок,а потом линия за ним сразу,то есть вот так:
<div>Block1</div><line/>
<div>BlockN</div><line/>

Как лучше?
Ответить с цитированием
  #9 (permalink)  
Старый 24.07.2018, 15:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Начинающий-Js-кодер,
Соединить прямой линией два элемента на javascript или Jquery
Ответить с цитированием
  #10 (permalink)  
Старый 24.07.2018, 15:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

connectionItem соединить блоки линией
Начинающий-Js-кодер,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  body{
      position: relative;
       height: 700px;
  }

  hr.connection{
    position: absolute;
    width: 500px;
    height: 1px;
    background-color: #FF0000;
    padding: 0;
    margin: 0;
    z-index: 2;
  }

  .one {
    background-color: #FFD700;
    position: absolute;
    width: 150px;
    height: 50px;
    border-radius: 8px;
    border: 4px solid #8B4513;
  }


  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
(function($) {
    $.fn.connectionItem = function(options) {
        var defaults = {
            to: $(window)
        };
        var settings = $.extend({}, defaults, options);
        return this.each(function() {
            var from = $(this);
            var x0, y0;
            var x, y, x1, y1, r;
            var to = $(settings.to);
            var hr = $("<hr/>", {
                "class": "connection",
                css: {
                    position: "absolute"
                }
            }).appendTo("body");
            hr.css("transform-origin", 0);
            hr.css("-moz-transform-origin", 0);
            hr.css("-webkit-transform-origin", 0);
            hr.css("-o-transform-origin", 0);

            function fn() {
                var pos = from.offset();
                x0 = pos.left + from.width() / 2;
                y0 = pos.top +
                    from.height() / 2;
                pos = to.offset();
                x1 = pos.left + to.width() / 2;
                y1 = pos.top + to.height() / 2;
                x = x1 - x0;
                y = y1 - y0;
                var w = Math.sqrt(x * x + y * y);
                r = 360 - 180 / Math.PI * Math.atan2(y, x);
                hr.css({
                    left: x0,
                    top: y0,
                    width: w
                });
                hr.css("transform", "rotate(-" + r + "deg)");
                hr.css("-moz-transform", "rotate(-" + r + "deg)");
                hr.css("-webkit-transform", "rotate(-" + r + "deg)");
                hr.css("-o-transform", "rotate(-" + r + "deg)")
            }
            $(window).on({
                resize: fn,
                load: fn
            })
        })
    }
})(jQuery);
$(function() {
    function rand(a) {
        return 5 + Math.floor(Math.random() * a)
    }
    var from;
    $.each(Array(5), function(indx, element) {
        var div = $("<div>", {
            css: {
                top: rand(80) + "%",
                left: rand(80) + "%"
            },
            "class": "one"
        }).appendTo("body");
        from && from.connectionItem({
            to: div
        });
        from = div
    })
});
  </script>
</head>

<body>

</body>

</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить на каком элементе произошло событие hover(или mouseenter)? Boshnik Оффтопик 10 24.03.2014 11:04
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как определить активное окно/вкладку? Chameleon Events/DOM/Window 5 19.03.2012 08:59
как определить событие(click) по элементу foreach jQuery 2 04.03.2011 16:58