Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Что если пользователь запретил показ изображений на страницах? (https://javascript.ru/forum/xhtml-html-css/25204-chto-esli-polzovatel-zapretil-pokaz-izobrazhenijj-na-stranicakh.html)

Simba 28.01.2012 18:03

Что если пользователь запретил показ изображений на страницах?
 
Как правильно верстать в таких случаях? Располагать текст за картинками?
Если да, то как правильно это сделать?
Есть ли кроссбраузерный вариант решения?

ksa 28.01.2012 18:23

Цитата:

Сообщение от Simba
Что если пользователь запретил показ изображений на страницах?

Значит он увидит то, что он увидит... :D

melky 28.01.2012 18:25

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

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

Pavel M. 28.01.2012 23:39

Цитата:

Сообщение от melky
или же обрамить их в div с той же целью. с div даже можно будет задать цвет, таким образом показав, что "тут была картинка"

можно в div и не обрамлять, зачем лишний элемент, просто в стилях img все прописать
<img src="xxx" alt="Картинка" style="width:200px; height:100px; background:gray; color:white; display:block;">

Раед 29.01.2012 00:21

Цитата:

Сообщение от Pavel M.
в стилях img все прописать

а зачем 'display:block'. IMG ведь инлайновый элемент

T-sh 29.01.2012 00:41

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

Если изображение исключительно для декорации (элемент дизайна) — альтернативный текст не требуется, достаточно сохранить структуру и разметку документа (форматирование, габариты, отступы).

Pavel M. 29.01.2012 12:35

Цитата:

Сообщение от Раед (Сообщение 153777)
а зачем 'display:block'. IMG ведь инлайновый элемент

поставьте display:inline-block, если это нужно
без display:... бывает FF размеры, даже если они указаны не держит когда не может загрузить изображение

trikadin 29.01.2012 12:38

А вот кстати - если у пользователя отключён вывод изображений, можно ли его вывести в canvas?

melky 29.01.2012 14:14

Цитата:

Сообщение от trikadin (Сообщение 153892)
А вот кстати - если у пользователя отключён вывод изображений, можно ли его вывести в canvas?

хороший вопрос... НЕТ (там канвас, я отключил показ картинок в хроме.. и шиш)

trikadin 29.01.2012 14:21

Так. То есть, отключение показа изображений так же "отключает" канвас на странице? Вообще никакие средства графического отображения использовать не получится?

Aetae 29.01.2012 14:35

Зачем извращаться. Если юзер отключает картинки знач ему это надо. Пусть мучается.))

Вообще я последнее время отрубаю сss нафиг. Стократ удобнее читать.)

Pavel M. 29.01.2012 14:40

Цитата:

Сообщение от trikadin (Сообщение 153908)
Так. То есть, отключение показа изображений так же "отключает" канвас на странице? Вообще никакие средства графического отображения использовать не получится?

векторная графика работает http://raphaeljs.com/tiger.html

trikadin 29.01.2012 14:57

Цитата:

Сообщение от Aetae
Вообще я последнее время отрубаю сss нафиг. Стократ удобнее читать.)

Диоген детектед.

А вообще, по теме - мне просто интересно, как они (браузеры) поступают.

T-sh 31.01.2012 02:21

Цитата:

Сообщение от Pavel M. (Сообщение 153911)
векторная графика работает http://raphaeljs.com/tiger.html

не работает. Opera 11.52

trikadin 31.01.2012 07:49

Вот это точно сработает)
http://www.romancortes.com/blog/homer-css/

Nanto 02.02.2012 18:07

trikadin,
CSS получится :)
Некоторые на нём рисуют.
Как вариант: делать таблицы с размером ячейки в один пиксель и задавать каждой бэкграунд (через JS, например) - тормозить будет жутко! Но зато можно втюхать наглому юзеру изображения.

trikadin 02.02.2012 18:31

Nanto, я знаю, спасибо) В своё время писал рисовалку на дивах)

Хотя этот вариант всё равно извращённый. И, к тому же, придётся разбирать изображение на пиксели на сервере и присылать их в текстовом виде, что немного дофига)

Aetae 02.02.2012 19:14

Цитата:

Сообщение от trikadin (Сообщение 154821)
И, к тому же, придётся разбирать изображение на пиксели на сервере и присылать их в текстовом виде, что немного дофига)

Ну, гипотетически, посылать можно в пожатом виде и парсить js'ом.))

trikadin 02.02.2012 20:45

Цитата:

Сообщение от Aetae
Ну, гипотетически, посылать можно в пожатом виде и парсить js'ом.))

Хм. Типа, применять алгоритмы сжатия? А вот это интересно, кстати.

Aetae 02.02.2012 20:55

https://github.com/dankogai/js-deflate
Валяй.) Но с автоматическим gzip пожатием это не будет иметь особого смысла.) Если бы оный вообще имел место в данном вопросе.))

poorking 02.02.2012 21:11

trikadin,
Aetae,
Сколько бы это ни было, кто нибудь задумался что такое картинка 300х400 пикселов? 120000 дивов? я правильно посчитал?

Aetae 02.02.2012 21:35

poorking, всем понятно что это глупости.)

Я тестировал в своё время.)
ФФ медленно но верно отрисовывает 512*512, остальные примерно на 512*256 дохнут.))
Мож сейчас что и поменялась, но это представят исключительно научный интерес)

trikadin 02.02.2012 21:36

poorking, задумались, по-моему, уже даже писал выше. В любом случае, обсуждение just for lulz.

Можно не применять к каждому диву стили, связанные с absolute position. Например, вывернуться с position: relative, заставив браузер самому располагать "пиксели" друг за другом. Дальше, вторая оптимизация (ну, вроде как оптимизация) - это создавать классы, которые отвечают за определённый цвет. Тогда браузеру не придётся просматривать отдельный стиль каждого элемента, а применять сразу по группам, что незаменимо, скажем, при простой графике (не фото).

Цитата:

Сообщение от Aetae
ФФ медленно но верно отрисовывает 512*512, остальные примерно на 512*256 дохнут.))

А системные параметры какие? Оперативка, проц, видюха?

devote 02.02.2012 21:37

а что с канвой? неужто при отключении отображения картинок в браузере, канва перестает работать?

trikadin 02.02.2012 21:40

Цитата:

Сообщение от devote
а что с канвой? неужто при отключении отображения картинок в браузере, канва перестает работать?

Да, перестаёт. Там где-то выше ссылка была - у меня в ff при отключённых изображениях не заработала.

Иначе бы мы тут не обсуждали ЭТО)

devote 02.02.2012 21:44

Цитата:

Сообщение от trikadin
Да, перестаёт.

мда... предел дебилизма.

trikadin 02.02.2012 21:46

Цитата:

Сообщение от devote
мда... предел дебилизма.

Не совсем. Если бы не отключали, все бы грузили картинки ajax'ом и показывали бы через канву или векторную.

poorking 02.02.2012 21:51

Я ради смеха отрендерил 300*400 span-ов 1х1px это заняло ~30секунд, конечно от тачки зависит. Большие картинки можно пикселизовать. Например написать такой движок, который картинку будет бегать по картинке, но не по каждому пикселу, а по мнимым так сказать квадратикам снимать средний цвет, а в ответом будет массив-матрица этих цветов и размер "пиксела".

UPD прошу прощения про время кажется наврал. за ~30 секунд просто создавалось 1920х1080 span-ов, отрисовать за раз их не осилил, можно попробовать вставлять их частями. а 300х400 гораздо быстрее, но не помню сколько, эксперимент проводил когда только заговорили об этом

devote 02.02.2012 21:55

Цитата:

Сообщение от poorking
Я ради смеха отрендерил 300*400 span-ов 1х1px это заняло ~30секунд, конечно от тачки зависит. Большие картинки можно пикселизовать. Например написать такой движок, который картинку будет бегать по картинке, но не по каждому пикселу, а по мнимым так сказать квадратикам снимать средний цвет, а в ответом будет массив-матрица этих цветов и размер "пиксела"

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

poorking 02.02.2012 22:01

devote,
ну решение всегда есть, просто какой смысл развивать технологию? Как бы не удалось ее оптимизировать она все равно будет очень ресурсоемкой и кому она нужна? Как уже сказано было выше, если юзор отключил картинки, значит этого хотел очень, и впаривать ему нехорошо

Magneto 02.02.2012 22:11

Я конечно не в теме, но вот давно что сделал: ссылка.

trikadin 02.02.2012 22:20

Цитата:

Сообщение от Magneto
Я конечно не в теме, но вот давно что сделал: ссылка.

Жестоко. На чём переводил? PHP?

Magneto 02.02.2012 22:30

Цитата:

Сообщение от trikadin
Жестоко. На чём переводил? PHP?

Да.

Aetae 02.02.2012 22:37

<!DOCTYPE HTML>
<html>
<body>   
<style>
#hell{width:765px}
#hell div{float:left;width:1px;height:1px}
</style>
<input type="button" value="stop">
<div id="hell"></div>
  <script>
(function(){

var d = document.getElementById('hell') ,
    blocks = 0, timer;
    
document.getElementsByTagName('input')[0].onclick = function(){
  clearTimeout(timer);
  alert(blocks+' blocks')
};

(function(){
  var i=765, r=0, g=0, b=0;
  blocks += i;
  while(i--){
    d.appendChild( document.createElement('div') ).style.backgroundColor = 'rgb(' + (i%3?r:++r) + ',' + (i%3-1?g:++g) + ',' + (i%3-2?b:++b) + ')';
  }
  timer = setTimeout( arguments.callee , 100 )
})()

})()
</script>
  
</body>
</html>

Протестируй свою тачку.))

trikadin 02.02.2012 22:48

На 27540 мне надоело)

devote 02.02.2012 22:58

Цитата:

Сообщение от Aetae
Протестируй свою тачку.))

Да опера прорисовала 90% рисунка и тупо остановила процесс... Совсем немного не дотянула :)

trikadin 02.02.2012 23:02

Цитата:

Сообщение от devote
Да опера прорисовала 90% рисунка и тупо остановила процесс... Совсем немного не дотянула

А что она должна была дотянуть? Там цикл же бесконечный.

devote 02.02.2012 23:04

Цитата:

Сообщение от trikadin
Там цикл же бесконечный.

....
Цитата:

Сообщение от Aetae
 var i=765


trikadin 02.02.2012 23:05

Ну! А таймер-то каждый раз ставится!

devote 02.02.2012 23:07

Цитата:

Сообщение от trikadin
Ну! А таймер-то каждый раз ставится!

а ну да... ну значит до квадратной картинки у меня отрисовал он 90% тоесть еще 10% и был бы квадрат


Часовой пояс GMT +3, время: 16:15.