当前位置:首页 > JavaScript

js实现适配

2026-04-05 10:30:33JavaScript

JavaScript 实现适配的方法

视口(Viewport)适配

通过设置 <meta> 标签控制视口缩放比例:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

使用 CSS 的 vw/vh 单位实现动态尺寸:

.box {
  width: 50vw; /* 视口宽度的50% */
  height: 30vh; /* 视口高度的30% */
}

媒体查询(Media Query)适配

根据不同屏幕尺寸应用不同样式:

@media screen and (max-width: 768px) {
  .container {
    flex-direction: column;
  }
}

JavaScript 动态检测屏幕变化:

window.addEventListener('resize', () => {
  if (window.innerWidth < 768) {
    document.body.classList.add('mobile-mode');
  } else {
    document.body.classList.remove('mobile-mode');
  }
});

REM 适配方案

动态计算根元素字体大小:

function setRem() {
  const docEl = document.documentElement;
  const width = docEl.clientWidth;
  const rem = width / 10; // 将屏幕分为10份
  docEl.style.fontSize = rem + 'px';
}
window.addEventListener('resize', setRem);
setRem();

配合 CSS 使用 REM 单位:

.header {
  height: 1rem; /* 相当于屏幕宽度的10% */
}

图片适配方案

使用 srcset 属性提供多分辨率图片:

<img src="small.jpg" 
     srcset="medium.jpg 1000w, large.jpg 2000w"
     sizes="(max-width: 600px) 480px, 800px">

JavaScript 动态加载图片:

function loadAdaptiveImage() {
  const img = new Image();
  img.src = window.innerWidth > 768 ? 'large.jpg' : 'small.jpg';
  document.body.appendChild(img);
}

设备像素比(DPR)适配

检测设备像素比并调整显示:

const dpr = window.devicePixelRatio || 1;
const scale = 1 / dpr;
document.querySelector('meta[name="viewport"]')
  .setAttribute('content', `width=device-width, initial-scale=${scale}`);

横竖屏适配

检测屏幕方向变化:

window.addEventListener('orientationchange', () => {
  if (Math.abs(window.orientation) === 90) {
    console.log('横屏模式');
  } else {
    console.log('竖屏模式');
  }
});

移动端事件适配

统一处理触摸和鼠标事件:

js实现适配

element.addEventListener('touchstart', handleStart);
element.addEventListener('mousedown', handleStart);

function handleStart(e) {
  e.preventDefault();
  const clientX = e.clientX || e.touches[0].clientX;
  const clientY = e.clientY || e.touches[0].clientY;
  // 处理坐标逻辑
}

标签: js
分享给朋友:

相关文章

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…