Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » СпецЭффекты Javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

phpcoder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Думаю большинство пользователей винды периодически заходят на Windows Updates.
Там при выборе обновлений из списка есть две кнопки: "Добавить" и "Удалить". Очень интересный эффект при работе этих кнопок. Уж не знаю на чём это написано, JavaScript или же VBScript или же вместе со страницой какой-нить контрол подгружается для IE, но хотелось бы знать как такое чудо сотворить. Если есть примерчики, было бы вообще замечательно.

Всего записей: 194 | Зарегистр. 23-05-2004 | Отправлено: 11:25 15-08-2004
Sherman



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в Microsoft наверное используется behaviors(клиентский скриптинг только для IE). там и возможностей поболее, и намой взгляд это проще и удобнее при больших объемах(свыше нескольких сотен строк) кода.
 
что и как смотри в MSDN.

Всего записей: 27 | Зарегистр. 23-02-2004 | Отправлено: 15:40 15-08-2004
arreke



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите пожалуйста как вот такой эффект делается ?
 
на многих шаблонных сайтах с подобным сталкивался
при нажатии на маленький рисунок появляется большой как бы в новом слое, при этом всё остальное содержимое страницы вроде бы и видно но не доступно, как будто на заднем слое
не хотел в чужом коде ковырятся, лучше самому написать
 
собственно уже начал:
 

Код:
 
<div style='width: 600px; height: 400px; background: URL(../img/ajax_loader_il.gif) center no-repeat'>
  <img src='image.jpg' alt='' style='visibility: hidden' onLoad='this.style.visibility = "visible"'>
</div>
 

 
до полной загрузки фотографии смотрим на маленькую статус картинка ( loading )
а как вот этот чёрный слой делается?
ещё лучше это сделано на этом сайте, тут они ещё добавили кнопку NEXT и эфект загрузки рисунка интересней смотрится

Всего записей: 98 | Зарегистр. 11-01-2007 | Отправлено: 00:15 19-02-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
arreke

Цитата:
при нажатии на маленький рисунок появляется большой как бы в новом слое, при этом всё остальное содержимое страницы вроде бы и видно но не доступно, как будто на заднем слое  

ну и ? делаете слой размером с окно и большим z-index
если не лень разбираться - вот писал когда то.. отрубает и скроллы при этом - не так, как по ссылкам

Код:
// preload loading image
var img=new Image()
img.src='/images/loading_image.gif'
var old_over
function image_preview(url, obj)
{var defv=1
if(typeof url=='object') {obj=url;url=defv}
if(typeof url=='number'&&obj&&obj.src)  
  if(obj.src.lastIndexOf('/')!=-1)
   url=obj.src.substr(0,obj.src.lastIndexOf('/')+1)+obj.src.substr(obj.src.lastIndexOf('/')+1+url)
var w=get_ww(),h=get_wh(), scroll=getScrollXY()
var bropacity=(document.all&&!window.opera&&!document.createTextRange)?"filter: alpha(opacity=80);":(!window.opera?"-moz-opacity: 0.8;":"opacity: 0.8;")
var div=document.createElement('div')
div.style.cssText=bropacity+'width:'+w+'px;height:'+h+'px;position:absolute;top:'+scroll[1]+'px;left:'+scroll[0]+'px;background-color:#222222;z-index:100'
div.id='hide_bg'
document.body.appendChild(div)
div=document.createElement('div')
div.style.cssText='width:'+w+'px;height:'+h+'px;position:absolute;top:'+scroll[1]+'px;left:'+scroll[0]+'px;cursor:pointer;z-index:101'
div.innerHTML='<table width="100%" height="100%" border="0"><tr><td valign="middle" align="center" style="background: transparent url(/images/loading_image.gif) no-repeat center center"><img id="preview_image" src="'+url+'" style="visibility:hidden" onload="fix_preview_size();this.style.visibility=\'visible\'"></td></tr></table>'
div.id='preview_pic'
div.onclick=hide_preview
div.title='Click to close'
document.body.appendChild(div)
old_over=document.body.style.overflow
document.body.style.overflow='hidden'
myEvent(window,"resize",fix_preview_size,"+")
//FF fix
window.scrollTo(scroll[0],scroll[1])
}
function hide_preview()
{
var test=document.getElementById('preview_pic')
if(test)document.body.removeChild(test)
test=document.getElementById('hide_bg')
if(test)document.body.removeChild(test)
document.body.style.overflow=old_over==''?'auto':old_over
var scroll=getScrollXY()
//FF fix
window.scrollTo(scroll[0],scroll[1])
myEvent(window,"resize",fix_preview_size)
}
function fix_preview_size()
{
var w=get_ww(),h=get_wh(),obj=document.getElementById('hide_bg')
if(obj){obj.style.width=w+'px';obj.style.height=h+'px'}
obj=document.getElementById('preview_pic')
if(obj){obj.style.width=w+'px';obj.style.height=h+'px'}
obj=document.getElementById('preview_image')
if(obj){if(obj.width>w||obj.height>h)
       {var c=(obj.height!=0?obj.height:1)/(obj.width!=0?obj.width:1)
    if((obj.width!=0?obj.width:1)/w>(obj.height!=0?obj.height:1)/h)
    {obj.height=w*c;obj.width=w}else{obj.height=h;obj.width=h/c}
    }
    }
}
function get_ww()
{var frameWidth=800
if (self.innerWidth)
    frameWidth = self.innerWidth
else if (document.documentElement && document.documentElement.clientWidth)
    frameWidth = document.documentElement.clientWidth
else if (document.body)
    frameWidth = document.body.clientWidth
return frameWidth
}
function get_wh()
{var frameHeight=640
if (self.innerHeight)
    frameHeight = self.innerHeight
else if (document.documentElement && document.documentElement.clientHeight)
    frameHeight = document.documentElement.clientHeight
else if (document.body)
    frameHeight = document.body.clientHeight
return frameHeight
}
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    scrOfY = window.pageYOffset
    scrOfX = window.pageXOffset
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    scrOfY = document.body.scrollTop
    scrOfX = document.body.scrollLeft
  } else if( document.documentElement &&
      ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    scrOfY = document.documentElement.scrollTop
    scrOfX = document.documentElement.scrollLeft
  }
  return [ scrOfX, scrOfY ]
}
function myEvent(where,evt, func, op)
{if (op=="+")
  {if (where.attachEvent) where.attachEvent("on"+evt,func)
  else if (where.addEventListener) where.addEventListener(evt,func,false)}
  else {if (where.detachEvent) where.detachEvent("on"+evt,func)
  else if (where.removeEventListener) where.removeEventListener(evt,func,false)}
}

аргументы url, obj - я уже и не помню что делал..  
а, вспомнил.. в общем если передается объект (картинка), то берется адрес ее и вырезается указанное количество букв из имени файла. по умолчанию - одна.
то есть если картинка /imgs/sPicture.jpg
то скрипт будет грузить большую картинку как /imgs/Picture.jpg
 
ps: на оригинальность и красоту не претендую


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:17 19-02-2009 | Исправлено: Cheery, 00:26 19-02-2009
arreke



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2Cheery, спасибо, приятно разбираться в коде професионалов, ставиш и всё работает как надо.
Возникла проблема когда загружались большие картинки то loading_image.gif покидал центр, иногда выходил и за пределы броузера, если загружается очень большая картинка.
Подредактировал функцию image_preview(), вместо изменения свойства visibility подгрузил рисунок во временную перемунную new_img и после загрузки рисунка менял src нашего img на url :
 

Код:
 
div.innerHTML='<table width="100%" height="100%" cellpadding=0 cellspacing=0 border="0"><tr><td valign="middle" align="center" style="background: transparent URL(../img/loading_image.gif) center no-repeat"> <img id="preview_image" alt="" style="visibility: hidden"> </td></tr></table>';
div.id='preview_pic';
div.onclick=hide_preview;
div.title='Click to close';
document.body.appendChild(div);
var new_img = new Image();
new_img.onload = function () {
    document.getElementById('preview_image').src = url;
    document.getElementById('preview_image').style.visibility = 'visible';
    fix_preview_size();
};
new_img.src = url ;
 

 
щяс другая проблема, это дело закрывается через div.onclick=hide_preview а как сделать чтобы по нажатию на картинку не закрывалось, только за пределами картинки?
 
пробовал <img src='blablabla' onClick='return false'> - не помогает
 
Добавлено:
немножко не в эту тему, но нужно для решение этой же задачи
вобщем нужно чтобы сначала грузились нужные рисунки, потом всё остальное
сделал вот так:
 

Код:
 
var my_images = new Array();
function setImage ( imageURL ) {  
    my_images.push( new Image() );
    my_images[ my_images.length - 1 ].src = imageURL ;  
}
setImage( '../img/ajax_loader_not_ok_bl.gif' );
setImage( '../img/ajax_loader_ok_bl.gif' );
 

 
вобщем работает, но мне кажется что при каждой загрузке страницы одни и те же рисунки загружаются поновой, а надо если такой рисунок уже загружался ранее, то чтобы он в кеше сохранился, а не загружался поновой как это у меня происходит

Всего записей: 98 | Зарегистр. 11-01-2007 | Отправлено: 12:37 20-02-2009 | Исправлено: arreke, 12:39 20-02-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
arreke

Цитата:
Возникла проблема когда загружались большие картинки то loading_image.gif покидал центр, иногда выходил и за пределы броузера, если загружается очень большая картинка.  

не делал для больших..и вроде бы масштабировало, не помню.
 

Цитата:
щяс другая проблема, это дело закрывается через div.onclick=hide_preview а как сделать чтобы по нажатию на картинку не закрывалось, только за пределами картинки?  

нужно проверять кто сгенерил событие.
 

Цитата:
вобщем работает, но мне кажется что при каждой загрузке страницы одни и те же рисунки загружаются поновой, а надо если такой рисунок уже загружался ранее, то чтобы он в кеше сохранился, а не загружался поновой как это у меня происходит

он и должен браться их кэша. если "кажется" - смотрим заголовки обмена информации с сервером

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:37 20-02-2009
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
подскажите пожалуйста как вот такой эффект делается ?

выбирайте: http://planetozh.com/projects/lightbox-clones/
))

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 21:46 20-02-2009
Arch1S



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
подскажите пожалуйста как вот такой эффект делается ?

это простой эффект, и библиотек очень много, а эти мелкие библиотеки выдраны с больших фреймворков, тоесть юзайте jQuery, Prototype или же MooTools

Всего записей: 93 | Зарегистр. 21-02-2009 | Отправлено: 04:53 22-02-2009
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » СпецЭффекты Javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru