Записи с метками ‘азы верстки’

Условные комментарии (conditional comments)

Четверг, 27 января 2011

Вы используете условные комменарии? Конечно, вы их используете. Чтобы отделить стили для ?Е от других и при этом сохранить валидность своего CSS. Тем самым добавляя ли?ние http-запросы для все еще  многочисленных несчастных пользователей ?Е. ? еще в некоторой степени затрудняя себе правки стилей, если какое-либо свойство различается и для нормальных браузеров, и для ?Е7, и для ?Е6. Приходится править три файла, а не один. Можно забыть, запутаться, ну в общем неудобно.

Можно ли этого избежать (этого — это неудобства, ли?ние http-запросы и т.п.)? Да, и при этом с помощью все тех же условных комментариев! Кажется в начале года встретил на каком-то сайте (честно, не помню) подобный рецепт. Достаточно в ва?ем HTML с помощью условных комментариев разделить вывод в браузер BODY с различными классами. Вот как-то так:

<!--[if (!IE) | (gt IE 7)]><!-->

    <body>

<!--><![endif]-->

<!--[if IE 7]>

    <body class="ie7">

<![endif]-->

<!--[if IE 6]>

    <body class="ie6">

<![endif]-->

Пример (соответственно приведенному примеру нормальные браузеры покажут красный экран, ?Е7 — зеленый, а ?Е6 — синий ).

Теперь у вас есть возможность, не используя хаки и не плодя ли?ние файлы, править все стили в одном файле. Достаточно в  стилях перед нуждающимся в корректировке для ?Е7 или ?Е6 свойством  писать соответсвующий класс.

для нормальных браузеров:

.selector {attr: value }

для ?Е7:

.ie7 .selector {attr: new value} - это свойство увидит только ?Е7

ну и соотвественно для ?Е6:

.ie6 .selector {attr: new value} - а это  только ?Е6

Вы скажете, что стили будут сильно много весить. Да, немного потяжелеют, но если у вас правильно все сверстано, то много правок не понадобится. Это раз. Второе, несколько ли?них строк все-таки луч?е, чем пара ли?них запросов к серверу.

P.S. Единственно, что если вам приходится использовать фильтры или expression для ?Е, то валидность CSS сохранить не удастся. Но, по-моему, важнее валидность HTML, чем CSS. Потому как валидность CSS никак не влияет на доступность сайта, а только ли?ь на его отображение.

Xотите быстро продать (подержанный|б у) или новый авто? ? не хотите тратить впустую время, блуждая по сотням авто базаров. Тогда на? сервис специально для Вас! На? авторынок предлагает Вам купить или продать (подержанный|б у|) авто практически любых марок и моделей, во всех городах. На?и б у автомобили ждут своих новых владельцев, которые хотят продать автомобиль выгодно, и в кратчай?ие сроки. Если вы ре?или купить ма?ину, но новый авто вам дорого, на? авто базар предлагает подержанные автомобили по вполне де?евым ценам. Предлагаем Вам б у авто (подержанные автомобили), что совер?енно не означает значит, что у нас вы сможете купить плохое авто. Б у автомобили имеет низкую цену. Авторынок — уникальный поисковик подержанных автомобиль. Вы хотите купить или продать (подержанный|б у|) автомобиль на вторичном рынке? Теперь Вам нет необходимости заходить на каждый авто рынок, не нужно ехать на автобазар. Просто посещайте на? автобазар. Теперь купля подержанного автомобиля стала проще — добавляйте выбранные авто в Портфель по желанию. Оцените возможность искать одновременно несколько марок или моделей авто, выбирать несколько регионов, в которых продается ма?ина. Ре?или продать (подержанный|б у) или новый автомобиль? Желаете чтобы объявление было на на?ем автобазаре ? Ускорьте продажу авто, сделав его VIP с помощью СМС.

Файрфокс и Input type = file

Четверг, 27 января 2011

Крик ду?и просто. Ну почему input type="file" в файрфоксе сколько его помню не реагирует на указание размера через стили, только через атрибут size самого элемента input. WTF!

