Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Плавное увеличение картинки


Автор: TwiSteR 3.4.2006, 17:11
Приветствую уважаемые,
Подскажите как реализовать субж.
В джабаскрипте новичёк.

Автор: 12345c 3.4.2006, 17:25
 В 2 словах не подскажешь.
Если нужен пример, укажите, какой (в виде примера на HTML) или поищите похожее на http://js2.ru/article4.shtml#scripts, а затем приходите с вопросом. 

Автор: GIK 3.4.2006, 17:26
Цитата

Приветствую уважаемые,
Подскажите как реализовать субж.
В джабаскрипте новичёк.

Тысяча реализаций, вот одна из них.
Моя колбасная.
Внимание smile без пива не читать smile .
Код

<html>
 <head>
  <script type="text/javascript">
   <!--

   var topTime;
   var thisTop;
   var thisLeft;
   var thisWidth;
   var maxLeft;
   var thisID;




           var period;                        
     var NthisTop; 
     var NthisLeft; 
     var NthisWidth;    
          
    
    var NNNNNNNNNNNNNNNNNNNNNN=1;
 function f4(obj,t,l,w,ml,ID) { if(NNNNNNNNNNNNNNNNNNNNNN==1){NNNNNNNNNNNNNNNNNNNNNN=0; 
  thisTop=t; thisLeft=l; thisWidth=w; maxLeft=ml; thisID=ID;

 //Начальные значения Для установки по истечении трех секунд
 NthisTop=t; NthisLeft=l; NthisWidth=w;  
 
  topTime=window.setInterval("topStyle()",1);
  }
}
   function topStyle() {
if(thisTop<43) //До максимального Top значения! и одновременное увеличение width и left!!! 
{ document.getElementById(thisID).width=++thisWidth;
 document.getElementById(thisID).style.top=++thisTop; 
} else
  if(thisLeft<maxLeft) {
 document.getElementById(thisID).style.left=++thisLeft;
 document.getElementById(thisID).width=++thisWidth;  }
if(thisLeft==maxLeft) 
{ 
 period=window.setInterval("f1212()", 3000);  clearInterval(topTime);} //Остановка после дохождения до максимума.

} 

  
//***********************************44444444444444444555555555555555555555444444444444
  //Использую bool значения для вызова, два раза т.к. setInterval вызывает функции сразу :)
    var boolVizov=true;
   
                   function f1212(){
    if (boolVizov) {
    boolVizov=false;
  } else if (!boolVizov){   
   document.getElementById(thisID).style.left=NthisLeft;
   document.getElementById(thisID).width=NthisWidth; 
   document.getElementById(thisID).style.top=NthisTop;
    window.clearInterval(period); NNNNNNNNNNNNNNNNNNNNNN=1;  
}

}

                  
 
 //************************************************************************
 
   var topTime2;
   var thisTop2;
   var thisRight2;
   var thisWidth2;
   var maxRight2;
   var thisID2;
   
              
                    var period2;                        
     var NthisTop2; 
     var NthisRight2; 
     var NthisWidth2;      
  function f1(obj,t,r,w,mr,ID) { if(NNNNNNNNNNNNNNNNNNNNNN==1){NNNNNNNNNNNNNNNNNNNNNN=0; 
  thisTop2=t; thisRight2=r; thisWidth2=w; maxRight2=mr; thisID2=ID;

 //Начальные значения Для установки по истечении трех секунд
 NthisTop2=t; NthisRight2=r; NthisWidth2=w;  
 
  topTime2=window.setInterval("topStyle2()",1);
  }
}
   function topStyle2() {
if(thisTop2<43) //До максимального Top значения! и одновременное увеличение width и left!!! 
{ document.getElementById(thisID2).width=++thisWidth2;
  document.getElementById(thisID2).style.top=++thisTop2; 
} else
  if(thisRight2<maxRight2) {
 document.getElementById(thisID2).style.right=++thisRight2;
 document.getElementById(thisID2).width=++thisWidth2;  }
if(thisRight2==maxRight2) 
{ 
 period2=window.setInterval("f12122()", 3000);  clearInterval(topTime2);} //Остановка после дохождения до максимума.

} 

 //***********************************44444444444444444555555555555555555555444444444444
  //Использую bool значения для вызова, два раза т.к. setInterval вызывает функции сразу :)
    var boolVizov2=true;   
                   function f12122(){
    if (boolVizov2) {
    boolVizov2=false;
  } else {   
   document.getElementById(thisID2).style.right=NthisRight2;
   document.getElementById(thisID2).width=NthisWidth2; 
   document.getElementById(thisID2).style.top=NthisTop2;
    window.clearInterval(period2); NNNNNNNNNNNNNNNNNNNNNN=1;  //Как установим нужные значения Нам Этот таймер больше НЕ нужен  
  } 
}


        

