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

HTML+CSS+JavaScript

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

 

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

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

тема: Не работает предзагрузка изображений
 
 автор: Port_Artur   (03.01.2011 в 19:03)   письмо автору
 
 

Не могу понять почему не работает. Согласно тому что я нашёл в Интернете, - должно работать. Где я ошибся?

<script type="text/javascript">
image1=new Image();
image1.src="http://***/image/bet_black.png";
image2=new Image();
image2.src="http://***/image/bet_rgb.png";
</script>

<b><a href="http://***.ru/?page_id=48" onMouseOver="document.images[pic1].src=image2.src" onMouseOut="document.images[pic1].src=image1.src" ><img src="image1.src" BORDER=0 NAME="pic1">Ссылка</a></b>

  Ответить  
 
 автор: Lelik   (03.01.2011 в 19:12)   письмо автору
 
   для: Port_Artur   (03.01.2011 в 19:03)
 

ну это лучше делать другим способом:
сощдать 2 картинки: одну прозрачный гиф, воторай - те 2 ваши файла слитые в один (одну картинку под другую).

и потом такой код:

<style>
a img {background: url(img.gif) 0 0 no-repeat;}
a:hover img {background: url(img.gif) 0 100% no-repeat;}
</style>
<a href="http://***.ru/?page_id=48"><img src="d-t.gif" width="100" height="100" alt="" border="0" />Ссылка</a>

  Ответить  
 
 автор: Port_Artur   (03.01.2011 в 19:15)   письмо автору
 
   для: Lelik   (03.01.2011 в 19:12)
 

Но у меня таких ссылок 24! Как тогда это будет выглядеть например при 2-х ссылках.
И что прозрачно, d-t.gif или img.gif

И всё же, почему мой пример не работает? Где ошибка?

  Ответить  
 
 автор: Lelik   (03.01.2011 в 19:47)   письмо автору
 
   для: Port_Artur   (03.01.2011 в 19:15)
 

ошибка в матчасти. вместо индекса images[pict1] надо ставить циферку, каким по счёту являестя тот или иной рисунок, например images[0].

но в таком случае прибегать к скриптам это глупость. чтобы лучше понять как сделать меню, разберите пример с работой верхнего меню сайта www.apple.com

  Ответить  
 
 автор: Port_Artur   (03.01.2011 в 20:00)   письмо автору
 
   для: Lelik   (03.01.2011 в 19:47)
 

document.images[pic1].src=image2.src

изображению с именем pic1 присвоить image2.src (как то так)
не понимаю причём тут images[0], - у меня есть и другие изображения на странице.

Помогите исправить мой пример, чтобы работал как должен.

  Ответить  
 
 автор: Lelik   (03.01.2011 в 20:41)   письмо автору
 
   для: Port_Artur   (03.01.2011 в 20:00)
 

блин, мужик, учи матчасть.

document.images[] - это массив ссылок на изображения, которые есть на странице, а в массиве, как известно, индексы идут от 0 и до последнего элеимента: 0, 1, 2, ..., n.

то, что пытаешься прикрутить ты, это глупость, потому как вместо порядкового номера элемента в массиве document.images[], ты ставишь имя этого элемента. Т. е. вместо, например document.images[0], ты пишешь document.images['pic1']. понятна ошибка?

дальше.
делать скриптом, то что можно сделать стилями цсс - это ещё большая ошибка.

твоя задача, прописать стили для рисунка, под разные состояния ссылки. а именно при наведении мышки на ссылку и без наведения мышки на ссылку. для этого надо у рисука в атрибуте src прописать путь к прозрачной картинке, а в фоне, через стили, показывать необходимую тебе.

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

  Ответить  
 
 автор: Port_Artur   (03.01.2011 в 21:40)   письмо автору
 
   для: Lelik   (03.01.2011 в 20:41)
 

Вот это добавил в стиль:

