Pull to refresh

Декоративная кнопка Обзор. Делаем невозможное.

Website development *
Никогда бы не подумал, что буду писать что-то про верстку. Но жизнь штука странная. Да и люди бывают не очень продвинутые в web-технологиях и просят сделать вроде бы простые, но на первый взгляд невозможные вещи.
Думаю, все знают стандартный элемент формы для загрузки файлов.
А вот теперь попробуйте сделать его красивым. «Легко, ведь есть CSS!!!» — скажут многие, и многие будут правы. Но попробуйте сделать так

Пару лет назад по прихоти заказчика мне пришлось столкнуться с такой проблемой.
Как я ее решал, написано в моем личном блоге.
Я конечно понимаю, что лучше использовать стандартные элементы форм и не париться, но попробуйте объяснить это заказчику, у которого уже есть готовый дизайн :)
Total votes 17: ↑9 and ↓8 +1
Views 2K
Comments 38

PHP: проверка данных

Lumber room
Думаю, все, кто когда-либо программировал, знают, как муторно и скучно зачастую бывает писать алгоритмы для проверки входных данных. Я хочу предложить вам одно решение, которое поможет собрать свою собственную базу, которую можно будет использовать от проекта к проекту, изменяя и дополняя под свои нужды.
Пример приведен на PHP, но, я уверен, вы без труда сможете перенести его на любой другой язык.
Читать дальше →
Total votes 17: ↑11 and ↓6 +5
Views 1.6K
Comments 68

Одинокий инпут

Website development *
Одинокий инпут ищет сабмит своей души. О себе: бордерколор карий, бэкграундколор темный, бордестайл нордический, макссайз 22 пикселя.
Total votes 176: ↑153 and ↓23 +130
Views 237
Comments 58

Стилизация файл-инпутов

Interfaces *
Результат стилизации файл-инпута
Привет. Сегодня я хочу вам рассказать о том, как можно изменить внешний вид файлового инпута.

Дело в том, что изменение внешнего вида инпутов, как правило, не вызывает трудностей, но этот вид инпутов отличается от остальных. В первую очередь это связано с безопасностью, во вторую с тем, что каждый браузер по своему отображает этот элемент, и на это почти нельзя повлиять.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 37K
Comments 163

Кнопка «отправить». Просто и полезно.

Interfaces *
Достаточно просто улучшить юзабельность формы простым, но крайне эффективным способом — деактивация кнопки «отправить» после её нажатия.

Дабы не быть голословным, приведу пример для jQuery:

$('#id_кнопки').click(function()
 {
  $('this').attr('disabled', 'disabled')
 }
);


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

Как подсказал Хабрапользователь nooze, стоит учитывать, что в случае AJAX реакции на отправку, следует учесть ошибки (например, не совпадающие логин и пароль, или таймаут запроса)

P.S> Возможно, тема уже поднималась, но упоминания на хабре не нашёл.
P.P.S> Спасибо за то что насрали в карму, вы хорошие люди :)
P.P.P.S> Я не принимаю модели хабра, в которой автор выкладывает всё и вся в топ, в таком случае просто нечего обсуждать.
Total votes 104: ↑71 and ↓33 +38
Views 3.8K
Comments 48

Тонкости свойства disable у кнопок формы, отправляемой на сервер (Как делать кнопки неактивными)

Interfaces *
Уже неоднократно на хабре (вот в этой публикации и в этой) ставился вопрос о том, что было бы хорошо кнопкам формы, отправляемой на сервер, ставить свойство disabled = "disabled".

Однако, до сих пор так и не разобрались, зачем это нужно и как все-таки это делать. Казалось бы, что может быть проще и о чем здесь вообще можно разговаривать, ан нет — на поверку все оказалось не так тривиально. Сразу замечу, что нижеследующие рассуждения применимы к обеим типам форм: как отправляемым через обычный SUBMIT, так и с помощью AJAX.
Читать дальше →
Total votes 75: ↑65 and ↓10 +55
Views 59K
Comments 38

Исследование на тему замены стандартных кнопок

JavaScript *
В процессе работы над интерфейсом одного продукта, появилась надобность в изготовлении собственного дизайна кнопок. За это время код, который заменяет стандартную кнопку на требуемую несколько раз переписывался и в данный момент тоже далёк от идеала. Учитывая все текущие проблемы кросс-браузерности, за это время выяснились и получилось нижеописанное.

Допустим, что она должна выглядеть примерно так:


Читать дальше →
Total votes 81: ↑60 and ↓21 +39
Views 2.6K
Comments 113

Контролы форм в html 5

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

Я накидал очень простенькую страничку, куда поместил кучу input'ов с неведомыми мне доселе значениями свойства type и получил такой результат:
Читать дальше →
Total votes 90: ↑86 and ↓4 +82
Views 4.5K
Comments 82

Плагин helpInput (мой велосипед)

jQuery *
imageЗдравствуйте. На днях возникла задача оформить на одном проекте мини-подсказки в полях input(подобно тому, как оформлено поле «поиск по сайту», которое вы можете увидеть в правом верхнем углу Хабры). Проект, на котором надо было оформить поля, написан с использованием jQuery, поэтому решил воспользоваться плагином для этой библиотеки. Пробежался по уже готовым решениям и не нашёл полностью устраивающее меня. Решил мастерить свой велосипед. На мой взгляд, получилось неплохо, хотя в процессе разработки не раз натыкался на подводные камни. Из-за скудного выбора плагинов, решающих эту задачу, я и решил выложить своё «творение» на Хабру. Необходимость в оформлении полей подобным образом встречается часто, авось кому-нибудь и пригодится.

UPD: В ходе обсуждений было предложено пару дельных идей, которые я и реализовал:
1. Обрабатывается не только Tab, но и Shift+Tab
2. Плагин научился работать с автозаполнением (если надо отключить эту возможность — при инициализации установите в значение false ключ autoComplete)
3. Изменились имена ключей(приобрели смысловую нагрузку понятную не только мне)

Читать дальше →
Total votes 73: ↑55 and ↓18 +37
Views 3K
Comments 71

FF — интересный момент, которого раньше не знал

Lumber room
Сразу к делу.

В форме сделал такую конструкцию для автокомплита (два инпута внутри одного label):

label
-> input type=hidden
-> input type=text


И обнаружил, что при таком раскладе текстовое поле не может получить фокус после клика мышью (курсор появляется и тут же исчезает, если начать ввод с клавиатуры — ничего не происходит). После выяснил: если оба инпута сделать текстовыми, то отчетливо видно, что делается: при клике на второй инпут (mouseDown) курсор там появляется, но при mouseUp он тут же перескакивает на первый инпут. Раньше такого не знал, да и поиск не шибко помог (может, конечно, плохо искал), вот и решил опубликовать.

Да, кстати, если перемещаться по форме с помощью Tab — все нормально, фокус не теряется. И еще — в хроме такого эффекта нет, больше нигде не смотрел.
Total votes 14: ↑6 and ↓8 -2
Views 160
Comments 13

Про цвета и input'ы

CSS *

Вступление


Привет, Хабр!
Это мой первый хабратопик. Надеюсь, его прочитает хотя бы полтора верстальщика. Если после этого хотя бы один сайт станет лучше, я буду очень рад.

Ничто не предвещало беды


Как и любой слегка красноглазый линуксойд, я люблю экспериментировать. До сборки релиз-кандидатов ядра и ковыряния в экзотических оконных менеджерах дело не дошло, но в поисках приключений я все же пересел на тестовую ветку моего дистрибутива, что привело к переезду на четвертую версию КДЕ.
Несколько месяцев до переезда я присматривался к новым кедам в виртуальной машине, игрался с плазмой и новым оформлением. В один прекрасный день решил я попробовать темную цветовую схему «Wonton Soup», да так на ней и остался, хотя всю жизнь использовал светлые схемы.

Суровая реальность


Все было замечательно, плавные градиенты радовали глаз, мелкие шероховатости были уничтожены опытными руками и напильником. Но осталась одна глобальная проблема, с которой сталкиваются все пользователи темных цветовых схем: дизайнеры и верстальщики абсолютно не задумываются над тем, что кто-то может использовать нестандартные темы. Оформленные в светлых тонах страницы сами по себе не страшны, если постоянно не переключаться с темных страниц на светлые.
Неприятности появляются при сочетании двух факторов:
  1. браузер использует системные стили и цвета для input'ов на страницах. Абсолютное большинство современных браузеров именно так и поступает для лучшей интеграции в окружение
  2. верстальщик прописывает в CSS свой цвет текста для полей ввода, кнопок или списков, но оставляет дефолтный фон. Либо наоборот, меняет только цвет фона
В абсолютном большинстве OS и DE по умолчанию элементы интерфейса имеют светлый фон, текст же рисуется черным цветом. В этом случае ничего страшного не происходит, мы просто увидим, к примеру, input'ы с темно-серым текстом на светлом фоне, как и задумывалось в дизайне страницы.
Но в темных схемах может случится конфуз, и мы увидим темно-серый текст на темном же фоне. Т.е, ничего не увидим.

Доска позора


Приведу скриншоты с некоторых популярных сайтов, посещение которых вызывает у меня желание послать луч ненависти верстальщикам.
Читать дальше →
Total votes 186: ↑144 and ↓42 +102
Views 7.3K
Comments 114

Плагин, превращаем input text в «калькулятор»

jQuery *
По долгу службы написал плагин zeninput для jQuery, многим он понравился, решил поделиться с общественностью.
Пользователям нашего сервиса часто приходится вводить несколько сумм и дабы не утруждать их поисками калькулятора был написан данный плагин, он превращает обычный intput text в калькулятор.



В плагине обрабатываются события onready, onerror, onfocus, onblur и т.д. поэтому его можно расширить как захочется. Также блокируется ввод неподходящих символов.

Работоспособность проверялась в IE6-8 и Браузерах.

Поиграться с плагином можно на странице с демками, там же выложено более подробное описание, событий.

UPD1 dohlik :)
Total votes 110: ↑106 and ↓4 +102
Views 3.3K
Comments 32

Календарный период — улучшаем интерфейс

Interfaces *
Работая над интерфейсом очередного крупного проекта я старался дотошно проработать каждый его элемент. Конечно нет предела совершенству и, как это обычно бывает, заканчивая один проект ты уже видишь кучу его недостатков, делаешь анализ и выводы на будущее.

Тем не менее, в результате, работая над drop-down выбором календарного периода, в голову пришла интересная мысль не разбивать дату на две отдельные формы «С» и «По», как это всегда делают, а объединить их в одну форму и выпадающий блок.

Конечно кодеру предстоит в данном случае немного больше попотеть, но пользователю очевидно будет намного легче ориентироваться в календаре. Выбирая начальную дату он сразу же наглядно и быстро может выбрать конечную дату своего запроса, в том же окне, и не надо держать в голове и пытаться запомнить что же ты выбрал в предыдущей форме. Тем более в input-формах практически никогда не выводят день недели и, в процессе выбора конечной даты запроса, зачастую забываешь какой день недели собственно был у первой выбранной даты?

Если короче, сейчас сплошь и рядом, в том числе на именитых туристических сайтах, используют две отдельные формы для определения календарного периода, при чём одновременно, как правило, можно открыть только одну из них:

image
Пример обычной формы на Booking.com. Календари «С» и «По» разнесены в разные блоки

Как же улучшить этот интерфейс?
Total votes 62: ↑46 and ↓16 +30
Views 3.2K
Comments 56

Что скрывается за формой редактирования сложного объекта?

Developer Soft corporate blog
В этой статье мы продолжаем знакомить вас с подходами, реализованными в планировщике XtraScheduler. В предыдущей статье мы рассказывали о синхронизаторе данных, на этот раз поговорим о формах.



Довольно часто в приложениях можно встретить формы, которые предназначены для ввода или редактирования объектов с большим количеством зависимых свойств. Построение таких форм ввода вызывает «головную боль» у разработчиков: рутинная работа по размещению редакторов, написание кода инициализации, валидации, обработчиков событий…

Так как же делать такие формы быстро и надежно?
Читать дальше →
Total votes 49: ↑35 and ↓14 +21
Views 20K
Comments 40

Тюнинг резинового текстового поля

CSS *
Sandbox
Думаю, что многим верстальщикам (и не только) приходилось верстать текстовые поля (<input type=«text» />), задавая им произвольные размеры. Но как сделать данный элемент резиновым и удовлетворить условиям:
  1. Возможность установки любых горизонтальных и вертикальных отступов у текста;
  2. Элемент должен занимать весь контейнер, в который он помещен;
  3. Клик мышью в любое место текстового поля устанавливает в нем курсор.

Ответ достаточно прост и решается следующим методом:


Читать дальше →
Total votes 47: ↑31 and ↓16 +15
Views 26K
Comments 22

Программирование в PHP для командной строки

PHP *
Предисловие

Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash'e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо.
Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь.
Читать дальше →
Total votes 76: ↑51 and ↓25 +26
Views 39K
Comments 171

Input attribute placeholder

jQuery *HTML *
Recovery mode
Тут уже поднималась тема об использовании такого замечательного атрибута форм как placeholder. И даже приводились примеры на js (ищем по слову placeholder). И не раз было высказано огорчение, потому что в IE данных атрибут не выполняется.

Сам атрибут очень полезен. Особенно радует экономия места при создании форм (особенно в всплывающих формах). Поэтому было решено не отказываться от атрибута, а просто помочь ему заявить о себе и Internet Explorer. На помощь был призван jQuery.
Подробности
Total votes 32: ↑12 and ↓20 -8
Views 24K
Comments 49

Поле с паролем

Website development *JavaScript *
Поля для ввода паролей в браузере встречаются в разных случаях:
  • при регистрации;
  • на форме логина;
  • пароль для чего-то абстрактного.
Каждый раз всплывают одни и те же проблемы и возникает необходимость в одинаковых шаблонных фичах. Чтобы облегчить эту рутинную задачу, я сделал js-библиотеку, которую можно конфигурировать под разные случаи — о ней и будет этот пост.
Что из этого получилось
Total votes 135: ↑125 and ↓10 +115
Views 116K
Comments 78

Ввод дробных значений без смены раскладки

Delphi *Algorithms *
Sandbox
Как часто вам приходится вводить в интерфейс какой-либо программы/web-сервиса дробные значения? Если часто, то, вероятно, вы сталкивались с неадекватным поведением таких полей. Я, например, довольно регулярно бьюсь лбом об абсолютно тупые формы. Хотите знать, почему ввод дробных значений может довести до белого каления, и что с этим делать? Добро пожаловать по кат.
Читать дальше →
Total votes 28: ↑15 and ↓13 +2
Views 14K
Comments 55
1