Вы хотите купить (подержанный|б у) или новый автомобиль? Не хотите тратить впустую много время, блуждая по десяткам авто базаров. Тогда На? сервис для Вас! Онлайн авто-рынок предлагает (подержанный|б у|) авто во всех городах. На?и подержанные автомобили ждут своих владельцев, которые хотят продать ма?ину быстро, и в кратчай?ие сроки. Если вы ре?или купить ма?ину, но новый авто вам дорого, автосайт предлагает подержанные автомобили по вполне де?евым ценам. Мы предлагаем Вам б у авто , что совер?енно не означает значит что Вы сможете приобрести плохой автомобиль. Подержанные авто имеет более низкую стоимость. Авто-рынок — портал подержанных автомобиль. Ре?или купить (подержанный|б у|) авто на вторичном рынке? Вам нет необходимости посещать каждый авто-рынок в интернете, не нужно ехать на авторынок. Просто посещайте на? авто базар. Теперь купля авто стала быстрее и проще — добавляйте выбранные ма?ины в Портфель . Оцените возможность искать одновременно несколько марок авто, выбирать несколько регионов, в которых может продаваться авто. Хотите купить (подержанный|б у) или новый авто? Хотите чтобы Ва?е объявление попало на на? автобазар ? Ускорьте продажу авто, сделав его VIP прислав СМС.

Равномерно расположить картинки по ?ирине страницы

Четверг, 27 января 2011

Бывает, возникает вопрос (по «вине» дизайнеров или заказчиков), что картинки надо расположить по ?ирине страницы (ну или родительского контейнера) равномерно, то есть первая (для читающих слева направо) картинка должна быть выровнена по левому краю, последняя – по правому, а остальные – находится друг от друга и от крайних на одинаковом расстоянии. Вот как-то так:

fig Самый простой вариант, который я сам использую – это использовать таблицу. Это, так скажем, не самое правильное использование таблицы, но зато самое простое и наименее времезатратное, что бывает важно.

Создадим табличку на пять ячеек и в каждую поместим по картинке. Выровняем картинки по центру ячеек (td {text-align: center}), а таблицу растянем на всю ?ирину (table {width: 100%})

fig2

Сейчас между картинками одинаковое расстояние, что и требуется. ? это нам необходимо сохранить. ? при этом крайние картинки должны быть прижаты к краям. Для этого добавим в таблицу пустые ячейки между ячейками, в которых находятся картинки.

fig3 Как и следовало ожидать, и как и должно было произойти (такова природа таблиц: для ячеек, содержащих боль?е отводится боль?ее место), пустые ячейки сжались до минимальной ?ирины. Поэтому для ячеек с картинками создадим класс, которому зададим свойство width:1%. Опять воспользуемся свойством таблиц: несмотря на указание ?ирины ячейкам, эти ячейки будут растянуты по ?ирине содержимого, если только таблице на задано свойство table-layout:fixed.

fig4 Вот мы и получили, что требовалось. Уберем границы у ячеек, которые были добавлены для наглядности, и можно использовать. Но, конечно, надо подумать, как избавиться от таблицы при верстке подобной задачи.

Xотите быстро продать (подержанный|б у) или новый авто? ? не хотите тратить впустую время, блуждая по сотням авто базаров. Тогда на? сервис специально для Вас! На? авторынок предлагает Вам купить или продать (подержанный|б у|) авто практически любых марок и моделей, во всех городах. На?и б у автомобили ждут своих новых владельцев, которые хотят продать автомобиль выгодно, и в кратчай?ие сроки. Если вы ре?или купить ма?ину, но новый авто вам дорого, на? авто базар предлагает подержанные автомобили по вполне де?евым ценам. Предлагаем Вам б у авто (подержанные автомобили), что совер?енно не означает значит, что у нас вы сможете купить плохое авто. Б у автомобили имеет низкую цену. Авторынок — уникальный поисковик подержанных автомобиль. Вы хотите купить или продать (подержанный|б у|) автомобиль на вторичном рынке? Теперь Вам нет необходимости заходить на каждый авто рынок, не нужно ехать на автобазар. Просто посещайте на? автобазар. Теперь купля подержанного автомобиля стала проще — добавляйте выбранные авто в Портфель по желанию. Оцените возможность искать одновременно несколько марок или моделей авто, выбирать несколько регионов, в которых продается ма?ина. Ре?или продать (подержанный|б у) или новый автомобиль? Желаете чтобы объявление было на на?ем автобазаре ? Ускорьте продажу авто, сделав его VIP с помощью СМС.

