Rumah  >  Artikel  >  hujung hadapan web  >  Adakah terdapat alternatif JavaScript penyemak imbas silang kepada unit port pandangan CSS (vh dan vw)?

Adakah terdapat alternatif JavaScript penyemak imbas silang kepada unit port pandangan CSS (vh dan vw)?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 18:40:03866semak imbas

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

Unit Pandangan CSS dengan JavaScript

CSS3 memperkenalkan unit panjang peratusan paparan, vh dan vw, yang berharga untuk reka letak responsif. Walau bagaimanapun, timbul persoalan sama ada wujud alternatif JavaScript penyemak imbas untuk unit ini.

JavaScript/jQuery Alternative

Sungguh! jQuery boleh dimanfaatkan untuk menyediakan alternatif untuk unit viewport. Berikut ialah penyelesaian berasaskan jQuery:

<code class="javascript">/* 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:**
</code>

$('div').css({
tinggi: '50vh',
lebar: '50vw',
marginTop: ' 25vh',
marginKiri: '25vw',
Saiz fon: '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**

Atas ialah kandungan terperinci Adakah terdapat alternatif JavaScript penyemak imbas silang kepada unit port pandangan CSS (vh dan vw)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn