Cross-browser flexbox input add-ons
Basado en Solvey by Flexbox: Input Add-ons, dando soporte a un mayor número de los navegadores más usados, según caniuse.com
Dado el marcado:
<div class="InputAddOn"> <button>-</button> <input class="InputAddOn-field" type="number" value="1"> <button>+</button> </div>
Aplicamos las variantes de display:flex
con los prefijos de navegadores correspondientes:
Además, como UC Browser y Android Browser <=4.3 no lo aplican correctamente a elementos inline
, aplicamos display:block
<div class="InputAddOn"> <button>-</button> <input class="InputAddOn-field" type="number" value="1"> <button>+</button> </div>
.InputAddOn { display: block; display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -ms-flexbox; display: flex; } .InputAddOn-field { display: block; -webkit-box-flex: 1; -moz-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; }
Internet Explorer 8 y 9
Estos navegadores no soportan display:flexbox
, pero podemos hacer uso de display:table
y display:table-cell
para obtener un resultado similar. Hacemos uso de comentarios condicionales.
<!--[if IE 8 ]><html class="ie8 lte-ie9 lte-ie8"><![endif]--> <!--[if IE 9 ]><html class="ie9 lte-ie9"><![endif]-->
.lte-ie9 .InputAddOn { display: table; width: 100%; } .lte-ie9 .InputAddOn > * { display: table-cell; } .lte-ie9 .InputAddOn-field { width: 100%; }
Probado en:
- Internet Explorer 8, 9, 10, 11
- Edge
- Firefox
- Chrome
- Safari
- Opera
- UC browser