限制网页缩放大小,最大1.5 最小0.75

113 阅读1分钟
Vue.directive('zoom-restriction', {    inserted: function (el, binding) {      const maxZoomLevel = 1.5; // 最大缩放级别      const minZoomLevel = 0.75; // 最小缩放级别        function handleWheelEvent(e) {        const zoomLevel = window.devicePixelRatio;        if ((zoomLevel >= maxZoomLevel && e.deltaY < 0) || (zoomLevel <= minZoomLevel && e.deltaY > 0)) {          e.preventDefault();        }      }      function handleKeyDownEvent(e) {        const zoomLevel = window.devicePixelRatio;        const isZoomShortcut = (e.ctrlKey || e.metaKey) &&                                (e.key === '+' || e.key === '-' || e.key === '0' || e.key === '=');          if (isZoomShortcut) {          if ((zoomLevel >= maxZoomLevel && (e.key === '+' || e.key === '=')) ||               (zoomLevel <= minZoomLevel && e.key === '-') ||              (e.key === '0')) {            e.preventDefault();          }        }      }      window.addEventListener('wheel', handleWheelEvent, { passive: false });      window.addEventListener('keydown', handleKeyDownEvent, { passive: false });      el._handleWheelEvent = handleWheelEvent;      el._handleKeyDownEvent = handleKeyDownEvent;    },    unbind: function (el) {      window.removeEventListener('wheel', el._handleWheelEvent);      window.removeEventListener('keydown', el._handleKeyDownEvent);    }  });

 <div v-zoom-restriction></div>