Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.04.2015, 13:14
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

вот http://rghost.ru/8S9xXqz2C
Ответить с цитированием
  #12 (permalink)  
Старый 26.04.2015, 13:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от рони Посмотреть сообщение
Moloch,
можно весь макет сразу а не по блочно?
Огласите весь список, пожалуйста
Ответить с цитированием
  #13 (permalink)  
Старый 26.04.2015, 15:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Разрезать картинку
Moloch,
после разрезки растащить в ручную
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .segment {
    position:  relative;
    background: url('http://javascript.ru/forum/images/ca_serenity/misc/logo.gif') no-repeat;
    margin: 0;
    float: left;
  }
  .container {
 		background: url('http://javascript.ru/forum/images/ca_serenity/misc/logo.gif') no-repeat;
 		width: 500px;
 		height: 300px;
 		position: relative;
        background-size:  500px 300px;
        padding: 0;
        margin: 0 auto;
 	}
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  <script>
$(function() {
    var defaultCoords = [],
        el = $(".container");

    function dissectMyFigure(h, l) {
        el.css({
            "background-image": "none"
        });
        var width = el.width() / l - 2,
            height = el.height() / h - 2;
            backgroundSize = el.width()+ 'px ' + el.height() + 'px'

        $.each(Array(h * l), function(indx, element) {
            var div = $("<div/>", {
                "class": "segment",
                "css": {
                    "width": width,
                    "height": height,
                    "border": "1px solid black",
                    "backgroundSize" : backgroundSize
                }
            }).appendTo(el)
        });
        $(".segment").each(function(indx, s) {
            var e = $(s).position();
            var pos_x = e.left;
            var pos_y = e.top;
            defaultCoords[indx] = {
                "pos_x": pos_x,
                "pos_y": pos_y
            };
            $(s).css({
                left: pos_x,
                top: pos_y,
                "background-position-x": "-" +
                    pos_x + "px",
                "background-position-y": "-" + pos_y + "px"
            })
        }).css({
            "position": "absolute"
        }).draggable()
    }
    $("#dissect").on("click", function() {
        dissectMyFigure(5, 3)
    });
    $("#join").on("click", function() {
        $(".segment").each(function(indx, s) {
            var e = $(s);
            e.animate({
                left: defaultCoords[indx]["pos_x"],
                top: defaultCoords[indx]["pos_y"]
            }, 2000, function() {
                e.remove();
                $(".container").css("background-image", 'url("http://javascript.ru/forum/images/ca_serenity/misc/logo.gif")')
            })
        })
    })
});
  </script>
</head>

<body>
<div class="container">

</div>
<p><button id="dissect">Разрезать картинку</button></p>
<p><button id="join">Собрать картинку</button></p>
</body>

</html>

Последний раз редактировалось рони, 04.02.2017 в 11:18.
Ответить с цитированием
  #14 (permalink)  
Старый 26.04.2015, 19:32
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

клево, жаль я сам до этого не додумался. а что происходит вот в этом блоке
$.each(Array(h * l), function(indx, element) {
            var div = $("<div/>", {
                "class": "segment",
                "css": {
                    "width": width,
                    "height": height,
                    "border": "1px solid black",
                    "backgroundSize" : backgroundSize
                }
            }).appendTo(el)

что за параметр Array(h * l)? я в документации по этому методу не нашел.
и че такое backgroundSize? такого правила нету в css

Последний раз редактировалось Moloch, 26.04.2015 в 19:43.
Ответить с цитированием
  #15 (permalink)  
Старый 26.04.2015, 19:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от Moloch
что за параметр Array(h * l)?
Сообщение от Moloch
for (var i =0;i < num;i++) {
тотже for что у вас -- создание нескольких див - h и l можно менять -- но в некоторых случаях удобнее each и обычно делают позицию по номеру строки и столбца -- чтобы не вычислять я использовал float, который сразу дал нужные значения позиции
Ответить с цитированием
  #16 (permalink)  
Старый 26.04.2015, 19:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от Moloch
я в документации по этому методу не нашел
jQuery.each( array, callback )
Ответить с цитированием
  #17 (permalink)  
Старый 26.04.2015, 20:05
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

что такое backgroundSize и для чего он здесь нужен?
Ответить с цитированием
  #18 (permalink)  
Старый 26.04.2015, 20:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Moloch,
чтобы фон в маленьком див был того же размера что в блоке container -- можно заранее вынести в css -- а можно вычислять backgroundSize и контейнера и маленьких див -- тогда код будет универсальным - в расчёте на плагин сделано.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разметка для Google closure compiler monolithed Оффтопик 11 04.09.2013 00:50
Оцените, пожалуйста код вёрстки OlegALL Ваши сайты и скрипты 18 26.07.2011 09:35
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Общие вопросы Javascript 1 13.04.2011 22:09
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Internet Explorer 1 13.04.2011 21:59
Добавить свой метод к элементу alekciy Events/DOM/Window 6 16.02.2009 19:29