Еще раз про inline-block (коротко)

Четверг, 27 января 2011

Сегодня в очередной раз задали вопрос: как кроссбраузерно реализовать свойство inline-block. Для этого воспользуюсь хаком для ?Е 6 и 7 версий. Это необходимо, так как ?Е этих версий не понимает inline-block для блочных элементов, таких как DIV, LI, UL, а только для строчных (например:A, SPAN). Буду предельно краток.

.someclass{
    display: inline-block;
}

.someclass{
    //display: inline;/*магия ?Е*/
}

?менно вот так: в таблице стилей должны присутствовать обе записи. Если же вы предпочитаете условные комментарии, то вторая запись должна быть вынесена в стили для ?Е.
Работает в ?Е6+, ФФ3+, Опера (даже не знаю с какой версии), Хром, Сафари, далее — везде).
Для ФФ2 нужен костыль

Вы хотите быстро купить/продать (подержанный|б у) или новыйавтообиль? Не хотите тратить много время, блуждая по десяткам онлайн-авторынкам. Тогда На? сервис специально для Вас!

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

Предлагаем б у {авто} (подержанные автомобили), что не означает значит, что у нас вы сможете приобрести плохое авто. Б у авто имеет низкую стоимость.

Авто-рынок — уникальный сайт подержанных автомобиль. Вы ре?или купить (подержанный|б у|) авто на вторичном рынке? Теперь Вам нет необходимости посещать каждый авто базар в интернете, не нужно ехать на автобазар. Просто посещайте на? авторынок.

Теперь поиск автомобиля стала быстрее — добавляйте понравив?иеся ма?ины в Портфель . Оцените возможность искать одновременно несколько марок авто, выбирать по регионах, в которых продается автомолбиль.

Хотите купить(продать) (подержанный|б у) или новый авто? Хотите чтобы Ва?е объявление попало на на? автобазар ? Ускорьте продажу автомобиля, сделав его VIP с помощью СМС.

Xотите быстро купить (подержанный|б у) или новый авто? Не хотите тратить впустую много время, блуждая по сотням авто-рынкам. Тогда На? сайт специально для Вас! ?нтернет авто рынок предлагает Вами (подержанный|б у|) авто во всех городах. На?и автомобили ждут своих новых владельцев, которые хотят купить (продать) автомобиль выгодно, и в кратчай?ие сроки. Если Вы хотите купить ма?ину, но новый авто ва?ей мечты вам не по карману, автобазар предлагает подержанные авто по вполне де?евым ценам. Предлагаем Вам подержанные авто , что не означает значит, что у нас Вы сможете приобрести плохое авто. Подержанные автомобили имеет более низкую стоимость. Автобазар — поисковик подержанных автомобиль. Желаете купить (подержанный|б у|) авто на вторичном рынке? Теперь Вам нет необходимости заходить на каждый авто рынок в интернете, не нужно ехать на автобазар. Просто посещайте на? онлайн авто-базар. Теперь поиск б у fdnj стала быстрее — добавляйте понравив?иеся авто в Портфель по желанию. Обратите внимание на возможность искать одновременно несколько марок или моделей авто, выбирать несколько регионов, в которых может продаваться авто. Хотите продать (подержанный|б у) или новый автомобиль? Хотите чтобы объявление было на на?ем автобазаре ? Ускорьте продажу авто, сделав его VIP прислав SMS.
Xотите быстро продать (подержанный|б у) или новый авто? ? не хотите тратить впустую время, блуждая по сотням авто базаров. Тогда на? сервис специально для Вас! На? авторынок предлагает Вам купить или продать (подержанный|б у|) авто практически любых марок и моделей, во всех городах. На?и б у автомобили ждут своих новых владельцев, которые хотят продать автомобиль выгодно, и в кратчай?ие сроки. Если вы ре?или купить ма?ину, но новый авто вам дорого, на? авто базар предлагает подержанные автомобили по вполне де?евым ценам. Предлагаем Вам б у авто (подержанные автомобили), что совер?енно не означает значит, что у нас вы сможете купить плохое авто. Б у автомобили имеет низкую цену. Авторынок — уникальный поисковик подержанных автомобиль. Вы хотите купить или продать (подержанный|б у|) автомобиль на вторичном рынке? Теперь Вам нет необходимости заходить на каждый авто рынок, не нужно ехать на автобазар. Просто посещайте на? автобазар. Теперь купля подержанного автомобиля стала проще — добавляйте выбранные авто в Портфель по желанию. Оцените возможность искать одновременно несколько марок или моделей авто, выбирать несколько регионов, в которых продается ма?ина. Ре?или продать (подержанный|б у) или новый автомобиль? Желаете чтобы объявление было на на?ем автобазаре ? Ускорьте продажу авто, сделав его VIP с помощью СМС.

