Показать сообщение отдельно
  #1 (permalink)  
Старый 29.04.2020, 13:00
Интересующийся
Отправить личное сообщение для Perepelenok Посмотреть профиль Найти все сообщения от Perepelenok
 
Регистрация: 16.07.2016
Сообщений: 26

Случайное положение дочерних елементов
Всем привет! Есть скрипт, дающий возможность зажиманием мышки передвигаться( скролить блок), и рандомно распологая дочерние елементы (img) в этом блоке. Картинок будет много. Как расположить дочерние елементы рандомно, но с растоянием между ними? Проблема на картинках :

Так на данный момент


как добиться этого?


Вот разметка:

<style>
.dragscroll{
    position:relative;
    overflow: hidden;
    width: 100%;
    height: 100vh;
    padding: 20px;
    cursor: -webkit-grab;
    cursor: -moz-grab;
    cursor: -o-grab;
    cursor: grab;
    color: #fff;
    }

</style>
<div class="dragscroll">	
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
 <img src="image.jpg  width="200px" height="auto" style="position:absolute;"></img>
</div>


И вот сам скрипт

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        define(['exports'], factory);
    } else if (typeof exports !== 'undefined') {
        factory(exports);
    } else {
        factory((root.dragscroll = {}));
    }
}(this, function (exports) {
    var _window = window;
    var _document = document;
    var mousemove = 'mousemove';
    var mouseup = 'mouseup';
    var mousedown = 'mousedown';
    var EventListener = 'EventListener';
    var addEventListener = 'add'+EventListener;
    var removeEventListener = 'remove'+EventListener;
    var newScrollX, newScrollY;

    var dragged = [];
    var reset = function(i, el) {
        for (i = 0; i < dragged.length;) {
            el = dragged[i++];
            el = el.container || el;
            el[removeEventListener](mousedown, el.md, 0);
            _window[removeEventListener](mouseup, el.mu, 0);
            _window[removeEventListener](mousemove, el.mm, 0);
        }

        // cloning into array since HTMLCollection is updated dynamically
        dragged = [].slice.call(_document.getElementsByClassName('dragscroll'));
        for (i = 0; i < dragged.length;) {
            (function(el, lastClientX, lastClientY, pushed, scroller, cont){
                (cont = el.container || el)[addEventListener](
                    mousedown,
                    cont.md = function(e) {
                        if (!el.hasAttribute('nochilddrag') ||
                            _document.elementFromPoint(
                                e.pageX, e.pageY
                            ) == cont
                        ) {
                            pushed = 1;
                            lastClientX = e.clientX;
                            lastClientY = e.clientY;

                            e.preventDefault();
                        }
                    }, 0
                );

                _window[addEventListener](
                    mouseup, cont.mu = function() {pushed = 0;}, 0
                );

                _window[addEventListener](
                    mousemove,
                    cont.mm = function(e) {
                        if (pushed) {
                            (scroller = el.scroller||el).scrollLeft -=
                                newScrollX = (- lastClientX + (lastClientX=e.clientX));
                            scroller.scrollTop -=
                                newScrollY = (- lastClientY + (lastClientY=e.clientY));
                            if (el == _document.body) {
                                (scroller = _document.documentElement).scrollLeft -= newScrollX;
                                scroller.scrollTop -= newScrollY;
                            }
                        }
                    }, 0
                );
             })(dragged[i++]);
        }
    }

      
    if (_document.readyState == 'complete') {
        reset();
    } else {
        _window[addEventListener]('load', reset, 0);
    }

    exports.reset = reset;
}));

$( document ).ready(function() {
    $( '.dragscroll img' ).each(function() {

        $holder    = $(this).parent();
        $divWidth  = $holder.width();
        $divHeight = $holder.height();

           $(this).css({
                'left': Math.floor( Math.random() * Number( $divWidth ) ),
                'top' : Math.floor( Math.random() * Number( $divHeight ) )
           });        

    })
});

Последний раз редактировалось Perepelenok, 29.04.2020 в 13:14.
Ответить с цитированием