Проблема с плагином предварительного просмотра изображений Jquery - PullRequest
0 голосов
/ 07 апреля 2010

У меня проблема с предварительным просмотром изображения , которое появляется, когда вы наводите курсор на миниатюру.Я могу изменить расстояние между предварительным просмотром и курсором, но если эскиз находится рядом с боковой частью окна, предварительный просмотр не может поместиться, и вы видите только его часть ... надеюсь, это имеет смысл ...

есть ли способ сделать так, чтобы, если предварительный просмотр не помещался, он отображался на другой стороне курсора? ....

Вот сценарий ...

this.imagePreview = function() {
    /* CONFIG */
    xOffset = 10;
    yOffset = 30;
    // these 2 variable determine popup's distance from the cursor
    // you might want to adjust to get the right result
    /* END CONFIG */
    $("a.preview").hover(function(e) {
        this.t = this.title;
        this.title = "";
        var c = (this.t != "") ? "<br/>" + this.t : "";
        $("body").append("<p id='preview'>
  <img src='" + this.href + "' alt='Image preview' />" + c + "</p>");
        $("#preview")
            .css("top", (e.pageY - xOffset) + "px")
            .css("left", (e.pageX + yOffset) + "px")
            .fadeIn("slow");
    },
    function() {
        this.title = this.t;
        $("#preview").remove();
    });
    $("a.preview").mousemove(function(e) {
        $("#preview")
            .css("top", (e.pageY - xOffset) + "px")
            .css("left", (e.pageX + yOffset) + "px");
    });
};
// starting the script on page load
$(document).ready(function() {
    imagePreview();
});

РЕДАКТИРОВАТЬ: посмотреть, что я получаю,

http://img202.imageshack.us/img202/4991/browserpreviewf.jpg

мое изображение в правом углу страницы, поэтому, когда я наведите курсор на изображение, мой предварительный просмотридет еще дальше вправо, что помимо полосы прокрутки страницы, половина предварительного просмотра доступна .... Как получить предварительный просмотр слева от курсора ..

Ответы [ 4 ]

3 голосов
/ 13 апреля 2010

Я бы предложил использовать плагин всплывающей подсказки , который сделает всю грязную работу за вас . Есть дюжины доступных , я покажу вам, как это сделать с помощью jQuery Tooltip .

При условии, что у вас есть следующая разметка:

  <ul>
    <li><a href="bigimage.jpg"><img src="preview.jpg" /></a></li>
    <li><a href="big2.jpg"><img src="prev2.jpg" /></a></li>
  </ul>

Я думаю, вы поняли идею (ссылка на большое изображение, ссылка для предварительного просмотра - ссылка). Тогда вы можете использовать плагин всплывающей подсказки следующим образом:

$(document).ready(function() {
    $('img').tooltip({
        bodyHandler: function() {
            return $("<img/>").attr("src", $(this).parent().attr("href"));
        }
    });
});

(у него есть множество опций, которые вы все можете проверить на демонстрационной странице ).

Это может потребовать некоторого объяснения. Каждый раз, когда должна отображаться подсказка, плагин выполняет функцию bodyHandler. Мы используем эту функцию для генерации HTML-кода, который будет содержать подсказка. Итак, волшебство, которое происходит здесь, заключается в том, что мы извлекаем URL-адрес большого изображения из гиперссылки и создаем новое изображение с тем же src на лету. Это изображение затем отображается как всплывающая подсказка.

Конечно, вы можете генерировать там любой (вложенный) HTML, включая заголовки и т. Д., Но для демонстрации этого должно быть достаточно.

Вы можете проверить результат здесь!

(все, что вы видите, это чистый CSS, так что не волнуйтесь, вы можете настроить его под свои требования)

1 голос
/ 13 апреля 2010

Пример ниже не совсем то, что вы спрашиваете ... но он делает что-то похожее ...

if(e.pageX <= $(document).width()/2){
    $("#preview")
        .css({"top": (e.pageY - xOffset) + "px",
             "left": (e.pageX + yOffset) + "px",
             "right":""});
}
else{
    $("#preview")
        .css({"top": (e.pageY - xOffset) + "px",
             "right": ($(document).width() - e.pageX + yOffset) + "px",
             "left":""});
}

Если курсор находится на правой стороне страницы, предварительный просмотр будет идти влево. Если курсор находится на левой стороне страницы, он переместится вправо.

Вам придется поиграть с логикой и позиционированием, чтобы понять все правильно.

0 голосов
/ 10 апреля 2010

Вы также можете использовать свойство

screen.availWidth

, чтобы получить ширину области отображения браузера ...

Это свойство возвращает ширину минус пространство, занимаемое полосами прокрутки и другим компонентом окна.что может присутствовать ....

И от макушки головы .... При настройке положения предварительного просмотра вместо установки верхнего и левого, вы можете попробовать установить верхнее и правое при вычисленииположение кончика инструмента больше ширины окна ..?

0 голосов
/ 07 апреля 2010

Вы можете поиграть с шириной окна, используя (например):

window.innerWidth

У вас есть переменная xOffset и ваша e.pageY, чтобы вы могли что-то из этого сделать

if (e.pageX + xOffset > (window.innerWidth - <somevalue>){....

В сторону: вы хотите сделать это:

e.pageX + yOffset

т.е. добавить и X и Y значения?

...