Как стать автором
Обновить

Комментарии 113

Жесть. Я недооценивал труд веб-работников.
А демку можно где-то глянуть?
Да-да, покажите демку. Очень интересно, я как раз ковыряю гугло и ExtJS кнопки.
Читаем update к статье, или просто переходим по ссылке:
rayz.ru/misc/custombuttons/
Да чтоб я на сайты ходил с такими кнопками…
Простой пример — GMail :-) И ходят, поверьте мне, ходят!
Ходят, потому что аналогов нет. Но после введения этих кнопок, у меня сначала было какое-то отвращение к ним. Но это со временем прошло. Сейчас уже не обращаю на них внимание.
Ой, да ладно ) Ну в конце-концов, если не утрировать, то какая разница? Кнопки то функциональны, во всех смыслах, выглядят оригинально и достаточно строго, выполняют свою работу. Чего же боле? Отчего же не ходить и не пробовать?
К тому же, лишние 20кб уже и не заметить. А ежели так тяжко, то можно включить стандартную версию (ну это касательно только гмыла :))
Полностью согласен. Даже больше, так кнопки выглядят симпатичнее, если, конечно, они красиво задизайнены. А сайтов таких действительно много, тот же фейсбук.
Вот есть хороший топик про кнопки habrahabr.ru/blogs/css/56389/
Я больше делал упор не на сам результат «посморите, какая красота», а на функциональность и применение.
В смысле — как это сделать и каковы подводные камни.

Поэтому и заголовок — Исследование…
У вас код избыточный, посмотрите в камментах мой пример.
Вы меня простите конечно, но 126кб плюс 36 секунд ожидания окончания загрузки (в примере отвалился один файл) — проверял Firebug'ом — ради двух кнопок — это как-то чересчур.
Пардон, сейчас поправим ;)

В реалии интерфейс продукта требует наличие какого-нибудь js-фреймворка, и вышеописанное делалось далеко не для двух кнопок, а для сотен ;)

И не только для кнопок.

Думаю, вскоре появится ещё одно небольшое исследование по поводу другого рода «удобности»
задисейбленая кнопка не нажимается если жать где-то по середине, а если навести где-то с самого краю и попробовать нажать, то оппаньки :)
;) Это не баг, это фича
В цсс в демке забыл добавить пару строчек
В опере и ие6 жмется по всей ширине.
Эх… старая избитая тема. Учитывая, извините меня, ублюдочный уровень поддежки оформления стиля кнопок как со стороны браузеров, так со стороны и стандартов проще всего использовать дефолтные стили офорления. А свете юзабили это даже предпочтительно делать, т.к. на каком бы сайте я не был я сразу вижу, где есть кнопки ибо стиль оформления у них от сайта к сайту один и тот же — дефолтный.

И вообще главное ехать, а не шашечки ;)
Обоснуйте.

Кнопки рисуются как бы следуя законам гуя в котором порожден был браузер.
Любое приложение использует один стиль отображения интерфейса и по идее не должен выглядеть иначе. А тут у нас разброс и шатание. Я понимаю, какую сторону вы представляете. И вы правы, только не в моем случае.

Не с проста я статью начал со вышеперечисленных слов. Это было сделано ДЛЯ веб-приложения.
Юзабилити и дизайн имеет смысл. И попробуйте оспорить.
А я о веб и говорю. Законы гуя это все звучит хорошо я с этим согласен. Но в рамках какого то скомпилированного приложения. В рамках же веб приложения которое работает череб браузер не совсем согласен. Порой видишь на страницах такой закон гуя, что хочеться настучать дизайнеру по созвучному выступающему органу… Я привык к определенному виду кнопок в своем браузере, на какую бы страницу я не попал я всегда на ней без труда нахожу нужные кнопки. Но порой не сразу получается сориентироваться когда кнопки следуют законам гуя (особо когда их делает кривой дизайнер или кодер). И это не говоря уже о том, что у меня картинки отключены по дефолту…

Я не говорю, что не стоит следовать общей задумку дизайна, но, имхо, процентах в 90 это излишество. Лучше сосредоточиться на создании более практичных элементов страницы чем сбивать пользователя с привычного визуального образа кнопки в его браузере.
Теперь увеличиваем размер шрифта средствами браузера и смотрим, что стало с кнопками. ;-)
Только один маньяк из десяти использует эту функцию.
Остальные 99.9999% пользователей сети даже не догадываются о существовании этого.

Тем более адекватные браузеры давно делают zoom.
фф3 — адекватный браузер? ну, по крайней мере, зум делает. Но с кнопками, как нам и намекал предыдущий оратор, при зуме происходит жопа.
20% пользователей, в отличие от пользователей IE, выбрали Firefox осознанно. И столь же осознанно изменят размер шрифта. Не сомневайтесь. ;-)
Что-то я не понял, а в чем проблема? Графика растягивается? :)
оу :) Какой ужас!
НЛО прилетело и опубликовало эту надпись здесь
Вид → Масштаб → Только текст.
я думаю, что можно немного усложнить разметку и сделать их масштабируемыми по самое «не балуйся» :)
Не учитывается размер шрифта, в IE задизабленная кнопка реагирует на… фингеринг )
блин. фф3 же поддерживает системные оформления. зачем еще нужны эти сложные и объемные велосипеды
кроссбраузерность нужна видимо кому-то все еще
кроссбраузерность — ненужный миф. бровзер должен быть удобным. отсутствие кроссброузерности — лишний повод подтолкнуть пользователей пересесть на нормальные бровзеры.
нормальные — это на оперу?=) не раздувайте холивар:)
холивар не подразумевался. бывают нормальные бровзеры и бывает IE. в силу того что у IE нет сторонников, холивар не получится.
<holywar:off>
ie вполне себе нормальный браузер — он умеет показывать страницы.

Докажите обратное той колде народа, что его используют (какая-то часть даже сознательно) :D
</holywar:off>
да вот только страницы он не умеет показывать. и 99.9% кто его использует делают это несознательно.
Браузер, бровзер, броузер. Вы бы уже определились с написанием (подсказка: правильно — браузер). ;-)
бровзер. все что с кросс — от лукавого
А теперь внимание: правильный ответ (подсказка: смотреть надо на транскрипцию). ;-)
да и без транскрипции ясно как слово browser читается по-английски, достаточно вспомнить правило о произношении «o» под ударением. но ведь мы ж здесь не на чистом английском говорим. и вообще речь о бровзерах.
Жесть.
Специально поинтерисовался у нашего переводчика:

англичане: "[броузер]"
американцы: "[браузер]"

Правильно и БРАУЗЕР и БРОУЗЕР, но никак не бровзер (уж вы меня простите, но это вообще не правильно). Так говорят все как хотят. Да, кстати и ВАЛИДАЦИЯ звучит как [вэлидэйшн].

GO — Гоу
MAKE — Мэйк
RUN — Ран
BROTHER — Бразер, браза.
>англичане: "[броузер]"
вот это очень интересно. похоже это какие-то новые тенденции в разговорном языке англичан. тем более что они нарушают правила произношения. да и вряд ли англичане говорят р на конце слова.

>BROTHER — Бразер, браза.
да, браза, ты очень ч0ток.

для тех кто все еще в танке. бровзер это не то как читается browser. бровзер — это программа вэб страниц, т.е. то что в английском называется browser
Тогда уж бровСер
вам не кажется, что тут явно что-то не так?
Всё нетак!
Кажется. :) Но все началось далеко до создания кода, не так ли?
позвольте спросить, а чем ExtJs то не подошел? там и стилизация есть и иконки на кнопке
:) Весом библиотек, скоростью работы, надобностью/ненадобностью функционала.
Афигеть, конечно, стока кода и стилей и все ради какой-то кнопочки :)
Должно быть таких кнопочек в проект дофигища.
Согласен, тут можно половину отрезать.
Предложите оптимальный код, будем хлопать в ладоши!
Лучше взять обычный <button>…</button>, сбросить его стандартное оформелние и положить внутрь необходимые элементы. Тогда кнопка сохранит превычное поведение и будет оформлена в нужном стиле.
Я так и сделал :-) pavelgorlov.ru/pgbtn/
Молодец! Мне нравится реализация.
В никс браузерах глючит. подтверждаю (:
«больная» кнопка, на которой написано, что она не лечится, почему-то выздоравливает :)
при нажатии на кнопку текст смещается немного — как и должно быть — респект
Спасибо! У меня нехватает вермени, чтобы пофиксить это по все остальные браузеры и кармы для того, что бы писать об этом.
В вот мой вариант кнопки, без таблицы и с png32. И код меньше.

pavelgorlov.ru/pgbtn/

+ jQuery PG-плагин
+ Невалидны CSS код :-)
+ Два встроенных метода:
.pgFlash() — флешит кнопку,
.pgEnable(boolean) — выключает\включает кнопку, а при включеннии флешит.
+ Одна картинка:
Будем лечить! Самое страшное это заставить эту конопку быть резиновой и поддерживать png-32 на фоне в IE6
пациент мёртв, чего там лечить.

вы хоть понимаете что если умудрились сделать разное поведение в ff2, ff3 и ff3.1 — то с огромной доли вероятности вам для каждого багфикса фф придётся кнопки переделывать.

Да и значит накосячили вы там порядком. Слишком шатко.
А прозрачность png-8 методом cssing.org.ua/2008/11/07/png-8-alpha/ не пробывал заменить? Почти везде удается безболезненно перейти с png-24 на png-8. Часть проблемы уйдет так думаю.
Нет, не читал, но читал в техногрете, а потом и проверял.
ИЕ неумеет, а гуглхром глуюч, отображать png8+alpha_channel

Хотя вы знаете, у меня нинастолько большое изображение, что бы его оптимизировать
ИЕ6 умеет вполне адекватно, в данном случае думаю разница будет малозаметно. Chrome тоже в порядке. В статье выше указанной описан способ предварительной обработки изображений.
Я боюсь подумать о выпадающем списке в Ваших руках… ;-)

ЗЫ В Хроме 2.0.169.1 кнопка PushMe не работает
Кнопка ПушМи DISABLED. Вы статью читали?
Про кнупки гмейла тут
stopdesign.com/archive/2009/02/04/recreating-the-button.html
и тут stopdesign.com/eg/buttons/3.0/code.html#
Маленький оффтоп: а как Вы счиатаете, при наведении на кнопку курсор должен становиться таким же, как при наведении на ссылку или оставаться стрелкой?
Мне кажется, что любой элемент на сайте должен вести себя также, как и в реальной ОС: при наведении кнопка подсвечивается, а курсор остаётся обычной стрелкой.
НЛО прилетело и опубликовало эту надпись здесь
Кнопки в стиле системы. Эта система — продукт для которого делаются кнопки. :)
Потрясающая работа. Спасибо за хорошую статью.

Мне стало интересно: можно ли сделать кнопку, которая растягивалась бы не только по ширине, но и по высоте? Нужна таблица на девять ячеек?
Нет.
Будут некоторые изменения со стилями и позиционированием бэкграундов. В остальном все остается примерно так же.
Я так и не понял что изменилось.
s57.radikal.ru/i155/0904/b4/1af64d5001d3.png
Кнопка как была обчыной так и осталась, разве что в правой какая то иконка появилась, которая невписывается.
Не скопированы картинки-спрайты для кнопок.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
вот она — логика пользователей браузера опера.
да и Опера в расчет не бралась при изготовлении. :) Я конечно извиняюсь перед пользователями оперы, что обошел этот браузер во время изготовления статьи.
Ахахаха =) Браво!!!
Так их, этих двух!!!
эм… 9.6 — не криво =)
Ссылка не открывается :-/
не знаю почему может не открываться.

попробуйте нагуглить Wii Buttons — по ссылке, собственно — они.
[span][div]...[/div][/span] — некрасиво, даже если через CSS переопределено.
Кстати, если вы используете jquery, не смотрели в сторону CSS FrameWork jquery UI? Там куча заготовок для кнопок, панелей, иконок и т.п.
Я знаю про него, конечно же, но нет. Какой бы был смысл в моем опыте и исследовании?
>Какой бы был смысл
В принципе подобный опыт всегда положительный, Но я придерживаюсь мнения, что на смену всякой самодеятельности в области ui должны придти типовые решения. Может конечно я и ошибаюсь. Но глядя на эволюцию ui в десктопных приложениях все к тому должно идти.
По-моему слишком перегружено все, а jQuery можно юзать для наведения и нажатия.
>а jQuery можно юзать для наведения и нажатия.
хорошо хоть jQuery, а не extJS.

Для наведения и нажатия НУЖНО юзать соответствующие CSS-свойства hover и active. Они кстати и в ie6 ограниченно но работают.

а что будете делать для?
input type=file…
Видимо, отрисовывать заново, выставляя основному элементу 100% прозрачность. Где-то эта техника описывалась.
Соберу плагин из моей кнопки и моего textinput'a с включенным readonly
а firefox на первой кнопке появляется рамка при нажатии
вторая кнопка не нажимается хотя в explorer 6 и opera 9.5 кнопка визуально нажимается
Ничего себе))
интересное исследование.

небольшая опечаточка:

// Замечательный атрибут,
// предотвращающий выделение текстовой информации внутри блока
newBtnContainer.setAttribute('uselectable', 'on');

uselectable -> unselectable
бу

$(el).disableSelection() / $(el).enableSelection() — кроссбраузерный вариант (effects.core вроде).
да, верно. такое есть в ui.core. там: .attr(«unselectable»,«on»).css(«MozUserSelect»,«none»).
и у автора newBtnContainer не jquery объект по коду.
не только:

(ui.core.js)
disableSelection: function() {
    return this
        .attr('unselectable', 'on')
        .css('MozUserSelect', 'none')
        .css('KhtmlUserSelect', 'none')
        .bind('selectstart.ui', function() { return false; });
},
спорно…

а почему бы в IE6/7 рисовать обычные инпуты (один фиг юзеры оных браузеров не особо за финтифлюшками следят) а во всех остальных (включая IE8) по-человечески заюзать inline-block (коим на самом деле должна быть кнопка, а вовсе не inline).
1) это будет гораздо быстрее работать
2) в IE при этом пострадает только дизайн, что терпимо, лишь бы функционал работал
3) будет больший охват браузеров. Уж лучше инпут обычный показать, чем все развалилось бы нахрен =)
«В конце концов за основу была взята концепция, используемая в ExtJS, а именно — таблица.»

Блин, да вы оттуда все стащили и html и css и спрайты. Не есть гуд. Про лицензию вспомните.
Спрайты сделаны своими руками. И код, впрочем тоже. ;) А то, что я подглядел идею не делает меня нарушителем лицензии. Все свое.
У меня в Опере 9.25 глюки. Края и средина кнопки разорваны…
Это просто не описуемо, к чему такие страшные извращения?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории