Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.08.2017, 19:17
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Стилизация input type и его превью
Мне надо было стилизовать input type, и что бы после загрузки, показалась превьюшка, я искал готовые решения, но они были какие-то очень большие, некоторые даже подключают большой css файл ratchet.css.


И я решил написать свой решение, хороший ли это способ?

Добавил элемент button и имитация клика по инпуту.

<style>

	.wrap {border: 1px solid; width: 500px;}

	#photoInput {
		display: none;
	}
	
	.img-circle {
		width: 400px;
		height: 210px;
		border: 1px solid;
		object-fit: cover;
	}
	
	.addImg {
		margin-top: 20px;
		border: 0;
		background: url("http://i94.fastpic.ru/big/2017/0808/6b/5c6e9d842b4ecb782a9c8132a068966b.png") no-repeat 8px 8px #0c6eb9;
		color: white;
		text-transform: uppercase;
		padding: 8px;
		padding-left: 30px;
		border-radius: 5px;
	}
</style>

<div class="wrap">

	<div>
		<img src="" class="img-circle" id="theImage">
	</div>

	<input type="file" id="photoInput">

	<button class="addImg">Доб. Изображение</button>

</div>

<script>

var btn = document.querySelector(".addImg");
var photoFile = document.getElementById("photoInput");

btn.addEventListener('click', function() {
	photoFile.click();
})

	var fileReader = new FileReader();
		fileReader.addEventListener('load', function() {
			theImage.src = this.result;
		});

		photoInput.addEventListener('change', function(e) {
		var file = e.target.files[0];

		fileReader.readAsDataURL(file);
});
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 08.08.2017, 21:32
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

DivMan,
Что сказать, способы стандартные, 2 из 4-х возможных)

Есть только 2 способа сделать превью:
1. FileReader.readAsDataURL(File)
2. URL.createObjectURL(File)

Есть только 2 способа имитации клика по инпуту:
1. trigger click
2. label click

Всё остальное это не способы, а стилизация, которая ограничена лишь вашей фантазией.

https://developer.mozilla.org/en-US/...ent/input/file
https://developer.mozilla.org/en-US/...b_applications
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Превратить input type button в ползунок MrNSky Элементы интерфейса 13 07.01.2014 21:07
удалить элемент input с сохранением его значения в <td> Сергей1980 jQuery 1 29.08.2013 02:06
Клонирую input через JQ и теряется его value Sergey999 Javascript под браузер 9 02.04.2012 00:02
динамические списки Shaci jQuery 0 14.12.2009 15:03
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55