Как сделать кнопку скачать файл. Бесконечная прокрутка, разбивка на страницы или кнопки «Загрузить еще»? Полностью своя кнопка «Выбрать файл

Кнопки download в количестве 27 для оформления вашего сайта. Формат – png и psd. Скачать с Яндекс Диска .

Пример создания простой кнопки download в фотошопе. Создание такой кнопки не отличается от создания любой другой. И как варианты вы можете использовать другие уроки фотошопа по кнопкам нашего сайта – , . Результат:

Создайте новый документ в фотошопе с размерами 200 на 80 пикселей и прозрачным фоном.

Возьмите инструмент «Прямоугольник с закругленными краями”. В настройках инструмента активируйте “стиль-заливку” и радиус = 10, цвет фигуры – любой.

Зайдите в стили слоя фигуры и активируйте “Наложение градиента”. В редакторе градиента проставьте цвета: #2c0591, #6586e7, #6586e7 и #ffffff.

Градиент – линейный, угол – “-90”, режим нормальный, непрозрачность – 100%.

Теперь активируйте обводку в стилях слоя. Настройки обводки: размер – 6, положение – снаружи, режим – нормальный, непрозрачность – 100%, тип обводки – градиент, цвета градиента – #000000, #000000, #eeab35, #eeab35, #000000, #000000, стиль – разбивка фигуры, угол 90. Скриншоты ниже:

Получили:

Теперь берем иснтрумент “Овальная область” любого цвета и рисуем круг на кнопке слева. Для того, чтобы получился идеальный круг зажимаем клавишу Shift.

Теперь переходим в стили слоя фигуры окружности и применяем следующие параметры:

Результат:

Теперь берем фигуру стрелки , ее вы найдете в стандартном наборе Стрелки:

Нарисуйте фигуру так, чтобы она по размеру не выходила за пределы круга. Цвет фигуры – белый. Дублируйте слой со стрелкой (cTRL +J). Переместите одну из стрелок так, чтобы одна находилась под другой:

Выделите 2 слоя со стрелками (кликните поочередно по кадждому из слоев с зажатой клавишей Ctrl). После чего – клик правой кнопкой мыши и выберите пункт “Образовать смарт-объект”.

Зайдите в стили смарт объекта (двойной клик по слою смарт-объекта) и примените параметры наложения – тиснение и контур. Настройки тиснения:

Настройки Контура оставьте без изменений.

Нам остался последний штрих – надпись Download. Инструмент Текст, шрифт по жирнее (в примере – шрифт TR). Цвет вводимого текста – #f5e0ad. Стиль слоя – активируем Обводку и выставляем значения: размер – 4, положение – снаружи, режим – нормальный, непрозрачность – 100, тип – градиент (черный по краям, прозрачный в средней части), угол – 0.

Для того чтобы можно было загружать на сервер один или несколько файлов, в форме применяется специальное поле. В браузерах Firefox, IE и Opera такой элемент отображается как текстовое поле, рядом с которым располагается кнопка с надписью «Обзор...» (рис. 1). В Safari и Chrome доступна только кнопка «Выберите файл» (рис. 2).

Рис. 1. Вид поля для загрузки файла в Firefox

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

Синтаксис поля для отправки файла следующий.

Атрибуты перечислены в табл. 1.

