Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   при нажатии на div открыть картинку большего размера (https://javascript.ru/forum/jquery/52491-pri-nazhatii-na-div-otkryt-kartinku-bolshego-razmera.html)

renegade 22.12.2014 02:33

при нажатии на div открыть картинку большего размера
 
В json массиве хранятся url маленьких и больших картинок. При нажатии на маленький div нужно открыть такую же картинку, но большего размера. Вопрос в следующем как сделать чтобы по клику на div с маленькой картинкой, открывалась большая картинка?
<html>
    <head>
        <title> json </title>
         <meta charset="windows-1251">
         <script type ="text/javascript" src='jquery-2.1.1.min.js'> </script>
         <script type="text/javascript">
             $(function () {
                 var json = {
                     fotos: [
                         {
                             "title": "Картинка 1",
                             "big_url": "big_url1",
                             "thumb_url": "thumb_url1"
                         },
                         {
                             "title": "Картинка 2",
                             "big_url": "big_url2",
                             "thumb_url": "thumb_url2"
                         }
                     ]
                 }
                 for (i = 0; i < json.fotos.length; i++) {
                     var n = "thumb_url"
                     var str = "<img src='" + json.fotos[i].thumb_url + "'>";
                     var divid = "#d00" + (i + 1);
                     console.log(divid);
                     $(divid).append(str);
                 }
             });
        </script>
        <style>
            .divs
            {
                width: 100px;
                height: 100px;
                border: 5px solid #f00;
                background: #fff;
                margin: 20px;
                position: absolute;
            }
            #d001 
            {
                left: 0;
                top: 0;                
            }
            #d002 
            {
                left: 115px;
                top: 0;
            }         
        </style>
   </head>
    <body>       
        <div id ="d001" class='divs'>  
        </div>
        <div id ="d002" class='divs'> 
        </div>      
   </body>
</html>

рони 22.12.2014 02:53

Цитата:

Сообщение от renegade
открывалась большая картинка?

в место маленькой? или как?

рони 22.12.2014 04:05

fancybox + json Oткрыть картинку большего размера по клику на маленькую
 
:write:
<!DOCTYPE html>

<html>
<head>
  <title>json</title>
  <meta charset="utf-8">
  <style>
  body{
    background-color:#0000AD;
  }

  .divs{
    position:relative;
    width:100px;
    height:100px;
    border:5px solid #f00;
    background:#fff;
    margin:20px;
    display:inline-table;
  }

  .divs img{
    cursor:pointer;
    display:block;
  }
  </style>
  <link rel="stylesheet" href="http://fancyapps.com/fancybox/source/jquery.fancybox.css?v=2.1.4" type="text/css" media="screen" />
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script type="text/javascript" src="http://fancyapps.com/fancybox/source/jquery.fancybox.pack.js?v=2.1.4"></script>
  <script type="text/javascript">
          $(function() {
     var json = {
         fotos: [{
             "title": "Картинка 1",
             "big_url": "http://learn.javascript.ru/files/tutorial/browser/events/gallery/img4-lg.jpg",
             "thumb_url": "http://learn.javascript.ru/files/tutorial/browser/events/gallery/img4-thumb.jpg"
         }, {
             "title": "Картинка 2",
             "big_url": "http://learn.javascript.ru/files/tutorial/browser/events/gallery/img5-lg.jpg",
             "thumb_url": "http://learn.javascript.ru/files/tutorial/browser/events/gallery/img5-thumb.jpg"
         }]
     }
     $.each(json.fotos, function(indx, el) {
         var a = $("<a/>", {
                 "class": "divs fancybox",
                 "attr" : {"title" : el.title, "rel" : "group"},
                 "href" : el.big_url
             }),
         img = $("<img/>", {
             "src": el.thumb_url,
             "alt" :  el.title
             });
         a.appendTo('body');
         img.appendTo(a)
     });
    $(".fancybox").fancybox()
  });
  </script>

</head>
<body>
</body>
</html>

danik.js 22.12.2014 05:08

А нафиг генерить разметку скриптом? Никаких преимуществ, только недостатки! Не <div>, а <a>.

рони 22.12.2014 05:37

Цитата:

Сообщение от danik.js
А нафиг генерить разметку скриптом?

это не понял, а как ещё ответ с сервера вывести?
Цитата:

Сообщение от danik.js
Не <div>, а <a>.

может оно по каким-то мне неведомым правилам и верно , но див проще в плане разметки и не требует отмены действий по по умолчанию.
поставил <а> ... danik.js, считает что треба.

renegade 22.12.2014 10:07

По поводу того как должно открываться - новый div перекрывающий остальные и его можно закрыть на крестик, вот пример http://www.cherinfo.ru/news/71057

moskitos80 22.12.2014 10:17

Цитата:

Сообщение от renegade (Сообщение 347583)
По поводу того как должно открываться - новый div перекрывающий остальные и его можно закрыть на крестик, вот пример http://www.cherinfo.ru/news/71057

Так я извиняюсь там fancybox используется. Fancybox - у для работы понадобится такой html-каркас:

<a class="fancybox" rel="group" href="big_image_1.jpg"><img src="small_image_1.jpg" alt="" /></a>
<a class="fancybox" rel="group" href="big_image_2.jpg"><img src="small_image_2.jpg" alt="" /></a>


Вам, уважаемый renegade требуется подключить fancybox и написать код, который всего лишь сгенерит из Ваших входных данных:

...
fotos: [{
             "title": "Картинка 1",
             "big_url": "http://learn.javascript.ru/files/tutorial/browser/events/gallery/img4-lg.jpg",
             "thumb_url": "http://learn.javascript.ru/files/tutorial/browser/events/gallery/img4-thumb.jpg"
         }, {
             "title": "Картинка 2",
             "big_url": "http://learn.javascript.ru/files/tutorial/browser/events/gallery/img5-lg.jpg",
             "thumb_url": "http://learn.javascript.ru/files/tutorial/browser/events/gallery/img5-thumb.jpg"
         }]
...


такую разметку:

<a class="fancybox" rel="group" href="http://learn.javascript.ru/files/tutorial/browser/events/gallery/img4-lg.jpg">
    <img src="http://learn.javascript.ru/files/tutorial/browser/events/gallery/img4-thumb.jpg" alt="" />
</a>
<a class="fancybox" rel="group" href="http://learn.javascript.ru/files/tutorial/browser/events/gallery/img5-lg.jpg">
    <img src="http://learn.javascript.ru/files/tutorial/browser/events/gallery/img5-thumb.jpg" alt="" /></a>


И всего делов то.

рони 22.12.2014 11:41

:write: fancybox добавлен смотреть 3 пост

moskitos80 22.12.2014 11:52

Цитата:

Сообщение от рони (Сообщение 347594)
:write: fancybox добавлен смотреть 3 пост

тем более

danik.js 22.12.2014 13:06

Да блядь че за костыли? Почему нельзя на серваке генерить разметку? Сервак умеет ченить? PHP полюбому умеет, так ведь? Так в чем проблема?

рони 22.12.2014 13:20

Цитата:

Сообщение от danik.js
Почему нельзя на серваке генерить разметку?

вопрос повторный а зачем???? тащить с сервера разметку -- если можно сгенерировать на месте а послать только json со ссылками ?

danik.js 22.12.2014 14:13

Да просто же - noscript, индексация поисковиками (хотя это мало кому нужно). А еще, если не вкурсе, картинки из <img> в браузере сканируются специальным пресканером и начинают подгружаться задолго до полной загрузки страницы. Но вам, создателям тормозных кривых сайтов, откуда такие детали то знать :D

danik.js 22.12.2014 14:18

Вот седня зашел через мобилу на сайт системы Контакт, посмотреть ближайшие пункты. Без js вообще ниче не работает. Даже не выдает алерта что нужно включить js. Включил js. Страничка попыжилась, я с трудом указал адрес, с периодическими подтормаживаниями в несколько секунд, сайт тужился тужился и в итоге браузер вообще упал. До этого я не жаловался, браузер не припомню чтоб вылетал. Ну извините, напишите тогда на сайте: заходить только с девайса не хуже Galaxy S5. А ведь контора занимается денежными переводами, а не вязанием веников. Индусы криворукие.
Ну давайте товарищи, пополняйте их ряды)

рони 22.12.2014 14:41

danik.js,
если json это json -- то зачем серверу посылать разметку - чтобы парсить и вытаскивать нужные элементы и вставлять на страницу, не лучше ли их сгенерировать на месте и сократить трафик, что так что эдак поисковики идут лесом про эти картинки или ты предлагаешь вместо json перезагружать страницу полностью? откуда такая нелюбовь к скриптам, когда ты в них прекрасно разбираешься..?


Часовой пояс GMT +3, время: 22:30.