Как стать автором
Поиск
Написать публикацию
Обновить

Java Script. Простейшая галерея изображений

Создание простейшей галереи изображений на Java Script



Данная статья рассчитана на новичков только начавших изучать язык Java Script. В ней я опишу основные шаги создания простой галереи изображений.

Итак, приступим:

1. Создадим html документ и назовем его: gallery.html. В нем напишем следующее:

<script src = "gal.js"></script>
 <html>
    <head>
      <title> Gallery </title>
    </head>
     <body>
	<center>
        <img src = "" width = "640" height = "480"  id = "img" > </img> <br />
        <img src = "left_arrow.jpg"   onClick = "javascript: left_arrow()" /> 
	<img src = "right_arrow.jpg"  onClick = "javascript: right_arrow()" />
       </center>
    </body>
 </html>



Мы создаем картинку с размером «640x480». Фиксированный размер задаем для того,
чтобы изображение не смещалось, если оно будет иметь больший размер.
Затем добавляем 2 изображения стрелок, на которые накладываем 2 события(onClick).


2. Создадим файл gal.js. В нем напишем несколько функций:


var mas = ["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg"] // массив картинок
var to = -1;  // Счетчик, указывающий на текущую картинки

function right_arrow() // Открытие следующей картинки(движение вправо)
{ 
 var obj = document.getElementById("img");
  if (to < mas.length-1)  to++ 
   else
     to = 0;
     obj.src = mas[to];	 
}

function left_arrow() // Открытие предыдущей картинки(движение влево)
{     
 var obj = document.getElementById("img");
if (to > 0) to--;
  else
    to = mas.length-1;
    obj.src = mas[to];	  			 
}



Вот мы и создали простую галерею.
Теперь немного усложним ее. Пусть при обновлении страницы последняя открытая картинка
будет отображаться. Воспользуемся cookie(в нем будет хранится № последней картинки).

3. Улучшим файл gal.js

var mas = ["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg"]
var to = -1;  // Счетчик, указывающий на текущую картинки

function right_arrow() // Открытие следующей картинки(движение вправо)
{ 
 var obj = document.getElementById("img");
  if (to < mas.length-1)  to++ 
   else
     to = 0;
     obj.src = mas[to];	 
     setCookie("foo", mas[to] , "", "/");	 // запоминаем текущую картинку
}

function left_arrow()
{     
 var obj = document.getElementById("img");
if (to > 0) to--;
  else
    to = mas.length-1;
    obj.src = mas[to];	  
    setCookie("foo", mas[to] , "", "/");	 // запоминаем текущую картинку
}

function setCookie(name, value, expires, path, domain, secure) // Ф-ция создания куки
{
 if (!name || !value) return false;
    var str = name + '=' + encodeURIComponent(value);
        if (expires) str += '; expires=' + expires.toGMTString();
        if (path)    str += '; path=' + path;
        if (domain)  str += '; domain=' + domain;
        if (secure)  str += '; secure';
  document.cookie = str;
  return true;
}
	 
function getCookie(name)   // Ф-ция получения куки
{
  var pattern = "(?:; )?" + name + "=([^;]*);?";
  var regexp  = new RegExp(pattern);	     
    if (regexp.test(document.cookie))
	    return decodeURIComponent(RegExp["$1"]);  
	    return false;
}


function Load()   // Ф-ция загрузки "сохраненной" картинки
{
var cook_val = getCookie("foo");  // Получаем значение куки по имени
 for (var i = 0 ; i < mas.length; i++)
 {
    if (mas[i] == cook_val)   // Как только встретилась
     {
      document.getElementById("img").src = mas[i];   // Загружаем картинку
      to = i;  // Задаем текущее значение счетчику
      break // выходим
     }	
  }		
} 


<i>
Важно: Затем в тег body  gallery.html добавим событие onLoad = "Load()".
</i>


Все готово.

Подробнее о cookies можно прочитать тут

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

Используемые ссылки:
http://www.codenet.ru/webmast/js/Cookies.php" (Cookies)
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.