Подгрузить картинку после вызова модального окна.
Добрый день!
Задача стоит приблизительно следующая: На странице есть 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, время: 06:37. |