当前位置: 首页 > news >正文

前端大屏尺寸实现自适应屏幕大小

说在前面

目前很多业主在使用系统的时候都会有大屏的需求,很多屏幕并不会像我们开发的屏幕一样标准,比如1920*1080,这样我们就需要根据业主的屏幕尺寸进行适配,避免一些图表或文字在大屏中出现偏移,影响视觉观感。

方案比选

方案一:

如果希望在大屏中实现最佳的展示效果,应该由设计人员针对大屏的尺寸进行单独设计,然后开发人员使用如下监听方式:

@media screen and (max-width: 2560px) {}
@media screen and (min-width: 2561px) {}

2561px为分界线,在屏幕尺寸大于分界线时来让不同的样式代码生效。
这种方案可以保证最好的展示效果,完美适配大屏,问题就是如果屏幕发生变化,或者需要适配其他尺寸的屏幕时,需要针对性的进行调整。

方案二:

使用vw和vh属性来表示dom节点的长宽。
举个例子:我们手里的设计稿是1920*1080,此时使用vwvh,这样就可以适配大屏。
比如某个dom节点宽度为200px,高度为100px,此时设置他的宽高为:

.dom {width: (200 / 1920) * 100vw;height: (100 / 1080) * 100vh;
}

原理也比较简单,对所有dom节点的宽高根据屏幕大小进行等比缩放,这样做的麻烦点是,代码中会有很多涉及到需要px单位的地方,每一处都需要写成这种形式,从操作上烦琐了不少。

方案三:

使用rem来实现响应式的布局,rem是相对于根元素的字体大小来计算的单位,配合引入相应的postcss相关插件,免去了设计稿中的px到rem的计算。
引入:postcss-plugin-px2rem,还有很多其他类似插件或者loader,引入一个即可。

.dom {width: 200px;height: 100px;
}
编译以后的代码为:
.dom {width: ..rem;height: ..rem;
}

这样做的优势就是可以安全按照设计稿给出的尺寸来完成css布局,不需要操心转换等问题。

使用过程中的一些小坑

一些echarts图表是独立设置尺寸的

echarts总的大小会根据容器的大小调整,但是字体,间距等需要在代码中设置大小。
由于postcss-plugin-px2rem只能检测到css文件中的样式,所以需要单独处理,方案也比较简单,选中宽或者高为参考,进行等比缩放即可。

getSize(size) { // 这里是以高度为参考进行等比缩放return size * (window.innerHeight / 1080);
},
...ehcart legend的设置片段
legend: {orient: "vertical",bottom: "10%",left: "center",itemGap: this.getSize(10),itemWidth: this.getSize(8),itemHeight: this.getSize(8),itemStyle: {radius: 5,},
}

选择宽度或者高度作为最佳参考标准

rem的方案是需要选择宽度或者高度为参考的,如果大屏宽高较原稿变化不大可随意选择,如果变化偏大,需要分别设置宽和高为基准,比较哪种更适合屏幕的尺寸。

// rem.js
// rem等比适配配置文件
// 基准大小
const baseSize = 16
// 设置 rem 函数
function setRem () {
// 当前页面宽度相对于 1920宽的缩放比例,可根据自己需要修改。const scale = document.documentElement.clientHeight/ 1080
// 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function () {setRem()
}

如上述代码,是以高度为参考基准的。

浏览器显示最小字体为12px

这里在适配小屏幕的时候会遇到问题,比如业主要求需要适配他们的平板,此时你可能会发现小屏幕下会有字体重叠的情况出现,这是因为浏览器支持的最小字体为12px,此时需要根据实际小屏幕尺寸调整一下页面的布局。

rem实现分享

安装依赖并在配置文件中引入

npm i postcss-plugin-px2rem --save -dev

在vue.config.js中添加配置信息
module.exports = {//px转rem的配置(postcss-plugin-px2rem插件)lintOnSave: true,css: {loaderOptions: {postcss: {plugins: [require('postcss-plugin-px2rem')({exclude: /(node_module)/,  //默认false,可以(reg)利用正则表达式mediaQuery: false,  //(布尔值)允许在媒体查询中转换px。minPixelValue: 3 //设置要替换的最小像素值(3px会被转rem)。 默认 0}),]}}},
}

还有更多的配置项,详情参考官方 https://www.npmjs.com/package/postcss-plugin-px2rem

新建rem.js文件

内容参考上方 选择宽度或者高度作为最佳参考标准 代码。

在main.js中引入

import './utils/rem';
加载以后会调用setRem()方法来触发尺寸的初始化。

说到最后

为了实现最佳的效果,以上几种方案甚至可以组合使用,希望大家读完文章后能理解并动手实践大屏适配。

相关文章:

前端大屏尺寸实现自适应屏幕大小

说在前面 目前很多业主在使用系统的时候都会有大屏的需求,很多屏幕并不会像我们开发的屏幕一样标准,比如1920*1080,这样我们就需要根据业主的屏幕尺寸进行适配,避免一些图表或文字在大屏中出现偏移,影响视觉观感。 方…...

leetcode 416. 分割等和子集

给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2&a…...

cesium加载三维模型3dtiles

1.将数据和代码放到一个目录下 目的:为避免跨域 输入cmd命令 python3 -m http.server 5500 2.三维服务地址 http://127.0.0.1:5500/data/mars3d-max-shihua-3dtiles-master/tileset.json 3.模型网页地址 http://127.0.0.1:5500/cesium/cesium%E5%8A%A0%E8%BD%…...

el-select控制单选还是多选

<el-form :inline"true" :model"form" class"demo-form-inline"><el-form-item><el-select v-model"form.properties_id" placeholder"请选择样品性质" clearable :multiple"multiple_properties"…...

nginx使用

1 安装 yum -y install gcc pcre-devel zlib-devel openssl openssl-devel yum install -y wget wget https://nginx.org/download/nginx-1.16.1.tar.gz tar -zxvf nginx-1.16.1.tar.gz cd nginx-1.16.1 ./configure --prefix/usr/local/nginx make make install2 目录 目录说…...

基于Jenkins+Python+Ubuntu+Docker的接口/UI自动化测试环境部署详细过程

基于JenkinsPythonUbuntuDocker的接口/UI自动化测试环境部署详细过程 1 Jenkins是什么&#xff1f;2 Jenkins目标是什么&#xff1f;3 什么是CI/CD?3.1 CI持续集成3.2 CD持续部署3.3 CD持续交付 4 Ubuntu环境4.1 环境需求4.2 实现思路 5 Ubuntu下安装Docker6 安装Jenkins6.1 拉…...

Linux|ubuntu下运行python

参考&#xff1a;ubuntu系统下切换python版本的方法 文章目录 python版本问题查看ubuntu下的所有python版本通过apt-get install可以安装不同版本python查看python版本号更新update-alternatives替代列表查看update-alternatives下的python版本切换python版本删除python版本 p…...

使用FreeMarker导出word文档(支持导出图片)

今天跟大家分享一下工作中比较实用的导出word 带图片的功能。 对于在idea开发中我们需要引入以下依赖&#xff1a; 2.对于eclipse 开发我们需要进入对应的jar包 这个必须放在lib下&#xff0c;同样也需要在当前项目的环境是加入该依赖 需要在MEAT-INF加入 首先制定word 导出…...

C/C++中变量按位操作

一、按位写入1 uint32_t writeBit (1 << 5) // 第5位的掩码 uint32_t value 0x12341234; // 设置第5位为1 value | writeBit;原理就是原值与掩码… 00010000进行按位相与&#xff0c;与0相交的位还是等于原来的值&#xff0c;与1相交的位则变为1。 二、按位写入0…...

uni、css——制作表格样式的模型

案例展示 这里以5列做展示&#xff08;可随意调节&#xff09; 案例代码 <view class"list"><view class"item" v-for"(item,index) in list" :key"index">1</view> <!-- 有内容 --><view clas…...

mac前端代码编辑 Sublime Text 4 Dev 中文v4.0(4151)

Sublime Text 4 for Mac是一款功能强大的代码编辑器&#xff0c;适合所有需要高效编写代码和进行代码管理的程序员使用。 快速响应&#xff1a;Sublime Text 4在加载文件和执行命令时非常快速&#xff0c;能够让用户在高效的开发过程中体验到无缝的交互。 多种语言支持&#…...

面试之HashMap

1.什么是集合框架 Java的集合主要有两个根接口Collection和Map派生出来的&#xff0c;Collection派生出来了三个子接口&#xff1a;List,Queue,Set。因此Java集合大致可分为List,Queue,Set,Map四种体系结构。 2.HashMap与TreeMap HashMap是直接实现Map接口&#xff0c;而Tree…...

promethues mysql-rules

groups: - name: mysql.rules rules: - alert: MysqlDown expr: mysql_up 0 for: 1s labels: severity: critical annotations: title: MySQL down description: "Mysql实例: 【{{ $labels.instance }}】, MySQL instance is down…...

Maven项目中Lifecycle和Plugins下的install的区别

在Maven中&#xff0c;如果你的web和service在不同的模块下&#xff0c;如果直接用用tomcat插件运行web层&#xff0c;那么运行时会报错 Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.5.2:install (default-cli) on project springboot: The pack…...

02-状态模式

1 意图 允许一个对象在其内部状态改变时改变它的行为&#xff0c;对象看起来似乎修改了它的类。&#xff08;这里的对象指的就是模型中的Context&#xff0c;行为指的就是State的子类&#xff09; 2 动机 考虑一个问题&#xff1a;实现一个表示网络连接的类TCPConnection&am…...

Python异常处理中异常的种类有哪些?你知道几个?

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 在python中不同的异常可以用不同的类型&#xff08;python中统一了类与类别&#xff0c;类型即类&#xff09;取标识&#xff0c;一个异常标识一种错误。 1.常见语法错误 AttributeError 试图访问一个对象没有的属性&#x…...

COBOL语言介绍及使用场景

COBOL&#xff08;Common Business-Oriented Language&#xff09;是一种面向业务的通用计算机编程语言&#xff0c;最初于1959年由美国国家标准学会&#xff08;ANSI&#xff09;开发。COBOL的设计目标是为了处理商业应用程序&#xff0c;尤其是大型企业级应用。本文将介绍COB…...

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 1 日论文合集)

文章目录 一、分割|语义相关(16篇)1.1 DPMix: Mixture of Depth and Point Cloud Video Experts for 4D Action Segmentation1.2 Investigating and Improving Latent Density Segmentation Models for Aleatoric Uncertainty Quantification in Medical Imaging1.3 Domain Ada…...

Jetson nano 安装swapfile 解决Cannot allocate memory 问题

在jetson nano上执行一些程序的时候&#xff0c;由于nano的内存只有4GB&#xff0c;因此可能会出现以下报错信息&#xff0c;例如&#xff1a;OSError:Cannot allocate memory 的问题。可以尝试用下面的方法解决&#xff1a;通过安装 swapfile&#xff0c;可以解决这个问题。 …...

ElasticsSearch基础概念和安装

ElasticSearch基础概念以及可视化界面安装 文章目录 ElasticSearch基础概念以及可视化界面安装1、引言2、基本概念3、倒排索引机制3.1、倒排索引 4、使用docker安装ElasticSearch4.1、下载镜像文件4.2 、创建实例,启动es 5.安装Kibana 1、引言 Elastic 的底层是开源库 Lucene。…...

像素极光入门指南:像插入游戏卡一样加载模型,快速生成梦幻像素风景

像素极光入门指南&#xff1a;像插入游戏卡一样加载模型&#xff0c;快速生成梦幻像素风景 1. 认识像素极光创意引擎 像素极光(Pixel Aurora Engine)是一款专为像素艺术创作设计的AI绘图工作站。它采用复古游戏机风格界面&#xff0c;让AI绘画变得像玩游戏一样简单有趣。与传…...