a1 img {background: url(http://***/image/bet_black.png) 0 0 no-repeat;} 
a1:hover img {background: url(http://***/image/bet_rgb.png) 0 100% no-repeat;} 


zero.png - прозрачная картинка

вот такая получилась ссылка:
<a class="a1" href="http://***/?page_id=48"><img src="http://***/image/zero.png" width="64" height="40" alt="" border="0" />Бет</a>


Но никаких изображений нет! Текст конечно сдвинулся на ширину картинки, и всё ничего не видно что наводи, что отводи. Может что-то не так в стиле? Что означает в "a1:hover" значение 100%?

  Ответить  
 
 автор: Lelik   (03.01.2011 в 22:24)   письмо автору
 
   для: Port_Artur   (03.01.2011 в 21:40)
 

Мущина, ты шутки тут шутишь, чтоле? :)

ты как стили написал? для того чтоб написать стили для элемента надо писать так:

a {...}


для элемента с классом надо писать с точкой:

.class_name {...}
.class_name:hover {...}
или
a.class_name {...}
a.class_name:hover {...}


для элемента с id надо писать через диез:

#elem_id {...}
#elem_id:hover {...}
или
a#elem_id {...}
a#elem_id:hover {...}



напиши свои стили в соответсвиями с правилами цсс (судя по уровню познаний, тебе необходимо ознакомится с учебником по цсс)


Что означает в "a1:hover" значение 100%?
читай о свойстве background и подробнее о процентах в нём.

ЗЫ. я тебе о процентах говорил для случая если слепить 2 картинки (одну обычную, вторую для наведения) в одну.

  Ответить  
 
 автор: Port_Artur   (03.01.2011 в 23:04)   письмо автору
 
   для: Lelik   (03.01.2011 в 22:24)
 

Lelik, спасибо за ваше терпение. Про классы вы объяснили всё доходчиво, - теперь всё работает.
Огромное спасибо.

  Ответить  
 
 автор: Port_Artur   (03.01.2011 в 23:40)   письмо автору
 
   для: Port_Artur   (03.01.2011 в 23:04)
 

Lelik, но это же не предзагрузка. Сейчас добавляю изображения, и когда навожу курсор на новую ссылку с картинкой появляется у курсора вращающий кружок, т.е. идёт загрузка изображения.
А как чтобы сразу было загружено?

  Ответить  
 
 автор: Lelik   (04.01.2011 в 00:14)   письмо автору
 
   для: Port_Artur   (03.01.2011 в 23:40)
 

для этого надо лепить 2 картинки в одну.

т. е. при загрузке старицы она загружается, а потому уже изменением background-position ты показуешь необходимый участок фона.

пример:
2 картинки 20 на 20 собираем в фотошопе в одну картинку 20 пх шириной и 40 пх высотой.

далее в рисунок 20 на 20 стиваим эту картинку фоном. а при наведении мышки на ссылку пишем стиль картинки, что бы показывать фон не сверху, а снизу.

ещё раз рекомендую изучить пример верхнего меню на сайте apple.com. скачай файр баг для мозиллы ФФ и с помощью его посмотри какие стили, какие фоновые картини, и что да как :)

  Ответить  
 
 автор: Port_Artur   (04.01.2011 в 00:26)   письмо автору
 
   для: Lelik   (04.01.2011 в 00:14)
 

Я только не понял, почему там background-position: -515px (кстати и в Опера 11 тоже можно происпектировать).

<li id="gn-ipad">
<a href="/ipad/">iPad</a>
</li>


#globalheader #globalnav li#gn-ipad a { 
background-position: -515px 0px;
}


У меня получится сдвоенная картинка шириной 64 и высотой 80, т.е. одна картинка 64 на 40 пикселей. Подскажите пожалуйста как мне записать стиль.

вот мой рабочий вариант
a.show1 img {background: url(http://***/image/bet_black.png) 0 0 no-repeat;} 
a.show1:hover img {background: url(http://***/image/bet_rgb.png) 0 0 no-repeat;}


<a class="show1" title="***" href="http://***/?page_id=217"><img src="http://***/image/zero.png" width="64" height="40" alt="" border="0" />Текст</a>

  Ответить  
 
 автор: Lelik   (04.01.2011 в 01:00)   письмо автору
 
   для: Port_Artur   (04.01.2011 в 00:26)
 

почитай по ссылкам выше, я их не просто так сюда прикручивал

a.show1:hover img {background: url(http://***/image/bet_rgb.png) 0 100% no-repeat;} 


только вместо bet_rgb.png напиши имя нового файла и везде где надо

  Ответить  
 
 автор: Агамемнон   (04.01.2011 в 13:11)   письмо автору
 
   для: Port_Artur   (04.01.2011 в 00:26)
 

Сюда зайди:тут доходчиво описано,как без всякой предзагрузки... http://htmlbook.ru/faq/kak-sdelat-chtoby-kartinka-menyalas-pri-navedenii-na-nee

  Ответить  
Rambler's Top100
вверх

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