Как я могу добавить настраиваемый размер входного файла в Bootstrap 4 с помощью таких классов, как input-group-sm, form-control-sm и т. д.? Я хочу сделать это настраиваемое поле ввода файла как можно меньшим. у кого-нибудь есть решение?
form-control-sm<link href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel = "stylesheet"/>
<div class = "form-group">
<input class = "form-control form-control-sm" value = "Small input field">
</div>input-group-sm<link href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel = "stylesheet"/>
<div class = "input-group input-group-sm">
<div class = "input-group-prepend">
<span class = "input-group-text">Go</span>
</div>
<input type = "text" class = "form-control" id = "basic-url" aria-describedby = "basic-addon3" value = "Small input group">
</div><link href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel = "stylesheet"/>
<div class = "input-group input-group-sm">
<div class = "custom-file">
<input type = "file" class = "custom-file-input form-control-sm">
<label class = "custom-file-label">Choose file</label>
</div>
</div>




Уменьшите заполнение до 0 с помощью p-0
Также добавьте следующий стиль
#abc.custom-file-label,
#abc.custom-file-label::after {
height: auto;
padding-top: 0;
padding-bottom: 0;
}
#abc.custom-file-label,
#abc.custom-file-label::after {
height: auto;
padding-top: 0;
padding-bottom: 0;
}<link href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel = "stylesheet" />
<div class = "input-group input-group-sm p-0">
<div class = "custom-file p-0">
<input type = "file" class = "custom-file-input form-control-sm p-0">
<label id = "abc" class = "custom-file-label py-0">Choose file</label>
</div>
</div>Для решения с точностью до пикселя вам все равно понадобится дополнительный CSS (в 2019 году). Если вам нужно решение только для Bootstrap, добавьте класс .col-form-label в тег <label> и используйте Bootstrap версии 4.3. Для высоты по-прежнему есть дополнительные 0,25 бэр, но вы можете использовать его так же, как и другие элементы .form-Control-sm.
<link href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel = "stylesheet"/>
<div class = "form-group">
<div class = "custom-file">
<input type = "file" class = "custom-file-input">
<label class = "custom-file-label">Choose file</label>
</div>
</div>
<div class = "form-group">
<div class = "custom-file">
<input type = "file" id = "customFile" class = "custom-file-input form-control-sm">
<label class = "custom-file-label col-form-label-sm" for = "custmFile">Choose file</label>
</div>
</div>Решение: можно оптимизировать еще ...
function ftt(){
$('#file').click(); // emulate click on input file
}
function on(){
var ft = $('#file').val();
$('#foto').val(ft);
}
function crearEmp(){
var files = $('#file')[0].files;
console.info('do something', files);
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel = "stylesheet"/>
<form action = "" method = "POST">
<div class = "input-group input-group-sm mb-3">
<div class = "input-group-prepend">
<span class = "input-group-text font-italic" id = "inputGroup-sizing-sm">Foto</span>
</div>
<input type = "text" class = "form-control" id = "foto" name = "foto" aria-label = "Sizing example input" onClick = "ftt()" value = "No se ha seleccionado ningún archivo." aria-describedby = "inputGroup-sizing-sm" />
</div>
<input type = "file" onchange = "on()" hidden = "true" id = "file" />
<div class = "col-md-6 offset-md-4">
<button name = "btn-" type = "button" onClick = "crearEmp()" class = "btn btn-n btn-outline-success btn-sm">Guardar</button>
</div>
</form>