//-->
 </script>
   </head>
 <body id="bod" bgcolor='#009983'>
   
   
 <img src="img\1.jpg" id="img1" width=120 style="position:absolute;top:21;left:30;" onMouseOver="f4(this,21,30,120,102,'img1')">
 <img src="img\2.jpg" id="img2" width=120 style="position:absolute;top:21;left:155;" onMouseOver="f4(this,21,155,120,201,'img2')">
 <img src="img\3.jpg" id="img3" width=120 style="position:absolute;top:21;left:280;" onMouseOver="f4(this,21,280,120,301,'img3')">
 <img src="img\4.jpg" id="img4" width=120 style="position:absolute;top:21;left:405;" onMouseOver="f4(this,21,405,120,501,'img4')">
 <img src="img\5.jpg" id="img5" width=120 style="position:absolute;top:21;right:100;" onMouseOver="f1(this,21,100,120,123,'img5')">
 <img src="img\6.jpg" id="img6" width=120 style="position:absolute;top:21;right:223;" onMouseOver="f1(this,21,223,120,333,'img6')">
 <img src="img\7.jpg" id="img7" width=120 style="position:absolute;top:21;right:345;" onMouseOver="f1(this,21,345,120,433,'img7')">

</body>
</html>

Автор: GIK 3.4.2006, 17:45
Блин, всетаки преборщил.
Щас что нибуть по проще с обяснениями организую smile

Автор: GIK 3.4.2006, 18:04
Код

<html>
<head>
  <script type="text/javascript">
   <!--
 var MuviTime; // Переменная для таймера
 var Width=120;
 var thisId;

 function GenerationMuvi(ID){ //Функция для запуска таймера
  thisId=ID; //передаем значение ID глобальной переменной, для того чтобы использовать ее в других функциях  
  MuviTime=window.setInterval("MuviImg1()", 100); //Вызываем функцию через каждые 1/10 сек.
 }
 function MuviImg1(){ 
 Width++;   //Инкрементируе Width
 document.getElementById(thisId).width=Width //Обращаемся к эллементу 
 if(Width==200)   //Как дойдем до 200, останавливаем текущие вызовы и вызываем другую функцию
    { 
       clearInterval(MuviTime); //Останавливаем таймер
       MuviTime=window.setInterval("MuviImg2()",100);
     }
}
  function MuviImg2(){ 
 Width--;   //Декрементируем  Width
 document.getElementById(thisId).width=Width //Обращаемся к эллементу 
 if(Width==120)   //Как доходим до 120, останавливаем текущие вызовы и вызываем другую функцию
    { 
       clearInterval(MuviTime); //Останавливаем таймер
       MuviTime=window.setInterval("MuviImg1()",1000);
     }
}             
//-->
 </script>
   </head>
 <body id="bod" bgcolor='#009983'>
   
   
<img src="img\1.jpg" id="img1" width=120 style="position:absolute;stop:50;left:50" onMouseOver="GenerationMuvi(this.id)">   
</body>
</html>

Автор: TwiSteR 3.4.2006, 19:42
GIK,
Что-то не так работает
Вот сам посмотри
http://www.elektropribor.org/index.php?act=catalog&cid=1&pid=1

Автор: TwiSteR 3.4.2006, 20:06
Вот тут на форуме нашел такой код
Код


