Как настроить FileField wtforms в качестве кнопки изображения?

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

HTML

<div>{{ form.tweet_image(class="submit-image-tweet")}}</div>

CSS

.submit-image-tweet {
    background: url(../templates/images/camera_icon.png) no-repeat;
    cursor: pointer;
    border: none;
    width: 40px;
    height: 40px;
}

1 ответ

Решение

Один из самых простых способов - обернуть файл input в label и стиль, который вместо этого.

Кросс-браузерная спецификация по стилизации нативных элементов улучшается. Однако, если вам нужна пуленепробиваемая поддержка, это по-прежнему лучший способ.

.file{
  display:block;
  position: relative;
  width: 200px;
  height: 200px;
  background: url(http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/device-camera-icon.png) no-repeat center center;
  background-size: cover;
}

.file input{
  opacity: 0;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  cursor: pointer;
}
<label class="file">
  <input type="file"/>
</label>

Другие вопросы по тегам