Le validateur W3C dit : "L'attribut size n'est pas autorisé sur l'élément input à ce niveau."
Quelle est la bonne manière de spécifier la largeur d'un champ de fichier en HTML5 ?
Le validateur W3C dit : "L'attribut size n'est pas autorisé sur l'élément input à ce niveau."
Quelle est la bonne manière de spécifier la largeur d'un champ de fichier en HTML5 ?
Comme recommandé dans les autres réponses, la largeur
de l'ensemble du champ de fichier, c'est-à-dire du bouton et du texte du nom de fichier, peut être définie en CSS comme suit :
input[type="file"] {
/* fonctionnel */
width: 100%;
/* cosmétique */
background-color: steelblue;
}
(Cela fonctionne également dans Firefox de nos jours.)
Cependant, cela ne change pas la largeur du bouton de sélection de fichier. Cela peut causer des problèmes tels que le rognage, comme illustré dans le snippet suivant.
input[type="file"] {
width: 40px;
}
Pour modifier la largeur du bouton de sélection de fichier (et/ou d'autres styles de bouton), vous pouvez utiliser le pseudo-élément ::file-selector-button. Par exemple :
input[type="file"] {
width: 40px;
}
input:last-of-type::file-selector-button {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
/* cosmétique */
body {
display: flex;
flex-direction: column;
gap: 8px;
}
$(function(){
var fileInput = $('.upload-file');
var maxSize = fileInput.data('max-size');
$('.upload-form').submit(function(e){
if(fileInput.get(0).files.length){
var fileSize = fileInput.get(0).files[0].size; // en octets
if(fileSize>maxSize){
alert('taille du fichier est plus de' + maxSize + ' octets');
return false;
}else{
alert('taille du fichier est correcte - '+fileSize+' octets');
}
}else{
alert('choisir un fichier, s'il vous plaît');
return false;
}
});
});
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.