?Е7 и пробелы в CSS

Четверг, 24 декабря 2009

?спользовал на корпоративном сайте краткую запись правила для ?рифта:


body {
    font: 81.25%/1.5 Arial, Helvetica, sans-serif;
}

На работе LINUX (не умею готовить, и потому дико не люблю), потому работаю в Хроме (быстрее) и Файрфоксе (полезнее). VMWare умерла, а восстанавливать лень, потому проверяю в ?Е (благо основные посетители на?его сайта не ?Е-пользователи, хотя 25% немало, но можно смотреть иногда сквозь пальцы на мелкие баги в ?Е) от случая к случаю.
? вот тут смотрю и вижу в ?Е7 дефолтные ?рифты. Это был ?Е8 в режиме ?Е7. Причем встроенный тулбар показывает, что ?рифт применяется какой-надо. Но на странице ни фига не Arial. Оказалось все просто.
В Eclipse есть возможность отформатировать код (хоть и не совсем удачная реализация). ? в какой-то момент случайно я отформатировал CSS. ? это форматирование добавило кучу пробелов и переносов строк, в том числе и перед значением LINE-HEIGHT. Получилось вот так:


body {
    font: 81.25%/ 1.5 Arial, Helvetica, sans-serif;
}

? ?Е7 перестал понимать это правило. А мне уже стали проедать мозг из других отделов: «Что за жуткий ?рифт на сайте стал?»

Так что вот. Мораль обычная: аккуратность, аккуратность и еще раз аккуратность. Как обычно, диавол  прятался в мелочах.

Странная бага Оперы

Четверг, 8 октября 2009

Случайно столкнулся со странной багой в опере 9.64 и 10. Есть простой всем известный способ растянуть сайт на всю высоту окна браузера:

CSS

html, body {
    background:#fff;
    border:0;
    height:100%; /*trick*/
    margin:0;
    padding:0;
}
.wrap {
    background:red;/* для контраста*/
    min-height:100%;
    _height:100%;/* ie6 underscore hack*/
    margin:0 auto;/* расположим блок посередине экрана */
    width:90%;/*необязательно*/
}

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Странная бага оперы</title>

<link href="minheightbug.css" media="screen" type="text/css" rel="stylesheet">

</head>

<body>

<div class="wrap">немного текста для теста.
Странная бага оперы с определением высоты блока</div>

 </body>

</html>

? вариант со стилями в самом .HTML файле, прописанными в HEAD

<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Странная бага оперы</title>

<style type="text/css">
html, body {
    background:#fff;
    height:100%;
    margin:0;
    padding:0;
}
.wrap {
    background:red;
    min-height:100%;
    margin:0 auto;
    width:90%;
}
</style type="text/css">

</head>

<body>

<div class="wrap">немного текста для теста.
Странная бага оперы с определением высоты блока</div>

 </body>

</html>


