Подгрузить картинку после вызова модального окна.
Добрый день!
Задача стоит приблизительно следующая: На странице есть 6 модальных окон, которые содержат большие и тяжелые изображения. Грузить их сразу нет никакого смысла, поэтому хочу подгружать их только при вызове модалки. Модальное окно: <div data-wow-delay="0.2s" class="grid_4 wow fadeInRight"> <div class="single_image" onclick="document.getElementById('win1').style.display='block';$('html,body').css('overflow','hidden');"> <img src="http://livedemo00.template-help.com/wt_55108/images/page-4_img01.jpg" alt=""> <div class="image_overlay"> <a href="">View Full Project</a> <h2>drawing</h2> <h4>with pencil colors</h4> </div> </div> </div> <div class="dm-overlay" id="win1" onclick="document.getElementById('win1').style.display='none';$('html,body').css('overflow','auto');"> <div class="dm-table"> <div class="dm-cell"> <div class="dm-modal cyan"> <a href="#close" class="close"></a> <h3>Модальный блок №3 абсолютно по центру.(тест)</h3> <img src="http://sdlweb.ru/img/09-Villa.jpg"> <p>Окно выводится строго по центру, тест</p> </div> </div> </div> </div> Я новичок, сильно не ругайте! |
|
огромное спасибо за ответ, но это не совсем то, что бы я хотел.
|
DartV,
что мешает прописать в картинках маленький прелоадер а по клику менять прелоадер на большую картинку? |
Не вижу в этом выход. Можно ведь просто подгружать аяксом при клике в мою модалку?
|
Цитата:
<div data-wow-delay="0.2s" class="grid_4 wow fadeInRight"> <div class="single_image" onclick="var d = document.getElementById('win1');d.querySelector('img').src='http://sdlweb.ru/img/09-Villa.jpg';d.style.display='block';$('html,body').css('overflow','hidden');return false;"> <img src="http://livedemo00.template-help.com/wt_55108/images/page-4_img01.jpg" alt=""> <div class="image_overlay"> <a href="">View Full Project</a> <h2>drawing</h2> <h4>with pencil colors</h4> </div> </div> </div> <div class="dm-overlay" id="win1" onclick="document.getElementById('win1').style.display='none';$('html,body').css('overflow','auto');return false;"> <div class="dm-table"> <div class="dm-cell"> <div class="dm-modal cyan"> <a href="#close" class="close"></a> <h3>Модальный блок №3 абсолютно по центру.(тест)</h3> <img src="http://pampinta.com/imgs/img_loader.gif"> <p>Окно выводится строго по центру, тест</p> </div> </div> </div> </div> |
Что бред? )
Придумал вот такую реализацию для себя: <script> function content_dop_img() { document.getElementById('content_dop_img').innerHTML = '<img src="http://sdlweb.ru/img/09-Villa.jpg">'; } </script> <div id="content_dop_img"></div> Всё ли верно я сделал? Повторюсь, я только начал изучать JS! |
DartV,
как проще всего смотрите 6 пост ... зачем грузить что-то кроме src? |
Цитата:
Ну и ещё вопрос, как это все содержимое onclick убрать из html кода непосредственно в файл js? |
DartV,
$(function() { var $overlay = $(".dm-overlay"); $(".single_image").on("click", function(event) { event.preventDefault(); $overlay.show().find("img")[0].src = "http://sdlweb.ru/img/09-Villa.jpg"; $("html,body").css({ "overflow": "hidden" }) }); $overlay.on("click", function(event) { event.preventDefault(); $overlay.hide(); $("html,body").css({ "overflow": "auto" }) }) }); |
рони,
Огромное спасибо! Всего на страничке 6 модалок и в каждой своя картинка: <div class="dm-overlay" id="win1" ... <div class="dm-overlay" id="win2" ... <div class="dm-overlay" id="win3" ... <div class="dm-overlay" id="win4" ... <div class="dm-overlay" id="win5" ... <div class="dm-overlay" id="win6" ... Как это учесть? |
DartV,
<div class="single_image" data-src="http://sdlweb.ru/img/09-Villa.jpg" $(function() { var $overlay = $(".dm-overlay"), $single = $(".single_image"); $single.on("click", function(event) { event.preventDefault(); var i = $single.index(this); $overlay.eq(i).show().find("img")[0].src = $(this).data('src'); $("html,body").css({ "overflow": "hidden" }) }); $overlay.on("click", function(event) { event.preventDefault(); $overlay.hide(); $("html,body").css({ "overflow": "auto" }) }) }); |
Странно, но теперь при клике по блоку не вызывается модалка. Что-то сломалось. Всё 3 раза перепроверил и откатывал обратно.
|
DartV,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <style type="text/css"> .dm-overlay { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; margin: 0 auto; width: 200px; height: 200px; } </style> <script> $(function() { var $overlay = $(".dm-overlay"), $single = $(".single_image"); $single.on("click", function(event) { event.preventDefault(); var i = $single.index(this); $overlay.eq(i).show().find("img")[0].src = $(this).data('src'); $("html,body").css({ "overflow": "hidden" }) }); $overlay.on("click", function(event) { event.preventDefault(); $overlay.hide(); $("html,body").css({ "overflow": "auto" }) }) }); </script> </head> <body> <div data-wow-delay="0.2s" class="grid_4 wow fadeInRight"> <div class="single_image" data-src="http://sdlweb.ru/img/09-Villa.jpg"> <img src="http://livedemo00.template-help.com/wt_55108/images/page-4_img01.jpg" alt=""> <div class="image_overlay"> <a href="">View Full Project</a> <h2>drawing</h2> <h4>with pencil colors</h4> </div> </div> </div> <div class="dm-overlay"> <div class="dm-table"> <div class="dm-cell"> <div class="dm-modal cyan"> <a href="#close" class="close"></a> <h3>Модальный блок №3 абсолютно по центру.(тест)</h3> <img src="http://pampinta.com/imgs/img_loader.gif"> <p>Окно выводится строго по центру, тест</p> </div> </div> </div> </div> <div data-wow-delay="0.2s" class="grid_4 wow fadeInRight"> <div class="single_image" data-src="http://sdlweb.ru/img/09-Villa.jpg"> <img src="http://livedemo00.template-help.com/wt_55108/images/page-4_img01.jpg" alt=""> <div class="image_overlay"> <a href="">View Full Project 2</a> <h2>drawing</h2> <h4>with pencil colors</h4> </div> </div> </div> <div class="dm-overlay"> <div class="dm-table"> <div class="dm-cell"> <div class="dm-modal cyan"> <a href="#close" class="close"></a> <h3>Модальный блок №3 абсолютно по центру.(тест) 2</h3> <img src="http://pampinta.com/imgs/img_loader.gif"> <p>Окно выводится строго по центру, тест</p> </div> </div> </div> </div> </body> </html> |
Я понял в чем беда. В дургих блоках у меня слудующая конструкция:
<div data-wow-delay="0.4s" class="grid_4 wow fadeInRight"> <div data-wow-delay="0.2s" class="grid_4 wow fadeInLeft"> Я верно понимаю, что data-wow-delay="0.4s" как раз мешает открытию модалки? Как это поправить? |
DartV,
изучить селекторы и поправить код согласно вашему html |
Цитата:
|
рони,
Прошу прощения, все заработало! Я не учел, что <div class="dm-overlay"> ... нужно скопировать 6 раз. Возможно ли сделать всего 1 контейнер <div class="dm-overlay"> , а в нём только подменять картинку? |
Цитата:
убрать .eq(i) и var i = $single.index(this); |
рони,
ещё раз спасибо! |
Часовой пояс GMT +3, время: 05:36. |