Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.01.2014, 20:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Загрузка картинки лучшего качества по клику
код в минималистическом стиле ))) -- вместо всякой хрени поставьте ссылки на картинки с низким качеством - по клику появится прелодер, когда картинка лучшего качества загрузится сработает css трансформация и исчезнет прелодер
по второму клику картинка займёт прежнее место загружать больше не будет.
... картинки не вечны и onerror не предусмотрен, можно использовать как простой увеличитель по клику))) css настройте по своему вкусу.
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .gallery img{
    width: 150px;
    height: 100px;
    float:left;
    -webkit-transition: all 3s ease-in-out;
    -moz-transition: all 3s ease-in-out;
    -o-transition: all 3s ease-in-out;
    -ms-transition: all 3s ease-in-out;
    transition: all 3s ease-in-out;
  }
  img.loading{
    width: 100px;
    height: 70px;
    position: absolute;
  }
  </style>
  <script>
window.onload = function () {
    function k(c) {
        c = c.getBoundingClientRect();
        var a = document.body,
            b = document.documentElement,
            e = c.left + (window.pageXOffset || b.scrollLeft || a.scrollLeft) - (b.clientLeft || a.clientLeft || 0);
        return {
            top: Math.round(c.top + (window.pageYOffset || b.scrollTop || a.scrollTop) - (b.clientTop || a.clientTop || 0)),
            left: Math.round(e)
        }
    }
    for (var h = function () {
        var c, a = document.createElement("fakeelement"),
            b = {
                transform: "transform",
                OTransform: "OTransform",
                MozTransform: "MozTransform",
                webkitTransform: "webkitTransform",
                msTransform: "msTransform"
            };
        for (c in b)
            if (void 0 !== a.style[c]) return b[c];
        return "transform"
    }(), n = function (c) {
            var a = g[c],
                b = new Image,
                f = a.parentNode;
            b.src = "http://pampinta.com/imgs/img_loader.gif";
            return function l() {
                var d = k(a);
                b.style.left = 20 + d.left + "px";
                b.style.top = 40 + d.top + "px";
                b.classList.add("loading");
                f.appendChild(b);
                d = new Image;
                d.addEventListener("load", function () {
                    function d() {
                        e && (e.style[h] = "");
                        this.style[h] = e == this ? (e = null, "") : (e = this, "scale(3) translateY(100px) translateX(" + (100 + -50 * c) + "px)")
                    };
                    f.removeChild(b);
                    a.src = this.src;
                    a.removeEventListener("click", l, !1);
                    a.addEventListener("click", d, !1);
                    d.call(a)
                }, !1);
                var g = a.getAttribute("data-src") || m[c] || a.src;
                d.src = g + "?" + Math.random();//убрать + "?" + Math.random() если нужен кеш
                d.complete && d.onload()
            }
        }, g = document.querySelectorAll(".gallery img"), //картинки для которых нужна загрузка
           m = ["http://stat17.privet.ru/lr/0a0cd32bec610080b2aea5cb20b0ff4e",//массив ссылок src лучшего качества - можно прописать ссылку в data-src самой картинки - можно не прописывать нигде,оставить пустой массив
                "http://w7t.ru/zooms/7da1/7/6168262b44.jpg",
                "http://luxfon.com/large/201203/5938.jpg",
                "http://picsfab.com/download/image/15310/1920x1200_kubok-fifa.jpg",
                "http://www.vashsad.ua/i/gallery/wallpapers/24/1280_800/L558J859.jpg"], e, f = 0; f < g.length; f++) {
        var p = g[f],
            q = n(f);
        p.addEventListener("click", q, !1)
    }
};
  </script>
</head>

<body>
<div class="gallery">
<img src="http://frame3.loadup.ru/44/bf/1027325.2.3.jpg" alt="" data-src='http://cdn.desktopwallpapers4.me/wallpapers/cartoons/1366x768/2/13700-puss-in-boots-shrek-1366x768-cartoon-wallpaper.jpg'/>
<img src="http://frame3.loadup.ru/44/bf/1027325.2.3.jpg" alt="" />
<img src="http://frame3.loadup.ru/44/bf/1027325.2.3.jpg" alt="" />
<img src="http://frame3.loadup.ru/44/bf/1027325.2.3.jpg" alt="" />
<img src="http://frame3.loadup.ru/44/bf/1027325.2.3.jpg" alt="" />
</div>
</body>
</html>

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка контента в центральный фрейм по клику в tree.Panel sergeyv ExtJS 9 06.09.2013 20:40
Как запустить крутящийся бегунок пока идет загрузка картинки в Jquery alex_fk jQuery 6 19.07.2013 14:02
Загрузка картинки в ВК tveve Элементы интерфейса 0 08.07.2013 17:58
Как сделать так чтобы показывалось загрузка картинки sarik Общие вопросы Javascript 15 18.02.2013 11:27
получить адрес картинки по клику saxap Общие вопросы Javascript 3 13.11.2012 12:32