Pull to refresh

Comments 64

"Режим совместимости" в IE — это зло, потому что блочная модель работает неправильно.
тогда вам второй вариант - он с режимом соответсвия стандарту. Вчитайтесь
я и Шитову отправил на почту. Но он похоже только принял к своему сведению.
Или же Лебедев послал егоЮ когда услышал про DOCTYPE =)
UFO landed and left these words here
не думай что ты умнее Лебедева! =)
редко думаю, говорят, это вредно =)
Там есть законсперированное примечание, из которого можно понять, что все изложенное годится, если не указывать доктайп.
(Примечание. Нужно лишь помнить, что для MSIE 7 есть более простое решение для правильной работы свойства fixed — указание доктайпа.)
Данное примечание говорит скорее о том, что IE7 наконец-то поддерживает CSS fixed, и что весь этот огород для семерки не нужен. Просто MS решили, что для включения поддержки нужен явный переход к режиму соответствия стандарту.

Данный пост для шестерки и пятерки (насколько помню >= 5.5)
На всякий случай напоминаю, что конструкции с подчёркиванием типа _position:absolute; в IE7 "пофикшены" и для него нужно использовать например &position:absolute;
Думаю, стоит также заметить, что такое лучше вообще не использовать. :) Для этого есть conditional comments.
Это имхо плохая идея, поскольку требует уродовать код html и плодить сущности в виде отдельных css без надобности.
На мой взгляд более корректным решением, чем хаки css является только прямое следование стандартам и отказ от поддержки ошибок IE.

PS никогда не понимал почему верстальщик должен считать нормальным разное поведение разных браузеров и даже их версий в простых моментах, хорошо описанных в стандартах. Если браузер не выполняет стандарт, значит браузер не доделан. А все эти "conditional comments" это способ выключить свет вместо уборки мусора в доме.
интересная позиция конечно =)
т. е. ИЕ — не поддерживает стандарты полностью, значит на него можно забить?

Интересно, как по вашему, с таким верстальщиком кто-нибудь будет работать?
В данный момент это утопия. Но условия к формированию таких приоритетов уже формируются в виде появления на рынке дешевых мобильных устройств с xhtml и урезанным парсером — не прощающим ошибки.
>На мой взгляд более корректным решением, чем хаки css является только прямое следование стандартам и отказ от поддержки ошибок IE.

И как, успешно применяете это решение? ;)

Поймите, веб-стандарты - это не самоцель. При всей их важности, первый приоритет веб-разработчика - это доступность. Доступность контента с любого браузера, с любого устройства, при любой конфигурации.

Ратовать за веб-стандарты и при этом плевать на 50% посетителей - это совершеннейший абсурд. Вы создаете веб-сайты не для w3c, а для людей! Стандарты - это лишь средство для достижения совершенной доступности сайтов и людям, и машинам, в то время как некоторые разработчики возводят его в ранг фетиша. Это неправильно.
Совершенно с вами согласен в контексте настоящего. Но будущее не за нынешним винегретом ошибок браузеров и хаков "тут играем, а тут рыбу заворачивали". Всё это переходный период. Смотрите в будущее. Кроме html-вёрстки такого бардака нет ни в одной области IT. Так не может продолжаться вечно.
Значит, вы, считаете, что смотрите в будущее, полагаясь в своём коде на ошибки браузеров?

Да, так не может продолжаться вечно, но ситуация существенно улучшается. Скажем, поддерживать отдельно мне приходится только IE6, - IE7 в подавляющем кол-ве случаев работает так, как и ожидалось. Когда наступит время, я просто уберу лишнюю строчку комментариев, в то время как вы будете тщательно вычищать от гадости весь CSS-код, выискивая эти эксплоиты. При использовании хаков (при том, что это никаким образом вообще не влияет на семантику документа) вам гораздо труднее поддерживать код - на это уходит больше времени, существенно повышается кол-во ошибок, вы можете запросто в этих всех уловках запутаться. В моём же случае всё проще простого - мой стандарто-совместимый код совершенно чист, вся грязь - всего лишь в никому ненужных комментариях.
1. Мне не придётся вычищать гадости поскольку они просто игнорируются браузерами не подверженными хаку.

