>  기사  >  웹 프론트엔드  >  CSS 뷰포트 단위(vh 및 vw)에 대한 크로스 브라우저 JavaScript 대안이 있습니까?

CSS 뷰포트 단위(vh 및 vw)에 대한 크로스 브라우저 JavaScript 대안이 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-02 18:40:03866검색

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

JavaScript를 사용한 CSS 뷰포트 단위

CSS3에서는 반응형 레이아웃에 유용한 뷰포트 백분율 길이 단위인 vh 및 vw를 도입했습니다. 그러나 이러한 단위에 대한 크로스 브라우저 JavaScript 대안이 존재하는지에 대한 의문이 제기됩니다.

JavaScript/jQuery 대안

물론입니다! jQuery를 활용하여 뷰포트 단위에 대한 대안을 제공할 수 있습니다. 다음은 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({
height: '50vh',
width: '50vw',
marginTop: ' 25vh',
marginLeft: '25vw',
글꼴 크기: '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**

위 내용은 CSS 뷰포트 단위(vh 및 vw)에 대한 크로스 브라우저 JavaScript 대안이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.