前端自适应实现方法

18 篇文章 4 订阅
5 篇文章 0 订阅

一、自适应的分类

1、大屏幕显示更多内容

描述:即根据固定像素大小,显示内容根据显示器分辨率决定,分辨率越大,显示内容越多。
适应性:适合没有图表的页面,因为图表一般用作大屏展示,而大屏一般都是铺满整个屏幕的。

2、不同屏幕显示相同内容

描述:不同大小及分辨率的屏幕,只要宽高比例相同(例 16:9),其展示的内容就一致。
适应性:比较适合大屏展示,移动端和后台管理也可以用,但没必要。

二、普通项目自适应(后台管理,移动端等)

1、使用flex布局

对齐方式可以使用flex,包括左对齐,右对齐,水平居中,垂直居中,两端分布布局等。
flex常见样式

描述
justify-content: center纵轴居中对齐(垂直对齐)
justify-content: flex-start纵轴左对齐
justify-content: flex-end纵轴右对齐
align-items: center水平居中
align-items: baseline水平基线对齐
flex-direction: column置换横纵轴方向(修改为从上往下排列)
flex-wrap: wrap允许换行(内容过多时,可以自动换行)
justify-content: space-between两端均匀分布,左右不留空
justify-content: space-around两端均匀分布,左右留空

2、宽高避免写死

尽量不要把宽高写死,防止用户放大比例或者在小屏幕上样式错乱。
可以按比例、百分比、或者flex去设置宽高,同事借助margin,padding去实现。
以一个按钮举例:

<template>
  <div class="main">
    <div class="button">短按钮</div>
    <div class="button">长按钮长按钮</div>
  </div>
</template>

<style lang="scss" scoped>
.main {
  display: flex;
  align-items: center;
  justify-content: center;
  .button {
    margin: 20px;
    color: rgb(255, 255, 255);
    background-color: rgb(50, 91, 224);
    padding: 0 16px;
    height: 30px;
    line-height: 30px;
    border-radius: 15px;
  }
}
</style>

在这里插入图片描述
可以看到,按钮没有设定宽度,仅仅使用了padding去撑开,这样的好处是,无论按钮字数多长,宽度都可以自适应;
这里高度使用固定30px,虽然高度也可以使用padding撑开,但按钮这种用途的,是可以使用固定高度的(随机应变)。

3、使用滚动

在设计图稿时就应该考虑到小屏幕的展示问题,但如果UI经验不足没有兼顾到,或者内容过多时,可以考虑使用滚动条,上下或者左右滚动。

三、大屏自适应

1、使用rem

rem的值是动态计算的,具体可以获取当前显示器的屏幕宽高,与一个标准值进行对比,其对比的值,就是rem的值。
获取屏幕宽高的方法

描述
window.innerWidth当前窗口的宽度
window.innerHeight当前窗口的高度

以设计图为1920*1080px举例
单独写一个js文件,计算rem的值,并在main.js中引入

function setRem() {
  // 默认使用100px作为基准大小
  const baseSize = 100;
  const baseVal = baseSize / 1920;
  const vW = window.innerWidth; // 当前窗口的宽度
  const rem = vW * baseVal; // 以默认比例值乘以当前窗口宽度,得到该宽度下的相应font-size值
  window.$size = rem / 100;
  document.documentElement.style.fontSize = rem + "px";
}
// 初始化
setRem();
// 窗口大小变化时重置 rem
window.onresize = function() {
  setRem();
};

如果你使用vscode编辑器,在使用rem单位的时候,可以借助 px to rem & rpx (cssrem)插件,这个插件可以帮助你计算px和rem的转换值。
插件
安装好插件后,可以在首选项中设置px与rem的转换基准比例,上面示例使用了100作为基准,所以这里也设置为100。
配置基准值

注意:这个示例没有计算屏幕高度的比例,是因为高度可以通过上下滚动或铺满来解决。

二、创建一个可使用的全局比例变量

可以在main.js文件中创建,方便直接使用

Vue.prototype.$size = document.body.clientWidth / 1920; 

这个变量是给一些没有自适应的第三方组件使用的,在已有的数值上乘以$size

100 * this.$size;

三、使用flex

同上

四、使用滚动

同上

五、避免宽高写死

同上

写在最后

自适应没有完全区分的界限,使用哪种方案需要根据项目实际情况来,两种同时混合使用也是很常见的,只是在混合使用时,需要注意rem和px的区分。

  • 26
    点赞
  • 150
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
前端适应(Responsive Web Design)是指网站能够根据用户设备的屏幕大小和分辨率等特性,自动调整页面布局和内容展示方式,以提供更好的用户体验。下面是一些实现前端适应的代码技巧: 1. 使用响应式布局:使用 CSS3 Media Queries,设置不同屏幕大小和分辨率下的布局样式。例如: ```css /* 当屏幕宽度小于等于 768 像素时应用此样式 */ @media (max-width: 768px) { .container { width: 100%; padding: 0; } } /* 当屏幕宽度大于 768 像素时应用此样式 */ @media (min-width: 769px) { .container { width: 768px; padding: 20px; } } ``` 2. 使用弹性布局:使用 CSS Flexbox 或 Grid 等弹性布局技术,让页面中的元素能够自适应屏幕大小和分辨率的变化。例如: ```css .container { display: flex; flex-wrap: wrap; justify-content: space-between; } .item { flex-basis: calc(33.33% - 20px); margin-bottom: 20px; } ``` 3. 使用相对单位:使用相对单位(如百分比、em 等)代替绝对单位(如像素),以便让页面中的元素能够根据屏幕大小和分辨率自适应。例如: ```css .container { width: 100%; max-width: 1200px; } .item { width: 33.33%; padding: 1em; } ``` 4. 使用图片自适应技术:使用响应式图片或图片缩放技术,让图片能够根据屏幕大小和分辨率自适应。例如: ```html <img src="example.jpg" srcset="example-large.jpg 1200w, example-medium.jpg 800w, example-small.jpg 400w" alt="example"> ``` 5. 使用 JavaScript:使用 JavaScript 编写自适应的脚本,根据设备屏幕大小和分辨率等参数动态改变页面布局和内容。例如: ```javascript function adjustLayout() { const screenWidth = window.innerWidth; const screenHeight = window.innerHeight; // 根据屏幕大小动态调整页面布局和内容 } window.addEventListener('resize', adjustLayout); ``` 综上所述,前端适应需要综合运用多种技术,以实现页面布局和内容的动态适应

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温其如玉_zxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值