Jump to content
  • 0

jQuery grayscale


okunev2
 Share

Question

Использую на сайте данный скрипт https://github.com/josefrichter/jquery-grayscale

Картинки у меня jpg.

Проблема в том что при загрузке страницы, все равно "моргают" цветным фото, а иногда вообще не видно их. После втрой загрузки страницы более или менее работает. На медленно интернете вообще проблема.

Куда копать? Может есть другие решения? Спрайт из картинок не предлагать, это вариант не подходит.

Буду очень благодарен за пинок в нужном направлении.

Link to comment
Share on other sites

22 answers to this question

Recommended Posts

  • 0

Сначала загружаются картинки, потом яваскрипт. Всё честно. Способов решения я вижу несколько:

1. После загрузки грейскал, менять картинку не сразу а плавно, что будет более эстетично смотреться.

2. Загружать картинки с помощью яваскрипта. Соответственно, вначале у вас картинки не будут отображаться, а после загрузки яваскрипта, отобразить их, опять же сделать плавное появление.

3. В стилях дать картинкам visibility: hidden; А уже яваскриптом менять на visible. (ну и опять же, делать плавное их появление) ИМХО даже эффектней будет.

  • Like 1
Link to comment
Share on other sites

  • 0
Сначала загружаются картинки, потом яваскрипт. Всё честно. Способов решения я вижу несколько: 1. После загрузки грейскал, менять картинку не сразу а плавно, что будет более эстетично смотреться. 2. Загружать картинки с помощью яваскрипта. Соответственно, вначале у вас картинки не будут отображаться, а после загрузки яваскрипта, отобразить их, опять же сделать плавное появление. 3. В стилях дать картинкам visibility: hidden; А уже яваскриптом менять на visible. (ну и опять же, делать плавное их появление) ИМХО даже эффектней будет.

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

Link to comment
Share on other sites

  • 0

я думаю что в 25-й строке и после 53-й

А что именно?

единственный минус данного способа - при отключенном js картинки и не появятся + боты их могут не скушать

Т.е. боты поисковых систем, котрые индексируют картинки?

Link to comment
Share on other sites

  • 0

при отключеном js можно показывать оригинальные картинки, т.е. убрать правило visibility: hidden

А что именно?

$this.css('visibility', 'visible');

если js отключен, то данный код не сработает, лучше

this.style='visibility:hidden;'

Edited by Switch74
Link to comment
Share on other sites

  • 0

у вас по умолчанию картинки скрыты через css, если js отключен, то у вас и не появятся картинки

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

this лишь указывает на объекты которые нужно скрыть, можно заменить чем угодно

так же могу предложить такой вариант:

document.write(<style>img{visibility:hidden;}</style>);

Исполнение другое - результат тот же

так же хочу заметить, что в вашем контексте тоже не понятно что за this

Edited by Switch74
  • Like 1
Link to comment
Share on other sites

  • 0

у вас по умолчанию картинки скрыты через css, если js отключен, то у вас и не появятся картинки

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

this лишь указывает на объекты которые нужно скрыть, можно заменить чем угодно

так же могу предложить такой вариант:

document.write(<style>img{visibility:hidden;}</style>);

Исполнение другое - результат тот же

так же хочу заметить, что в вашем контексте тоже не понятно что за this

это в теории, а рабочий пример в сети можно увидеть?

Link to comment
Share on other sites

  • 0

мой this это $(this), а Ваш это просто this - это разные объекты и они естественно никак не могут быть равны, не зря же оборачивают в $.

и естественно Вы предлагали исполнять js, если js отключен, я на это среагировал.

если js отключен, то данный код не сработает, лучше this.style='visibility:hidden;'

ну и в том контексте, где я написал так же не сработает и Ваш вариант при отключеном js.

так же могу предложить такой вариант: document.write();

этот вариант я думаю неплох

Edited by Zippovich
Link to comment
Share on other sites

  • 0

Простите, но думаю вы меня не правильно поняли:

css: img {visibility: hidden}

в файле grayscale.js - когда обработает фото сделать visibility: visible

в этом случае при отключенном js ваш скрипт не отработает и не сделает картинки видимыми, следовательно они будут скрыты.

я предлагал через js скрывать картинки

this.style='visibility:hidden;

и с вашим утверждением я полностью соглашусь

если js отключен, то Ваш код тоже не сработает, поэтому лучше так как я написал - там есть уже готовый объект jQuery $this, а Ваш this в контексте не будет то что предполагается.

но с одним но - если мой код не сработает, картинки останутся как есть и будут показываться

а так же хочу заметить, что this и $(this) - это одно и тоже а так как $this=$(this), то и this=$this

еще момент

при отключеном js можно показывать оригинальные картинки, т.е. убрать правило visibility: hidden

как вы собираетесь убрать его при отключенном js из css?

Простите, что запутался сам и вас запутал

Edited by Switch74
Link to comment
Share on other sites

  • 0

да, я не так понял что Ва написали, и все таки

если докапываться, то $(this) не равно this, $(this) - это функция, в которую передается this и возвращает он объект совсем не равный this.

на самом деле я бы не заморачивался с отключенным js

если посмотреть что ТС пытается сделать, то это делать нужно не на js, а на серверном уровне, это будет гораздо быстрее

Link to comment
Share on other sites

  • 0
:) в качестве селектора передаете this в $(this) и он возвращает объект для jquery в котором и есть this по мне разницы ноль через что вы ссылаетесь на объект, т.к. обе ссылки указывают на один и тот же объект, просто вы работаете через jquery я же через чистый js, а чистый js считаю лучшим вариантом из-за того, что jquery отработает только после загрузки Edited by Switch74
Link to comment
Share on other sites

  • 0

я имел то что в $(this) есть много того что нет в this и сравнивать их некорректно, хотя $(this) содержит все что есть в this.

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy