2016-02-18 6 views
0

У меня есть фиксированный DIV, который содержит изображение в качестве фона, как этогоDraggable фонового изображения с фоном размером: крышка

<div style=' 
    width:230px; 
    height:230px; 
    background-repeat: no-repeat; 
    background-image:url(img/myimage.jpeg) 
    background-size: cover;'></div> 

Изображения перекрывает Div-поле. Пользователь должен иметь возможность перетаскивать изображение и новое фокусное положение : координаты должны быть доступны через jQuery сразу после того, как пользователь освободит мышь. Моя цель состоит в том, чтобы создать очень простой дерьмо эффект изображения так же, как в фейсбуке:

enter image description here

Как я могу achive это? И возможно ли даже показать переполненный фон с размером фона: обложка?

+0

Используйте firebug и переместите его, после чего вы увидите позицию –

+0

. Большинство изображений - соотношение 4: 3, если вы хотите его преобразовать 1: 1, тогда вам нужно использовать ((3/4) * ширину изображение) = высота изображения. и вам нужно определить ширину самостоятельно. –

+0

@MiomirDancevic Я хочу разработать интерфейсное решение для пользователей моего сайта – Adam

ответ

1

Вы можете использовать этот Plugin и попробовать

element.backgroundDraggable() 

Здесь у вас есть demo

+0

Плагин больше не поддерживается, но его исправление делает правильные вещи. Я проверю код js и попытаюсь выяснить, как вывести координаты фонового положения. – Adam

+0

Также нет возможности сделать видимое изображение прозрачным через прозрачный слой. – Adam

1

Вам нужно обрабатывать mousemove события на DIV, и вычислить новый background-position оттуда.

Вот пример, чтобы вы начали: http://codepen.io/dghez/pen/ItxKE

Чтобы увидеть, если левая кнопка мыши нажата в mousemove обработчиком (для имитации сопротивления), проверьте e.buttons === 1 (MDN)

Update:

Модифицированный mousemove обработчик из примера, который позволяет перетаскивать фона (в то время как раздражающе выделения текста в то же время ...):

... 
$(".title").mousemove(function(e) { 
    if(e.buttons === 1) { 
     mouseX = e.offsetX; 
     mouseY = e.offsetY; 
     traX = mouseX + 1640; 
     traY = mouseY + 200; 
     //console.log(traX, traY); 
     $(".title").css({"background-position": traX + "px " + traY + "px"}); 
    } 
}); 
+0

Спасибо, это потрясающе. Но два вопроса: 1) Что использовать вместо mousemove, если я хочу только перемещать элемент при щелчке и когда курсор находится на изображении? 2) Не могли бы вы объяснить, почему вы вычисляете новую позицию X как traX = ((4 * mouseX)/570) + 40; ? – Adam

+0

1) Вы проверяете свойство 'e.buttons', о котором я упомянул в своем ответе. Я обновил ответ с помощью обработчика mousemove, который ближе к тому, что вы пытаетесь сделать. 2) Это не мой код, это просто пример, который я нашел. Но .. * 4/570 просто говорит, насколько фон должен двигаться по сравнению с движением мыши, а + 40 - смещение * - он говорит, где фон должен быть, когда мышь находится в координате (0,0). Опять же, мое обновление должно быть ближе к тому, что вы хотите. – Sphinxxx

Смежные вопросы