function resize(img,w,h,step) {
    dresize.target=img;
    dresize.width=img.offsetWidth;
    dresize.xstep=(w-img.offsetWidth)/step;
    dresize.height=img.offsetHeight;
    dresize.ystep=(w-img.offsetHeight)/step;
    dresize.step=step;
    dresize.timer=window.setInterval(dresize,10);
}
function dresize() {
    dresize.target.style.width=Math.round(dresize.width+=dresize.xstep);
    dresize.target.style.height=Math.round(dresize.height+=dresize.ystep);
    if(--dresize.step<=0) window.clearInterval(dresize.timer);
}


но он для уменьшения и что странно картинка вообще потом пропадает.[code=javascript]

Автор: TwiSteR 3.4.2006, 20:46
Вообщем решилось так
Код

function resize(img,w,h,step) {
    dresize.target=img;
    dresize.width=img.offsetWidth;
    dresize.xstep=(w+img.offsetWidth)/step;
    dresize.height=img.offsetHeight;
    dresize.ystep=(w+img.offsetHeight)/step;
    dresize.step=step;
    dresize.timer=window.setInterval(dresize,10);
}
function dresize() {
    dresize.target.style.width=Math.round(dresize.width+=dresize.xstep);
    dresize.target.style.height=Math.round(dresize.height+=dresize.ystep);
    if(--dresize.step<=55) window.clearInterval(dresize.timer);
}

НО вот как не позволить пользователю увеличить картинку больше чем в один раз.
Т.е. клик по картинке действовал бы один раз.

Автор: 12345c 3.4.2006, 22:04
Какой код HTML для запуска?

Автор: TwiSteR 3.4.2006, 22:05
Цитата(12345c @ 3.4.2006, 22:04 Найти цитируемый пост)
Какой код HTML для запуска?

Код

<td align="center" ><img src="images/mercedes.jpg" onClick="resize(this,1,1,100)" width=220 height=145></td>

Автор: 12345c 4.4.2006, 00:18
Вот интересная модификация:
Код
<script>function resize(img,w,h,step) {
    //if(dresize.resized<0)return;
    if(dresize.step)return;
    dresize.target=img;
    dresize.width=img.offsetWidth;
    dresize.xstep=(w+img.offsetWidth*dresize.resized)/step;
    dresize.height=img.offsetHeight;
    dresize.ystep=(w+img.offsetHeight*dresize.resized)/step;
    dresize.step=step;
    dresize.timer=window.setInterval(dresize,10);
}
function dresize() {
    dresize.target.style.width=Math.round(dresize.width+=dresize.xstep);
    dresize.target.style.height=Math.round(dresize.height+=dresize.ystep);
if(--dresize.step<=55){window.clearInterval(dresize.timer);
    dresize.resized=-dresize.resized;}
}dresize.resized=1;</SCRIPT>

<td align="center" ><img src="snow.gif" onClick="resize(this,1,1,100)" width=220 height=145></td>
Чтобы не уменьшалась, надо раскомментировать 2-ю строчку.
3-я строчка - убирание бага на случай нажатия на картинку 2-3-4 раза.

Автор: espltd 10.10.2012, 07:43
Ребята! Всем добрый день! Помогите пожалуйста. Я в состоянии отчаяния уже. Дело в том, что я не достаточно знаю яваскрипт и поэтому не могу выполнить не которые задачи. Вчера пришел злой начальник и сказал увеличить картинки на сайте при нажатии на них. Много инфы по этому поводу почитал, и везде написано, что нужно 2 изображения - маленькое и большое. У нас интернет магазин и каталог товаров огромный. Я же не могу сейчас копии 100 тыс. товаров делать. Есть ли какой то другой выход. Допустим у каждого товара есть одна картинка среднего размера и при нажатии яваскрипт увеличивает её. Именно подобный способ, т.к. мне просто физически не сделать такой объем работы с 2-мя картинками. Я капец как запутался уже. Спасибо, заранее. Очень надеюсь на вас.   Вот кстати на этом интернет магазине мне необходимо реализовать данную задачу. ссылка удалена 
Администраторы! Ссылка не в рекламных целях. Правда! Очень нужна помощь!

Автор: Aliance 10.10.2012, 10:20
espltd, поиск в гугле по слову lightbox

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)