Unités de fenêtre CSS avec JavaScript
CSS3 introduit les unités de longueur de pourcentage de fenêtre, vh et vw, qui sont utiles pour les mises en page réactives. Cependant, la question se pose de savoir s'il existe une alternative JavaScript multi-navigateurs pour ces unités.
Alternative JavaScript/jQuery
Absolument ! jQuery peut être exploité pour fournir une alternative aux unités de fenêtre. Voici une solution basée sur jQuery :
/* jQuery plugin to convert viewport units to pixels */
;(function( $, window ){
var $win = $(window)
, _css = $.fn.css;
function viewportToPixel( val ) {
var percent = val.match(/[\d.] /)[0] / 100
, unit = val.match(/[vwh] /)[0];
return (unit == 'vh' ? $win.height() : $win.width()) * percent 'px';
}
function parseProps( props ) {
var p, prop;
for ( p in props ) {
prop = props[ p ];
if ( /[vwh]$/.test( prop ) ) {
props[ p ] = viewportToPixel( prop );
}
}
return props;
}
$.fn.css = function( props ) {
var self = this
, originalArguments = arguments
, update = function() {
if ( typeof props === 'string' || props instanceof String ) {
if (originalArguments.length > 1) {
var argumentsObject = {};
argumentsObject[originalArguments[0]] = originalArguments[1];
return _css.call(self, parseProps($.extend({}, argumentsObject)));
} else {
return _css.call( self, props );
}
} else {
return _css.call( self, parseProps( $.extend( {}, props ) ) );
}
};
$win.resize( update ).resize();
return update();
};
}( jQuery, window ));
**Usage:**
$('div').css({
hauteur : '50vh',
largeur : '50vw',
marginTop : '25vh',
marginLeft : '25vw ',
taille de police : '10vw'
});
This solution seamlessly integrates the viewport unit conversion into jQuery's CSS method, allowing for easy resizing of elements based on viewport dimensions. **Safety Considerations**
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3