Прежде, чем использовать данное поле, в форме необходимо сделать следующее:

  • задать метод отправки данных POST (method="post" );
  • установить у атрибута enctype значение multipart/form-data .
  • Форма для загрузки файла продемонстрирована в примере 1.

    Пример 1. Создание поля для отправки файла

    HTML5 IE Cr Op Sa Fx

    Отправка файла на сервер

    Хотя можно установить ширину поля через атрибут size , в действительности ширина никак не влияет на результат работы формы. В браузерах Safari и Chrome этот атрибут вообще никакого воздействия не оказывает.

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

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

    В табл. 2 показаны некоторые допустимые значения атрибута accept .

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

    HTML5 IE 10+ Cr Op Sa Fx

    Загрузите ваши фотографии на сервер

    Не все браузеры поддерживают новые атрибуты. IE полностью игнорирует multiple и accept , Safari не поддерживает accept , а Firefox не работает с MIME-типом, только с ключевыми словами. Поэтому в примере выше специально для Firefox установлено значение image/*,image/jpeg . Также учтите странную ошибку в Опере, она не допускает пробелы после запятой внутри accept .

    Результат примера показан на рис. 3. Обратите внимание, что из-за наличия multiple несколько изменился вид поля.

    Изучая веб-программирование, я не нашел внятного решения проблемы оформления загрузки файла на сервер при помощи одной кастомной кнопки.

    Предлагаю на суд сообщества свой велосипед. На написание данного текста вдохновил Способ №5 из материала Делаем красивый input для адаптивного сайта … И да - все работает в IE, начиная с 9 версии.

    Цель : создать свою кнопку/элемент управления по нажатию которой происходит загрузка файла на сервер (либо иные, предусмотренные разработчиком, файловые операции).
    Инструменты : CSS, PHP, JavaScript.
    Используемые технологии : Ajax, через скрытый iframe.

    ПреамбулаИз кода для упрощения сознательно выкинуты все процедуры проверки принятого файла и try-catch вызовов функций, так как эти моменты не являются темой данной статьи. Также не охватывается момент по предотвращению звукового сигнала в IE. В работе используем технологию Ajax, подразумевающую, что у нас есть основная страница, осуществляющая взаимодействие с пользователем(front-end) и скрипт на сервере, обрабатывающая наши запросы(back-end) Технология работы1. На главной странице создаем «form action» Делаем ей target на скрытый фрейм, который создаем статически (или динамически). Создаем два «input» с типом «file» и «submit», даем им «id», помещаем их в «div», который спрячем со страницы стилем. Все эти элементы не видимы для пользователя и не воспринимают каких-либо его действий.
    2. Начинаем «магию». Для «input» с типом «file» на событие по изменению вешаем вызов функции onchange=«LoadFile();».
    3. На главной странице создаем кнопку. Навешиваем ей на событие нажатия кнопки мыши вызов функции onclick=«FindFile();».
    4. В функции FindFile() имитируем клик на «input» с типом «file». То есть при нажатии на нашу кнопку вызывается стандартный диалог выбора файла. Как только пользователь выбрал файл, срабатывает событие onchange и вызывается функция LoadFile(). В функции LoadFile() имитируем клик на «input» с типом «submit».
    5. Форма формирует POST запрос с именем файла к нашему back-end скрипту, который осуществляет все проверки по безопасности и загрузку файла. После этого скрипт вызывает callback функцию главной страницы, которой сообщает о результате выполнения.

    Собственно все. Для примера приведены четыре основных файла, код которых приведён ниже:

    css/style.css – стили главной страницы
    view/upload.php – back-end скрипт загрузки файла
    index.php – главная страницы
    js/upload.js – front-end скрипты главной страницы

    Кроме того, необходим любой файл с картинкой для кнопки buttons/openfile.png

    Загружаемые файлы помещаем в директорию ../temp/

    Таблица стилей (css/style.css)

    Создаем стиль кнопки и скрытого «input».
    .navButtons{ border:1px gray solid; position:absolute; overflow: hidden; display:block; height:50px; width:50px; margin:10px; -moz-box-shadow:5px 5px 7px rgba(3,33,33,.7); -webkit-box-shadow: 5px 5px 7px rgba(3,33,33,.7); box-shadow: 5px 5px 7px rgba(3,33,33,.7); -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; } .navButtons:hover { border:2px solid black; background-color:#fff; } .hiddenInput{ position:absolute; overflow: hidden; display:block; height:0px; width:0px; } Input мы просто делаем нулевой ширины и высоты


    Скрипт обрабатывающий запрос на загрузку файла (view/upload.php)

    Здесь все согласно примерам в интернете, валидация файлов изъята:


    Главная страница (index.php)

    OpenFile test


    JavaScript в главной форме (js/upload.js)

    function FindFile() { document.getElementById("my_hidden_file").click(); } function LoadFile() { document.getElementById("my_hidden_load").click(); } function onResponse(d) // Функция обработки ответа от сервера { eval("var obj = " + d + ";"); if(obj.success!=1) { alert("Ошибка!\nФайл " + obj.filename + " не загружен - "+obj.myres); return; }; alert("Файл загружен"); }

    Baymard Institute исследует интерфейсы интернет-магазинов и публикует результаты своих наблюдений.

    Сооснователь института Кристиан Холст сравнил шаблоны представления списка товаров:

    • Автоматическая подгрузка («бесконечный скрол»);
    • Постраничная навигация («пагинация»);
    • Кнопка «Загрузить ещё».

    Постраничная навигация - решение по умолчанию на многих платформах электронной коммерции, поэтому встречается чаще всего. «Бесконечный скрол» иногда бывает неудобен: в результатах поиска и на мобильных. А вот «Загрузить ещё» в сочетании с «ленивой» подгрузкой товаров создаёт приятный опыт использования.

    Результаты наблюдений

    Респонденты часто жаловались на постраничную навигацию: она казалась медленной и её внешний вид не вызывал желания просмотреть все товары. Они просматривали меньше, зато больше времени уделяли первой странице.

    По количеству страниц пользователи прикидывают общее количество товаров. Они редко переходят на конкретные страницы, обычно - на следующую или предыдущую.

    «Бесконечный скрол» создаёт гладкое непрерывное взаимодействие: пользователь просматривает товары, ни на что не отвлекаясь. Естественно, это решение даёт максимум просмотров, но товары в начале списка получают меньше внимания. Это хороший способ показать широту ассортимента в конкретной категории товаров.

    Внимание на полосу прокрутки: некоторые респонденты прокручивают список, уже не фокусируясь на конкретных товарах.

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

    Из 50 топовых американских интернет-магазинов только 8% использовали кнопку «Загрузить ещё».

    При этом она понравилась респондентам: не надо думать, на какую страницу перейти. Нужно просто ответить на вопрос «Хотите увидеть больше результатов?» Пользователи просматривают больше товаров, чем при постраничной навигации, и делают это внимательнее, чем при «бесконечном скроле».


    «Загрузить ещё» и «бесконечный скрол» увеличивают список товаров на странице, а не изменяют его состав. Пользователям легче сравнить товары, находящиеся на одной странице, проще выбрать, какой товар рассмотреть подробнее.

    Какой шаблон использовать?

    • В категориях - «Загрузить ещё» с «ленивой» подгрузкой;
    • В поиске - «Загрузить ещё» в сочетании с количеством найденных объектов;
    • В мобильных - «Загрузить ещё», но загружать меньше объектов, чем на десктопах.
    В категориях

    Показывайте от 10 до 30 товаров при первичной загрузке, подгружайте ещё по 10–30 товаров, пока их не станет 50–100. После этого покажите кнопку «Загрузить ещё». При нажатии на неё покажите 10–30 товаров и так далее. «Ленивая» подгрузка снижает нагрузку на сервер и сокращает время отклика.

    Конкретные числа зависят от контекста и отрасли. Меньше товаров стоит показывать в области потребительской электроники, где важны характеристики. Больше товаров - если это одежда, мебель и декор.

    Если пользователь воспользовался фильтрами, он может и не увидеть кнопку «Загрузить ещё». Если список длинный, эта кнопка даст передышку, доступ к подвалу и повод подумать над применением фильтров. И он легко продолжит просмотр.

    Проблема «Загрузить ещё» и «бесконечного скрола» - постоянное увеличение длины страницы. Если пользователь прокрутит страницу вниз, на мгновение, пока не загрузятся товары, он увидит подвал. В случае с «Загрузить ещё» эта реакция повторится лишь пару-тройку раз.

    Решение: установить такую высоту страницы, чтобы она соответствовала тому количеству товаров, которые будут показаны до появления кнопки «Загрузить ещё». Даже если сами товары ещё не подгрузились, с помощью полосы прокрутки пользователь получит доступ к подвалу и прикинет длину списка.

    В результатах поиска

    Результаты поиска упорядочиваются по релевантности. По умолчанию загружайте 25–75 товаров и никогда не используйте «бесконечный скрол», чтобы пользователь сфокусировался на первой пачке самых релевантных товаров. «Ленивая» подгрузка здесь не обязательна.

    Меняйте количество загружаемых товаров в зависимости от показателя релевантности. Если он резко падает после первых 28 товаров, показывайте меньше. И наоборот.

    В мобильных

    В постраничную навигацию сложно прицелиться: ссылки мелкие и стоят близко друг к другу. И пользователи не любят, когда страница перезагружается.

    С «бесконечным скролом» респонденты просматривают вдвое больше товаров по сравнению с постраничной навигацией. Но проблема убегающего подвала актуальна, ведь в нём могут быть важные ссылки вроде перехода на десктопную версию сайта.

    Лучше всего - большая кнопка «Загрузить ещё». Но не забудьте про особенности мобильных:

    • Меньше размер экрана. Нужно прокрутить намного больше экранов, чтобы просмотреть тот же список товаров, что на десктопе;
    • Ограничения в прокрутке. Пользователю доступен только свайп, когда на десктопе и колесо мыши, и жесты на трекпаде, и полоса прокрутки, и сочетания клавиш;
    • Медленный скрол. Если водить пальцем по экрану, список будет прокручиваться медленнее, чем на десктопе. Некоторые пользователи могут непреднамеренно запустить скрол с ускорением и пропустят часть товаров.
    • События джаваскрипта. Событие по подгрузке товаров может быть обработано, когда скрол завершился, но не в процессе скрола.

    Загружайте 15–30 товаров и показывайте кнопку «Загрузить ещё». Без «ленивой» подгрузки.

    Кнопка «Назад»

    На динамически меняющихся страницах кнопка «Назад» может работать не так, как ожидает пользователь.

    Если пользователь перешёл на страницу товара, кнопка «Назад» должна вернуть его в то же место, с которого он пришёл.

    90% изученных институтом сайтов, на которых используется кнопка «Загрузить ещё», делают это неправильно.

    Магазин Skechers переписывает адрес страницы каждый раз, когда пользователь нажимает «Загрузить ещё».

    history.pushState() из History API в HTML5 позволяет изменить URL страницы без её перезагрузки, и тогда кнопка «Назад» будет работать так, как ожидает пользователь.

    Способ загрузки товаров важен, он сильно влияет на процесс изучения товаров, но это лишь вишенка на торте UX-улучшений. Сначала займитесь улучшениями в большим возвратом на инвестиции. Если у вас нет технических ресурсов для нормальной поддержки кнопки «Назад», вместо кнопки «Загрузить ещё» используйте постраничную навигацию.

    Вывод

    Исследование показало, что кнопка «Загрузить ещё» работает лучше постраничной навигации и «бесконечного скрола». Пользователи просматривают больше товаров, но не теряют концентрацию и получают доступ к подвалу.

    При реализации этого подхода не забывайте про контекст:

    • При просмотре категорий используйте «ленивую» подгрузку и показывайте «Загрузить ещё» после отображения 50–100 товаров;
    • В результатах поиска - после 25–75 результатов. В идеале количество должно зависеть от коэффициента релевантности;
    • На мобильных - после 15–30 товаров, так как экраны меньше и скрол медленнее. Из-за особенностей джаваскрипта, загружайте товары сразу, без «ленивой» подгрузки.