Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Большое превью
 
 автор: KPETuH   (22.01.2008 в 15:14)   письмо автору
 
 

Заказчик предложил чтоб при наведение мышки на маленькую картинку сразу бы показывало большую как бы превью, подскажите как сделать (сам я в Jscript полный профан)

   
 
 автор: CNT   (22.01.2008 в 17:17)   письмо автору
 
   для: KPETuH   (22.01.2008 в 15:14)
 

<img onmouseover="ДЕЙСТВИЕ (this)" onmouseout="ОТМЕНА ДЕЙСТВИЯ (this)">

А вот какое именно "действие" - решать вам, ибо показывать картинку РЕАЛЬНОГО размера на той же странице, где и имеется маленькая - полнейший кретинизм (ничего личного): вся страница будет "прыгать", предоставляя место под новый графический образ.

Открывать картинку РЕАЛЬНОГО размера следует в каком-то специально отведенном для этого месте на странице (или в новом окне).
В зависимости от выбранного способа будет меняться код "действия".
Когда выберете - сообщите. Дам код.

   
 
 автор: KPETuH   (22.01.2008 в 19:01)   письмо автору
 
   для: CNT   (22.01.2008 в 17:17)
 

не настолько профан это то я как раз знаю, мне конкретно надо чтоб открывалось в новом окне или типа в новом окне :), но хотелось бы чтоб это все делалось быстро...

   
 
 автор: coloboc66   (22.01.2008 в 17:18)   письмо автору
 
   для: KPETuH   (22.01.2008 в 15:14)
 

Можно по событию наведения мыши добавлять div с z-index=+1 к body методом appendChild, потом методом removeChild убирать.

   
 
 автор: KPETuH   (22.01.2008 в 19:02)   письмо автору
 
   для: coloboc66   (22.01.2008 в 17:18)
 

если можно напишите поконкретнее...

   
 
 автор: CNT   (22.01.2008 в 19:57)   письмо автору
 
   для: KPETuH   (22.01.2008 в 19:02)
 

Смотрите, например, здесь

   
 
 автор: KPETuH   (22.01.2008 в 20:28)   письмо автору
 
   для: CNT   (22.01.2008 в 19:57)
 

это я видел громоздкая система мне чего нить пороще....

   
 
 автор: elenaki   (22.01.2008 в 20:29)   письмо автору
 
   для: KPETuH   (22.01.2008 в 20:28)
 

есть thickbox

   
 
 автор: KPETuH   (22.01.2008 в 20:43)   письмо автору
 
   для: elenaki   (22.01.2008 в 20:29)
 

понимаете мне не нужны все эти навароты затемнение и тд... всего лишь показ картинки полного размер в новом окне без всяких отрибутов.

   
 
 автор: CNT   (22.01.2008 в 21:08)   письмо автору
 
   для: KPETuH   (22.01.2008 в 20:43)
 

Новое окно - оно проблемы приносит - тайтл там не убрать в IE7 и прочая лабуда.

Простейший, ИМХО, способ - вешать саму новую картинку в виде слоя с "верхним" z-index.
А для лучшего позиционирования необходимо задать известные вам (это же - ВАШИ картинки, их размеры вы должны знать) линейные размеры реальных картинок:
<script>
function AddPic (PicURL, PicWidth, PicHeight)
{
var t = document.createElement ('img');
with (t) {id = 'RealPic'; src = PicURL}
with (t.style)
   {
   width =  PicWidth + 'px';
   height = PicHeight + 'px';
   zIndex = 999;
   position = 'absolute';
   left = Math.max (50, (document.body.offsetWidth - PicWidth) / 2);
   top = Math.max (50, (document.body.offsetHeight - PicHeight) / 2);
   border = '15px solid red';
   }
objPic = document.body.appendChild (t);
}
function RemovePic ()
{
if (document.getElementById ('RealPic'))
   document.body.removeChild (document.getElementById ('RealPic'));
}
</script>

<img src="http://www.google.com/images/nav_logo3.png"
   onmouseover="AddPic ('http://www.google.com/intl/en_ALL/images/logo.gif', 276, 110)"
   onmouseout="RemovePic ()">

   
 
 автор: KPETuH   (23.01.2008 в 06:16)   письмо автору
 
   для: CNT   (22.01.2008 в 21:08)
 

большое спасибо работает

но возникает в связи с этим еще дополнение можно ли определить реальный размер картинки и местоположение. То есть чтобы не передавать урл и размер. На странице будет выводиться картинка в маштабе а при наведение будет показываться реальный размер этой же картинки...

вообще возможно обратиться к элементу не зная его id или имени или номера в массиве эелементов, то есть конкретно к тому элементу действия с которым запускают javascript...

   
 
 автор: CNT   (23.01.2008 в 12:46)   письмо автору
 
   для: KPETuH   (23.01.2008 в 06:16)
 

<script>
function AddPic (x)
{
var t = document.createElement ('img');
with (t) {id = 'RealPic'; src = x.src}
with (t.style) {zIndex = 999; position = 'absolute'; border = '15px solid red'}
var s = document.body.appendChild (t);
with (s)
   {
   style.left = Math.max (50, (document.body.offsetWidth - offsetWidth) / 2);
   style.top = Math.max (50, (document.body.offsetHeight - offsetHeight) / 2);
   }
}
function RemovePic ()
{
if (document.getElementById ('RealPic'))
   document.body.removeChild (document.getElementById ('RealPic'));
}
</script>

