«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Существует ли кросс-браузерная альтернатива JavaScript единицам области просмотра CSS (vh и vw)?

Существует ли кросс-браузерная альтернатива JavaScript единицам области просмотра CSS (vh и vw)?

Опубликовано 15 ноября 2024 г.
Просматривать:306

Is there a cross-browser JavaScript alternative to CSS viewport units (vh and vw)?

Единицы области просмотра CSS с JavaScript

CSS3 вводит единицы длины области просмотра в процентах, vh и vw, которые полезны для адаптивных макетов. Однако возникает вопрос, существует ли кроссбраузерная альтернатива JavaScript для этих модулей.

Альтернатива JavaScript/jQuery

Абсолютно! jQuery можно использовать в качестве альтернативы единицам просмотра. Вот решение на основе 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({
высота: '50vh',
ширина: '50vw',
MarginTop: '25vh',
MarginLeft: '25vw ',
FontSize: '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**
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3