Jump to content

SelenIT

Expert
  • Posts

    4,327
  • Joined

  • Last visited

  • Days Won

    140

Everything posted by SelenIT

  1. Какие же это тупо свойства? Атрибуты — в разметке, свойства — в DOM-е. Атрибуты могут быть только строками, а свойства могут быть любого типа (хоть объект, как parentNode, или функция, как onclick). Атрибуты — как в коде написано, свойства — как присвоено (или как по умолчанию)... Другое дело, что в типовых задачах атрибуты (и setAttribute, соотв-но) нафик не нужны, свойств достаточно. Имхо, здесь хорошо расписано...
  2. Может, под "дерганьем" подразумевается появление/исчезновение скроллинга у body при изменении высоты страницы?
  3. Ну так IE-динозавры стремительно вымирают, их юзеры могут и потерпеть либо обновиться...
  4. Виноват, полностью мой скрипт выглядит так: function changeTarget() { setTimeout(function() { var targetId = location.hash.replace('#',''); var lastTarget = (window.targetedDl && window.targetedDl.id) || ''; if (targetId != lastTarget) { if (window.targetedDl) { window.targetedDl.getElementsByTagName('dd')[0].style.height = '0'; window.targetedDl.getElementsByTagName('a')[0].style.backgroundColor = ''; window.targetedDl.getElementsByTagName('a')[0].style.cursor = ''; } if (window.targetedDl = document.getElementById(targetId)) { window.targetedDl.getElementsByTagName('dd')[0].style.height = 'auto'; window.targetedDl.getElementsByTagName('a')[0].style.backgroundColor = '#080'; window.targetedDl.getElementsByTagName('a')[0].style.cursor = 'text'; } } },1); } document.attachEvent('onclick', changeTarget); document.attachEvent('onreadystatechange', function() { if(document.readyState=='complete') changeTarget(); }); Ну и для полной совместимости можно в те же условные комменты добавить <noscript> с добавочным стилем из первого примера внутри...
  5. Не надо путать HTML-атрибуты и DOM-свойства, как это делает IE7-
  6. Мой вариант с зеленой подсветкой и сбросом выделения при переходе на "левый" hash, с учетом пожелания автора, что "лучше без классов", вышел таким: function changeTarget() { setTimeout(function() { var targetId = location.hash.replace('#',''); var lastTarget = (window.targetedDl && window.targetedDl.id) || ''; if (targetId != lastTarget) { if (window.targetedDl) { window.targetedDl.getElementsByTagName('dd')[0].style.height = '0'; window.targetedDl.getElementsByTagName('a')[0].style.backgroundColor = ''; } if (window.targetedDl = document.getElementById(targetId)) { window.targetedDl.getElementsByTagName('dd')[0].style.height = 'auto'; window.targetedDl.getElementsByTagName('a')[0].style.backgroundColor = '#080'; } } },1); } Не учитывает вариант смены #хэша вручную (вот что я пропустил по сравнению с вариантом зацикленного таймера), но, имхо, вероятность такого действия со стороны обычного пользователя архаичных IE стремится к нулю . На правах курьеза (пока что) в IE7 (точнее, в IE9 as IE7) работает вот такой забавный вариант. Ограничения — все участвующие в процессе id-шки должны быть нормальными по старым стандартам (непустыми и начинающимися с буквы, вместо href="#" для сброса выделения приходится указывать что-то типа href="#top"), и есть риск проблем с др. псевдоклассами (и псевдоэл-тами CSS2), которых IE7 не знал. К сожалению, IE8, похоже, вместо того, чтобы воспринимать незнакомый ":target" как столь удобный ":unknown", игнорирует строку с ним напрочь (нашел когда внезапно начать соблюдать стандарт, называется. Теоретически, можно вручную распарсить innerHTML тега style (как быть с внешними CSS, надо покумекать) и провернуть эту же логику "в обход", но реализация становится куда сложнее. Вот думаю, есть ли смысл ковырять в эту сторону?..
  7. Функция вставляется в тег <script>. А вызывается по загрузке картинки, например, так: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Накладываем шум на картинку через Canvas</title> <script> function addNoise(img, alpha) { var canvas = document.createElement('canvas'); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext('2d'); ctx.drawImage(img, 0, 0); var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); var pixels = imageData.data, r, g, b, origR, origG, origB; var alpha1 = 1 - alpha for (var i = 0, il = pixels.length; i < il; i += 4) { // генерируем пиксель «шума» var color = Math.random(); origR = pixels[i]; origG = pixels[i + 1]; origB = pixels[i + 2]; // высчитываем итоговый цвет в режиме multiply без альфа-композиции r = origR * color; g = origG * color; b = origB * color; // альфа-композиция pixels[i] = r * alpha + origR * alpha1; pixels[i + 1] = g * alpha + origG * alpha1; pixels[i + 2] = b * alpha + origB * alpha1; } ctx.putImageData(imageData, 0, 0); // подменяем исходную картинку созданным Canvas-ом img.parentNode.replaceChild(canvas,img); } </script> </head> <body> А теперь берем любую картинку (с этого же домена!), и как только она загрузится (по событию onload) накладываем на нее же (первый параметр функции) шум с прозрачностью 20% (второй параметр функции): <img src="image.jpg" onload="addNoise(this, 0.2)"> </body> </html> Тут я чуть поменял последнюю строчку функции - у Чикуенка она дописывала созданный Canvas к <body> (т.к. там он служил фоном, а картинка грузилась только в память и сама по себе не отображалась), а здесь он подменяет собой исходную картинку. Но принцип от этого не меняется...
  8. Так обертки и сейчас не нужны.
  9. mishka, респект за большую и поучительную работу, но... обязательны ли такие сложности? Судя по этой и этой таблицам, единственные мало-мальски актуальные браузеры, не рубящие фишку :target-а — это непарнокопытные из Редмонда по 8-ю версию включительно, из них onhaschange понимает лишь IE8. Стоит ли ради него одного ветвить алгоритм? И от чего еще может поменяться location.hash, кроме как от клика по ссылке? И еще, что дает ограничение значения hash вопросом, разве вопрос в hash умеет делать какую-то магию? Вот случай пустого hash (просто решетка в адресе) я в своем варианте прощелкал, это да...
  10. Существует вот такой подход. Но обычно для этого используют всё-таки серверные языки. Для серьезной разработки всё равно какой-то локальный HTTP-сервер на своем компьютере ведь понадобится...
  11. Ну я там и написал, что способ с тенью более продвинутый . Единственное, я бы всё равно overflow:hidden добавил, "для минимизации ущерба" окружению картинки. Эх, где бы найти толковое пояснялово (а не то отрывочное непонятство с мертвыми ссылками из оперного блога, что обычно нагугливается) про оперные SVG-эффекты, в особенности mask... Чует моя интуиция, что где-то там может нарыться легкий фикс решения с тенями для неоднородного фона...
  12. Лучше было, наверное, дать ссылку на демо вместо кода, а то в этом тесном окошке со скроллингом самая вкусность-то (про тени) в глаза не бросается... Я, как мог, постарался восстановить справедливость в новом комменте к "свежатинке" (хотя и свой пример на похожем принципе пропиарил заодно, сорри)...
  13. Полное раскрытие при отключенном — имхо, проще всего взять добавочный <style> из первого примера и обернуть в <noscript>. И, тыща пардонов, но на всякий случай — ссылка на конкурентов...
  14. В IE7 работает, только что проверил. А в остальных — как вы себе представляете "разбегающиеся" ячейки таблицы (с display:table-cell)? Добавьте в середину еще одну ячейку шириной 34%, что ли...
  15. Навскидку получилось как-то так: document.attachEvent('onclick', function() { setTimeout(function() { var target = document.getElementById(location.hash.replace('#','')); if (target && target != window.targetedDl) { if (window.targetedDl) { window.targetedDl.getElementsByTagName('dd')[0].style.height = '0'; } window.targetedDl = target; window.targetedDl.getElementsByTagName('dd')[0].style.height = 'auto'; } },1); }); Только зелененькой подсветки активной dt-шки по наведению пока нет, но это добавляется двумя строчками или одним доп. классом...
  16. Потому что в IE комбинация writing-mode: tb-rl; text-align: center; центрирует по вертикали целый инлайновый блок (как одно "слово", повернутое набок). А внутри этого блока тексту возвращается нормальная здоровая горизонтальная ориентация. Без дополнительной обертки .content я не представляю, как это сделать.
  17. SelenIT

    CSS меню

    1) Что делает <li> в <div>? И нужен ли последний? 2) Зачем делать меню на CSS (заведомо теряя в юзабилити/функциональности по сравнению с JS-реализациями), если обработка ссылок в нем всё равно скриптовая? А вообще — вот, например
  18. Потому что всегда инлайновые по умолчанию картинки — главное (в теории единственное, но это не так, особенно в Опере), чем браузеры жертвуют в угоду тёмному прошлому в "почти стандартном" режиме. А сам факт наличия таких жертв — на мой взгляд, достаточное основание для полного отказа от transitional-доктайпов)
  19. 1) Насколько я в курсе, надежно работает только для фреймов. Уже для таблиц появляются "приколы". Сильно полагаться на это не стоит. 2) Это не отступы, это обычные пробелы. Проще и вернее всего — физически, из кода.
  20. Думаю, для текстарии надо бы контент обнулить: поставить закрывающий тег сразу после открывающего, вплотную (а пустоты между тегами могут восприниматься как начальное значение). И, пожалуй, autocomplete="off" не повредит (как минимум, на этапе отладки стилей формы). А насчет "чудес" с цветами — что сказать, пользуйтесь типовыми приемами отладки (делайте тестовые копии и удаляйте из них всё, кроме проблемного куска, очень внимательно проверяйте кодировки всех файлов и BOM-метки перед ними, и т.д.). Удачи!
  21. IE9, похоже, тоже И ведь не прикопаешься — фильтры в CSS 2.1 не входят, так что заявленная "полная поддержка" как бы и не задета...
×
×
  • 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