<img src="http://www.google.com/intl/en_ALL/images/logo.gif"
   width="10%"
   onmouseover="AddPic (this)"
   onmouseout="RemovePic ()">
PS. Указывать %% и для ширины, и для длины одновременно не надо: браузеру достаточно %% для одного измерения, второе он "подгонит" самостоятельно.

   
 
 автор: KPETuH   (23.01.2008 в 13:54)   письмо автору
 
   для: CNT   (23.01.2008 в 12:46)
 

спасибо!!! большое но я от вас сегодня не отстану :) помогите мне еще чуток :)

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

   
 
 автор: CNT   (23.01.2008 в 14:20)   письмо автору
 
   для: KPETuH   (23.01.2008 в 13:54)
 

Если прямо в коде (и максимально-допустимая ширина принята за 200px), то так:
<img src="..." onload="with (this) if (offsetWidth > 200) style.width = '200px';">

Разумеется, это не лучший вариант, ибо дергаться страница будет (в случае большого размера картинки, который потом уменьшится).
В идеале все картинки следует предзагрузить, а уж только потом формировать страницу, зная, какие из картинок будут равны именно 200px, а какие - впишутся в это ограничение сами.
Но это - если надо - в следующий раз.
Ибо надоело на сегодня благотворительностью заниматься :-)

   
 
 автор: KPETuH   (23.01.2008 в 14:46)   письмо автору
 
   для: CNT   (23.01.2008 в 14:20)
 

нет вы немного не поняли.... не на странице, а в том скрипте который вы мне написали, чтоб большая копия показывалась не больше заданного размера а если картинка меньше то 100% размера...

   
 
 автор: CNT   (24.01.2008 в 12:10)   письмо автору
 
   для: KPETuH   (23.01.2008 в 14:46)
 

Перепишите функцию так:
function AddPic (x)
{
var t = document.createElement ('img');
with (t) {id = 'RealPic'; src = x.src}
with (t.style) {zIndex = 999; position = 'absolute'; border = '15px solid red'}

var s = document.body.appendChild (t);
var limitWidth = 100; //предел картинки по ширине в пикселях
with (s)
   {
   if (offsetWidth > limitWidth)
      {
      var k = limitWidth / offsetWidth;
      style.height = offsetHeight * k + 'px';
      style.width = limitWidth + 'px';
      }
   style.left = Math.max (50, (document.body.offsetWidth - offsetWidth) / 2);
   style.top = Math.max (50, (document.body.offsetHeight - offsetHeight) / 2);
   }
}

   
 
 автор: KPETuH   (24.01.2008 в 12:37)   письмо автору
 
   для: CNT   (24.01.2008 в 12:10)
 

спасибо большое, будете мимо Омска проезжать заглядывайте в гости :) отблагодарю :)

   
 
 автор: KPETuH   (23.01.2008 в 12:00)   письмо автору
 
   для: CNT   (22.01.2008 в 21:08)
 

еще такой вопрос можно ли средствами jscript узнать реальные размеры картинки а не те что заданы в теге img

   
 
 автор: sim5   (23.01.2008 в 12:16)   письмо автору
 
   для: KPETuH   (23.01.2008 в 12:00)
 


<script>
var ims = new Image();
ims.src = 'filename.ext';
alert(ims.width+'x'+ims.height)
</script>

   
 
 автор: KPETuH   (23.01.2008 в 12:21)   письмо автору
 
   для: sim5   (23.01.2008 в 12:16)
 

вот смотрите

<script> 
function AddPic (RealID) 

var t = document.createElement ('img');
var im=document.getElementById(RealID); 
with (t) {id = 'RealPic'; src = im.src} 
with (t.style) 
   { 
   width =  im.width + 'px'; 
   height = im.height + 'px'; 
   zIndex = 999; 
   position = 'absolute'; 
   left = Math.max (50, (document.body.offsetWidth - im.width) / 2); 
   top = Math.max (50, (document.body.offsetHeight - im.width) / 2); 
   border = '1px solid red'; 
   }
objPic = document.body.appendChild (t); 

function RemovePic () 

if (document.getElementById ('RealPic')) 
   document.body.removeChild (document.getElementById ('RealPic')); 

</script> 

<img src="1.jpg" id='q' width='10%' height='10%'
   onmouseover="AddPic ('q')" 
   onmouseout="RemovePic ()">

мне нужно чтоб изображение выводилось при наведении в реальном размере а оно выводиться по прежнему в 10%

   
 
 автор: sim5   (23.01.2008 в 13:27)   письмо автору
 
   для: KPETuH   (23.01.2008 в 12:21)
 

Добавить:
var ob = new Image();
ob.src = im.src;
И укажите размеры картинке этого объекта:
with (t.style)
{
width = ob.width;
height = ob.height;
Добавлять рх не надо. И не мешало бы позиционирование создаваемого изображения привязать к курсору, а то бяка получается. )

   
 
 автор: aexb   (24.01.2008 в 15:57)   письмо автору
 
   для: KPETuH   (22.01.2008 в 15:14)
 

Как раз пишу макет для проекта.
http://alheniul.ru
Реализована именно ваша идея, но все открывается на той же странице. Задавайте вопросы по скрипту и верстке - отвечу

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования