на сафари и фф работает.
фишка сама по себе интересная и работает гладенько, но есть у меня соображение, что такие вещи может быть стоит не форматировать, а оставлять дефолтные форматы браузеров, чтобы не смущать пользователей. ведь пользователь, желая подгрузить файл, ищет глазом привычный интерфейс для загрузки, а ему такую, хоть и козырную, но непривычную фишку предлагают. если б я с таким столкнулся, я бы в первый момент не понял, где файл подгружать, даже несмотря на всплывающую подсказку – просто за столько лет стандартного интерфейса загрузки глаз настолько привык к одному и тому же, что стормозил бы.
Вы пожалуй слишком большое внимание уделили используемым в примерах картинкам, можно ведь что-нибудь достаточно вменяемое воткнуть, не в ущерб удобности.
С курсорами и прочими красивостями надо ещё поработать, я с вами согласен.
По поводу идеологии — можно подробнее? Про что вы?
Всё различие между тем, что показали вы, и тем, что показал я — это наличие поля, с адресов самого файла на вашей машине и полное отсутствие яваскрипта в вышеописанном варианте. Из-за последнего пункта, как мне кажется, способ имеет право на жизнь, пусть не везде и не всегда его можно применять.
Кстати, по второй ссылке в комментариях увидел примерно то, о чём я писал. Ну это было очевидно, что я не Америку открыл.
Неясно, зачем это надо делать. Имя файла не видно, превью картинки тоже просто так не сделать. Крайне неудобно для пользователя. В качестве лабораторного примера сойдет, но на хабр-то это зачем?
Если добавлять яваскриптовые или средства сюда, то получится снова не то: автор говорит исключительно про вариант с версткой. С предыдущим «оратором» согласен. Сделано не айс
это просто демка, имя файлап можно показать отдельно с помошью JS, получится как в сафари… просто все инпуты как инпуты, их можно стилями подправить, а вот файлы нельзя… а так можно под дизайн обрамлять
соглашусь — отсутствие js явный плюс!
идеология в том, что это как минимум должна быть кнопка (она ассоциируется с действием). то есть хотя бы вместо дива label или inpu type=button/image или а, соответсующе оформленные. title немного спасает положение, помогая пользователю понять, что он может совершить какое то действие
Можно навести красоту, к примеру, написав на самой картинке — «выбрать файл», сделать заголовок текстом над картинкой, поместив его в label. Способов показать пользователю, что при нажатии будет такой-то экшен довольно много (правда к стандартному виду файл инпута вообще не надо пояснений — но речь не об этом).
Это же просто пример (пример именно того кода, что находится в топике) — не относитесь к нему серьёзно — это незаконченный продукт, а сырая болванка.
Возможно его и правду не надо было выкладывать на Хабр.
Этому способу уже сто лет, но знают его и пользуют действительно единицы.
Первый раз я его увидил на Новом интерфейсе Яху-почты, только там они для скрытия input используют более корректную технику — css2:clip;
Браузер FF2, в приведенном вами демо: активная область (там где воспринимается клик) смещена примерно 15px вправо, то есть левая часть кнопки не реагирует на клики (курсор попадает в file-name-field).
Спасет direction: rtl
В целом решение считаю вполне изящным, спасибо. До сих пор пользовался техникой движения инпута под курсором, теперь перейду на ваш метод :)
По поводу невозможности вставить адрес файла через копи-паст, то есть обходной манёвр. Уже в самом диалоге выбора файла можно запросто вставлять полный путь файла и смело жать «Открыть».
Кастомизация input type=”file” с помощью CSS