2. Кроме того лично я привык хаки выносить в отдельные секции файла, чтобы править код для разных браузеров отдельно. Так что долго ходить по файлу (заметьте одному единственному) мне не прийдётся.

3. Но если я всё же решу очистить код, то трогать html мне совсем не нужно. А это бывает весьма важно когда на сайте десятки тысяч страниц. Даже если они динамические, то их содержимое поменялось и требует полной переиндексации и (по необходимости) перевыборки клиентами (ведь last-modified должен показывать время такого изменения очищая кэши и индексы поисковиков). Замена одного CSS файла в такой атмосфере это просто пустяки.
1. Браузерами они-то, может, игнорируются, а вот разработчиков, которые этот код поддерживают, может сбить с толку. :)
2. Вот это верно :)
3. Ну, это - тоже может быть. :) Я с таким тонкостями насчёт перевыборки не сталкивался.
Тут есть ещё одна особенность.
Microsoft постоянно разными способами создаёт "игру в одни ворота". То для отображения прозрачного png они требуют убрать его из отображения других браузеров (именно так выглядит предложенный ими способ с прозрачным gif вместо оригинального png). Такой же игрой выглядят и условные комментарии — вы можете полагаться на на наш механизм указания на версии глючных браузеров. Это — создание фичи вместо устранения бага, именно то, что я назвал выключением света вместо уборки дома.

Мне не нравится быть пешкой в таких играх. Я за то, чтобы игра на этом рынке была честной. Или тогда я сам независимо буду добиваться корректности отображения любыми средствами. Мой выбор в CSS-хаках, а не условных комментариях и разве это осудительно при конечной корректности результата и определённых косвенных дивидендах? К тому же я не зря выделил имхо.
ИМХО - Извините Меня, Хотелось Отличиться?
Разработчики IE - тоже люди... Понимаешь, в связи с общей политикой обновлений в MS у них нет возможности, как у, скажем, разработчиков FF, фиксить багу и сразу выпускать апдейт. Между релизами могут быть промежутки во много лет. И багов в этой старейшей кодовой базе нереальное кол-во, фиксишь один - появляется другой, все не поправить... Нужно было хоть что-то придумать универсальное, чтобы разработчики могли как-то ладить с существующими, неисправленными багами. И придумали, я думаю, очень клёво - и валидатор доволен, и другие браузеры не видят, и работает предсказуемо.
файл стилей для ИЕ подключенный в conditional comment - лучшее, что можно предпринять для поддержки ИЕ.
отказ эксплорера это конечно сильно :) кстати, именно "плохая идея" позволяет прямо следовать стандартам и в разметке и в стилях, не забивая на ИЕ при этом.
можно рассуждать сколь угодно долго о недоделанных браузерах, но в конце концов приходится усаживаться поудобнее и вникать в тонкости поведения разных браузеров в простых моментах, хорошо описанных в стандартах. в конце концов именно за это приличный верстальщик и получает свои триста-баксов-за-макет.
Всё так. Кроме необходимости платить верстальщику. Эта работа должна стать тривиальной и подчиниться дизайнеру, чтобы он имел полный контакт со средой, которую делает удобной. Именно все эти тонкости браузеров отдаляют творчество от кода страницы и тем самым способствуют непониманию дизайнерами сути их работы.
PPS conditional comments это тоже хак, заставляющий один браузер обращать внимание на то, что написано в комментариях. Это не только нарушение стандартов (комментарии ДОЛЖНЫ ИГНОРИРОВАТЬСЯ), но и дорога к безалаберности и безответственности разработчиков браузеров.
может это и хак - но не ugly, точно. Задумка хорошо расширяемая, и очень сильно иногда облегчающая жизнь. Надо посмотреть правде в лицо, сделать сайт с более-менее сложной версткой без единого хака и работающим под IE5+ и всеми остальными браузерами невозможно - так уж лучше отдельный css с нормальным css внутри, чем один css с отвратительными вещами типа voice-family и _top:
другое дело что сначала надо тщательно поискать возможность сверстать ВООБЩЕ без хаков :)
С последним совершенно согласен.
А вот с тем, что нормально уродовать html ради ровного CSS я не согласен поскольку html несёт семантическую нагрузку и вносить туда лишнее значит ухудшать эту семантику. CSS не так важно, поскольку поисковиками не транслируется и все css-наки не мешают поисковому продвижению.
Не понимаю, почему вы относите комментарии к HTML и семантике. Текст в комментариях имеет смысл только для разработчиков, поддерживающих код и других сущностей, которым это нужно (в данном случае IE). И для поисковиков, и для w3c, для поддерживающих стандарты браузеров, для устройств, которые парсят эти данные как семантическую структуру их просто нет. Аргумент про SEO в контексте этого мне кажется совершенно абсурдным.
Потому, наверно, что вы не обращали внимание на индексацию комментариев, а один из самых чёрных хаков adwords заключается в этом. То же самое можно при определённых условиях (не буду "палить тему") сказать про поисковики. Так что всё не так абсурдно, как кажется на первый взгляд.
О, а можно немножко подробнее на эту тему? Не знал. :) Может, ссылки какие-нибудь.
комментарий в коде никак не влияет на семантику. в том и прелесть.
невалидные штуки в стилях не проходят валидацию. не вы ли там немного выше ратовали за полное соответствие стандартам? :)
несете вы чушь, признайте :)
тут не соглашусь.
1. "* html body" не является чем-то некорректным с точки зрения парсеров css — это просто каскад, который встречается только в IE 5-6
2. незнакомые селекторы типа _top в стандарте рекомендуется игнорировать.
3. специально проверил валидатором w3c — никаких замечаний.
Во-первых, это не хак. Только недавно, блин, обсуждали, - хак - это эксплоит определённого бага, в случае вёрстки - браузерного. Условные комментарии - намеренно реализованная функциональность, которая в отличии от багов работает совершенно предсказуемо.

Во-вторых, их использование - это не нарушение стандартов. По крайней мере, со стороны веб-разработчика - код им соответствует в полной мере (поскольку комментарии игнорируются, он в них может писать всё, что пожелает). Нарушение со стороны создателей IE, но нарушение вынужденное (иначе пришлось бы полагаться на баги).

Забивать на юзеров и делать сайты "for non-IE browsers only" - думаете, это сможет повлиять на разработчиков браузеров? Отнюдь. Это возвращение в прошлый век и не намного лучше сайтов "IE-only" 10-летней давности.
Это в данном случае хак стандарта, а не эксплоита браузера. в сочетании с ухудшением семантики не вижу ничего более допустимого, чем хак css.

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

C другой стороны считайте меня идеалистом, но я не вижу будущего за браузерами с таким числом несоответствий стандартам, как IE. И не смотря на это делаю код (по возможности) валидным и кроссбраузерным.
Я был не прав.
Семантика от комментариев конечно же не ухудшается.
Но идея ветвления кода в зависимости от браузера для лечения ошибок мне не нравится. Это выглядит как худший стиль програмирования — когда половина функционала программы находится в обработчиках ошибок.
Это нормально. Потому, что насиловать свой мозг, пытаясь заставить работать УЁ - дело мазохистов.

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

Поэтому хорошо, что есть условные комментарии, иначе бы мы писали сплошные хаки.
=) сворачиваем тему, чтобы не пойти по второму кругу?

предлагаю мировую — Условные комментарии также годятся в борьбе за результат, как и хаки CSS.

Устраивает?
Во, вот тут я вас поддержу (а то понаписали - не знаю куда и влезть =) ).

Как говорил мой друг perl'ист - "вместо preg_replace я лучше тильду поставлю - так понятнее" так мы и не сошлись тогда.

Суть-проблема то в криворуких браузерах, а уж как обходить - у каждого свои рецепты. И можно их даже совмещать, когда удобно.

И полезной была только первая заметка про амперсанд =)
И вообще стандарты, это как мировая энтропия или государство по платону.
К ним будут стремиться, но никогда не достигнут, слишком местами велик соблазн.
Дело в том что любой хак может сказаться на работе сайта в будущем. Вдруг какой-нибудь браузер начнёт по ошибке реагировать на * html? Сломается.

Вероятность того, что какой-нибудь браузер начнёт по ошибке реагировать на просто ноль.

В этом отличие conditional commetns от хаков * html, voice-family:, _top...
* html это не эксплоит, а совершенно корректный каскадный вызов "тэг html являющийся потомком любого элемента". Этот вызов не может ничего повредить и в худшем случае (нормальных браузеров с корректным DOM) просто не обнаружится элемента, соответствующего такому каскаду.

Насчёт вашего "вдруг сломается" ничего корректного в голову не приходит — что вы скажете про нежелание ехать в Тайланд лишь потому, что "вдруг там в будущем будет цунами"?
Я знаю, что значит * html. Я вам указал, что есть опасность того, что в Konqueror 3.1337 будет баг и он может неправильно понять это, так же, как сейчас ЫЕ.

Насчёт Тайланда – так и так знакомые не летают на самолёах, потому что страшно, другие в Турцию, потому что там бомбят. Здесь же опасность для live сайта, за который вы, возможно, получили денег. И вдруг он будет не работать.


Кстати, я сейчас подумал, девелоперам после вас разбирать, что такое * html, voice-family: и др. будет очень непросто. А вот <![if IE]>stylesheet: ie.css очень просто и понятно даже незнающему.
вероятность что браузер сломается от совершенно корректной конструкции не выше, чем вероятность падения кирпича на голову. Делать на неё ставку просто смешно.

Точно тоже самое с Тайландом — случится или не случится цунами заранее не известно, так что учитывать цунами как довод "не ехать" — свидетельство растройства психики.

Девелопер, который не умеет работать с хаками наверняка непрофессионален и довод про непонимание "* html" на фоне "<![if IE]>" может привести лишь как констатацию своей несостоятельности.
Оставлю дискуссию с такими заявлениями:
Девелопер, который не умеет работать с хаками наверняка непрофессионален

и переходами на личности:
[..] может привести лишь как констатацию своей несостоятельности.

вам одному.
=) Отвечать по сути гордость не позволяет? Ну что ж — на обиженных воду возят.
Всего наилучшего.
Это не половина функционала. А так, мелкие приукрашения, которых формально нет, а есть только для нужной тебе версии IE.

Единственный недостаток, который я вижу в таком подходе - один лишний реквест. :) Но в принципе это мелочь. Зато поддерживать стили лично мне куда проще - имеешь дело в основном с совершенно чистым кодом, и держишь все хаки в одном месте - порядок получается. К тому же, браузерные баги - вещь непостоянная, а вот на эту функциональность ты можешь положиться, потому что она реализована намеренно для помощи разработчикам.
Не совсем согласен. Эта функциональность внесена для совместимости с прошлыми и будущими багами лищь для того, чтобы снять с разработчика браузера ответственность за некачественный код. Такой подход мне не нравится.
Да, но для IE7 они и редко нужны, в основном все отображается стандартно.
Сам не давно задавался точно таким же вопросом... решил трабл, убрав DOCTYPE. :)
аааа, как же можно без DOCTYPE :)
Давно использую document.documentElement.scrollTop для IE6

Вы забыли написать, что чтобы не блок не дергался нужно зафиксировать фон:
document.documentElement.style.backgroundImage = 'url("/nothing.png")';
document.documentElement.style.backgroundAttachment = 'fixed';

Я использую это на Design For Masters для блока коррекции ошибок, который появляется при нажатии Ctrl+Enter
На сайте Лебедева об этом сказано.
кстати, да. любят Работники Студии выдавать чужие достижения за Свои, этого у них не отнять :)
Ну это уже история давнишняя, то же самое было и с домиком (хотя там еще споры правомерны).
момент такой - не факт что сперто. Может Воронежский действительно сам догадался, ну просто не первый (имхо, случайно наткнулся).
И все таки хорошо что написал, я угрохал много трафика, чтоб на N-ной странице гугля найти первый способ. Так хоть на виду лежит.
Код — в личную копилку классических решений. Спасибо!
UFO landed and left these words here
Sign up to leave a comment.

Articles