Известная проблема: подогнать под дизайн сайта поле загрузки файов: добавить бордюр, сделать внутренние отступы, сменить кнопку и т.д. Вот и я поимел первый опыт борьбы с ней. Хочу попросить покритиковать мое решение.
Сразу скажу, что основано оно на идее перекрытия настоящего файл-инпута кнопкой и текстовым полем. Мне почти подошло решение предложенное здесь, за что автору большое спасибо, но пришлось немного допилить под себя.
Моя задача: кнопка BROWSE выводится справа от текстового поля. Занимаюет ширину "по ширине текста в ней". Все оставшееся место уходит на текстовое поле имени файла.
Подход к решению: делаем два div`а: в первый помещаем input type=text. Во второй input type=button и "под нее" загоняем input type=file. Загоняем при помощи абсолютного позиционирования и прозрачности. На div`ы вешаем разметку.
Далее надо как-то связать настоящий, скрытый file-input и новое текстовое поле, ведь когда пользователь выбирает файл, то путь к этому файлу остается в скрытом поле. Автор изначальной статьи предлагает скрипт:
Вешаем его на настоящий, скрытый, файл инпут. Он находит наше текстовое поле и отдает ему имя файла из настоящего файл-инпута. К сожалению, только имя, а не полный путь, но этого, думаю, достаточно.
Далее автор изначальной статьи предлагает к новому текстовому полю привязать аргумент:
readonly="readonly"
и оставить так. Можно, но по мойму это как-то сбивает с толку. При клике по текстовой области нетемезированного файл-инпута должно открывать окно обзора файлов, как при клике по кнопке. Предлагаю на этот случай скрипт:
1) После выбора файла видно только его название, а не весь путь.
2) Есть проблема с заданием ширины настоящего, скрытого файл-инпута. Хотелось бы задать ему ширину в 100%, чтобы он растянулся на весь родительский блок-кнопку. Но тогда получаем такую картину под кнопкой:
Соответственно над текстовой областью настоящего инпута у нас тектовый курсор. И никакими cursor-свойствами CSS это не лечится. По этому убираем ширину в 100% и ставим какой-нить громадный шрифт. Получаем следующую картину:
Мы видим только верхнюю часть кнопки над которой годный курсор arrow, но из-за такого выпендрежа ширина кнопки, как видно fire-bug`ом занимает черти сколько места. Боюсь, как бы это нигде не всплыло потом.
3) Я практически не знаком с JS, и не знаю, как обобщить используемые JS-вставки на случай с несколькими инпут-файлами на странице. Хотелосьбы отказаться от айдищников и поиска элементов по айдишнику в пользу this и селекторов типа: .c-file-input-button input[type=text] и .c-file-input-button input[type=file]. Если есть идеи, подскажите, пожалуйста!
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Здравствуйте, подскажите какой тег использовать для увеличения значения, пример на картинке.
Вроде, про такой тег я слышала. Если есть тег прогресс бар, значит и такое должно быть.
Question
Cypher76
Известная проблема: подогнать под дизайн сайта поле загрузки файов: добавить бордюр, сделать внутренние отступы, сменить кнопку и т.д. Вот и я поимел первый опыт борьбы с ней. Хочу попросить покритиковать мое решение.
Сразу скажу, что основано оно на идее перекрытия настоящего файл-инпута кнопкой и текстовым полем. Мне почти подошло решение предложенное здесь, за что автору большое спасибо, но пришлось немного допилить под себя.
Моя задача: кнопка BROWSE выводится справа от текстового поля. Занимаюет ширину "по ширине текста в ней". Все оставшееся место уходит на текстовое поле имени файла.
Подход к решению: делаем два div`а: в первый помещаем input type=text. Во второй input type=button и "под нее" загоняем input type=file. Загоняем при помощи абсолютного позиционирования и прозрачности. На div`ы вешаем разметку.
Далее надо как-то связать настоящий, скрытый file-input и новое текстовое поле, ведь когда пользователь выбирает файл, то путь к этому файлу остается в скрытом поле. Автор изначальной статьи предлагает скрипт:
Вешаем его на настоящий, скрытый, файл инпут. Он находит наше текстовое поле и отдает ему имя файла из настоящего файл-инпута. К сожалению, только имя, а не полный путь, но этого, думаю, достаточно.
Далее автор изначальной статьи предлагает к новому текстовому полю привязать аргумент:
и оставить так. Можно, но по мойму это как-то сбивает с толку. При клике по текстовой области нетемезированного файл-инпута должно открывать окно обзора файлов, как при клике по кнопке. Предлагаю на этот случай скрипт:
привязываем его к ненастоящему, текстовому полю.
Вроде все работает, но я не уверен. По этому и прошу покритиковать и может быть натолкнуть на путь "лечения" минусов:
Результат: тут.
Минусы:
1) После выбора файла видно только его название, а не весь путь.
2) Есть проблема с заданием ширины настоящего, скрытого файл-инпута. Хотелось бы задать ему ширину в 100%, чтобы он растянулся на весь родительский блок-кнопку. Но тогда получаем такую картину под кнопкой:
Соответственно над текстовой областью настоящего инпута у нас тектовый курсор. И никакими cursor-свойствами CSS это не лечится. По этому убираем ширину в 100% и ставим какой-нить громадный шрифт. Получаем следующую картину:
Мы видим только верхнюю часть кнопки над которой годный курсор arrow, но из-за такого выпендрежа ширина кнопки, как видно fire-bug`ом занимает черти сколько места. Боюсь, как бы это нигде не всплыло потом.
3) Я практически не знаком с JS, и не знаю, как обобщить используемые JS-вставки на случай с несколькими инпут-файлами на странице. Хотелосьбы отказаться от айдищников и поиска элементов по айдишнику в пользу this и селекторов типа: .c-file-input-button input[type=text] и .c-file-input-button input[type=file]. Если есть идеи, подскажите, пожалуйста!
Скачь код странички
Код:
Edited by Cypher76Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.