编写程序做书架分层标识牌,自动适配文字长度,输出:家庭/书店整理神器。

项目方案&#xff1a;基于Python的书架分层标识牌激光切割生成系统一、 实际应用场景描述想象一下这样的场景&#xff1a;你拥有一个摆放着数百本书的家庭书房&#xff0c;或者你经营着一家独立书店。为了快速找到书籍&#xff0c;你需要制作贴在书架隔板前沿或立在书架顶端的分…...

每日 AI 研究简报 · 2026-04-06

&#xff08;本文借助 AI 大模型及工具辅助整理&#xff09; 一句话总结&#xff1a;今日AI领域亮点纷呈——Nvidia发布企业级AI Agent平台获17家巨头支持&#xff0c;Claude Code泄露事件引发安全担忧&#xff0c;开源AI Agent生态持续升温。 &#x1f30a; AI 动态与趋势 …...

Skyvern云服务实战:每月5美元,如何搭建一个自动化的竞品价格追踪机器人

Skyvern云服务实战&#xff1a;每月5美元&#xff0c;如何搭建一个自动化的竞品价格追踪机器人 在当今快节奏的商业环境中&#xff0c;竞品价格监控已成为企业保持市场竞争力的关键。传统的人工监控方式不仅耗时耗力&#xff0c;还容易错过重要的价格变动时机。而市面上的专业竞…...

告别复杂配置!GLM-4.7-Flash镜像开箱即用,支持OpenAI兼容API

告别复杂配置&#xff01;GLM-4.7-Flash镜像开箱即用&#xff0c;支持OpenAI兼容API 1. GLM-4.7-Flash模型简介 1.1 新一代开源大语言模型 GLM-4.7-Flash是智谱AI推出的最新一代开源大语言模型&#xff0c;采用创新的MoE&#xff08;混合专家&#xff09;架构&#xff0c;总…...

SenseVoice Small开发者调试指南:日志输出、错误定位与修复路径

SenseVoice Small开发者调试指南&#xff1a;日志输出、错误定位与修复路径 1. 项目背景与核心价值 SenseVoice Small是阿里通义千问推出的轻量级语音识别模型&#xff0c;专门针对移动端和边缘计算场景优化。我们在实际部署中发现&#xff0c;虽然模型本身非常优秀&#xff…...

OpenClaw多通道实战:Qwen3-32B同时处理飞书与邮箱请求

OpenClaw多通道实战&#xff1a;Qwen3-32B同时处理飞书与邮箱请求 1. 为什么需要多通道自动化 上周五晚上11点&#xff0c;我正打算关电脑休息时&#xff0c;突然收到飞书消息&#xff1a;"明天上午10点临时会议需要准备材料"。与此同时&#xff0c;邮箱里又弹出客…...

Linux文件偏移量与lseek()系统调用详解

1. 文件读写位置基础概念在Linux系统中&#xff0c;每次打开一个文件时&#xff0c;内核都会维护一个称为"文件偏移量"的指针。这个指针决定了下一个read()或write()操作将从文件的哪个位置开始执行。理解这个机制对于进行精确的文件操作至关重要。文件偏移量从0开始…...

OpenClaw安全加固:Phi-3-vision服务接口的权限控制实践

OpenClaw安全加固&#xff1a;Phi-3-vision服务接口的权限控制实践 1. 为什么需要安全加固&#xff1f; 上周我在本地部署了Phi-3-vision多模态模型&#xff0c;通过OpenClaw实现了一个智能图片分析工作流。但当我用手机测试时&#xff0c;意外发现任何人都能通过公网IP访问我…...

002、环境搭建:Python虚拟环境、LangChain安装与核心依赖解析

002、环境搭建&#xff1a;Python虚拟环境、LangChain安装与核心依赖解析从一次深夜调试说起 上周三凌晨两点&#xff0c;我被一个诡异的错误钉在屏幕前&#xff1a;明明本地测试通过的LangChain智能体&#xff0c;在同事的机器上死活跑不起来。报错信息指向一个版本冲突——py…...