(DOCTYPE не важно какой)
Простой общеизвестный способ. Но...
?грался как-то с разметкой (чуть позже распи?у с какой). Создал html-файл и начал писать стили в
HEAD, для скорости и чтоб не делать ли?них телодвижений (еще один файл, переключаться из HTML в CSS). Начал тестить: ФФ — гут, Хром — гут, Сафари (вин) — гут, ?Е (о чудо) — гут. ? тут черед до?ёл до оперы…
? я увидел, что блок WRAP не растягивается на всю высоту окна. Отресайзи?ь окно — растягивает. Обнови?ь — опять WRAP по высоте на свой контент.

Странная бага оперы

Странная бага оперы

то же самое после ресайза окна

то же самое после ресайза окна в опере

Ре?ил посмотреть предыдущую работу, в которой использован этот же способ. Опера все показывает правильно. Одна разница: там стили подключены вне?ним файлом через LINK. Я в недоумении. Опера правильно применила все стили, прописанные в HEAD, кроме определения минимальной высоты. ? только, повторюсь, ресайз позволяет опере правильно вычислить это значение.
Выводов два.

  1. Нефиг лениться. Трудно видите ли не переключиться на отдельный файл стилей.
  2. Да и неверно это в принципе писать стили в HEAD: растет размер страницы, стили не ке?ируются, если у вас боль?е, чем один ?аблон, то править стили придется в нескольких местах

В общем, если бы делал все, как положено, сэкономил бы себе пару часов времени: ни видел разницы в стилях, и это ставило в тупик.
P.S. При том, что опера замечательный браузер, вот такие вот простые ляпы сильно портят впечатление.

Отступы в кнопках в ?Е и других

Четверг, 18 июня 2009

Неболь?ое предисловие. Так случилось, что я подписался на сайте WSG на мейл-лист для обсуждения различных вопросов, связанных с применением веб-стандартов в ежедневной практике. Да, в этой подписке случаются интересные обсуждения, но зачастую там появляются вопросы настолько простые, что даже становится как-то неловко за авторитет уважаемой WSG. Вот и в этот раз вопрос был просто потрясающим: можно ли использовать картинку-бекграунд для кнопки с нефиксированной ?ириной. Но не это меня побудило меня черкануть пару строк. В одном из ответов, как луч?е все сделать проскользнул совет:

Something like this (как-то так):
button {padding:2px 5px;background: #FAF9F5 url(../images/bgimg.png) repeat;line-height: 1.5;
}
then use smaller padding left/right value for IE, e.g. (и потом умень?ите отступы для ?Е)
button {padding: 2px 1px !important}

Вот последняя строчка и вызвала мое изумление. Уважаемый подписчик WSG не знает как можно избавиться от ли?них отступов по бокам в кнопках в ?нтернет Експлорере.

Поясню в чем дело. ?нтернет Експлорер в версиях до 7 включительно добавлял в кнопках (будь то input, илиbutton) справа и слева непонятные отступы, причем, чем длиннее была надпись на кнопке, тем боль?е отступы. Вот как-то так:

ли?ние отступы в кнопках в браузерах ?нтернет Експлорер 5-7

Тогда как в остальных браузерах (для меня это Файрфокс, Опера и Хром) все выглядит так:

отступы в кнопках в файрфоксе

отступы в кнопках в файрфоксе

Никаких непонятных отступов, все одинаково, независимо от количества знаков в надписи.

? что же делать? Как привести в чувство этот загадочный ?Е? (далее…)

Как заставить ?Е6 держать указанную ?ирину?

Четверг, 23 апреля 2009

Есть у ?Е6 такая особенность: если какому-либо блоку задать ?ирину, то ?Е6 воспринимает эту ?ирину, как минимально возможную и, если содержимое блока оказывается ?ире заданной ?ирины, то ?Е6 растягивает блок до размеров содержимого. Тогда как другие браузеры, в полном соответствии стандартам сохранят указанную ?ирину, а содержимое просто покажут выступающим за пределы блока (если не указано свойство overflow, отличное от значения visible (значение по умолчанию)).

(далее…)