位置: IT常识 - 正文

vue项目网页自适应,等比例放大缩小(vue 网页)

编辑:rootadmin
vue项目网页自适应,等比例放大缩小

推荐整理分享vue项目网页自适应,等比例放大缩小(vue 网页),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue网页设计,vue 自适应网站ui框架,vue 自适应网站ui框架,vue页面自适应屏幕大小,vue 自适应网站ui框架,vue页面自适应屏幕大小,vue 自适应网站ui框架,vue页面自适应咋写,内容如对您有帮助,希望把文章链接给更多的朋友!

        同样是,虽然标题写的vue项目适用,但其它前端框架应该也可以。其它框架我没什么经验,可以参考着看看,应该适用。

        本文章不涉及第三方插件,纯js。

        自适应这个问题,老早以前就有一个解决方式,css中的%,比如height:100%; width:100%;给主容器赋予该样式,那主容器就可以自适应屏幕,但里面的内容不会,如果要里面的内容也自适应,那里面也得写%,但问题随之而来,font-size呢?

        %虽然现在依然有用,但现在的项目很多都有设计稿,比如我接触比较多的数据大屏,这类网页,长宽比是固定的,%无法解决字体自适应的问题。熟悉rem的,可以用rem,这个单位类似于微信小程序的rpx,算是自适应属性,但我没用过,不讲,今天的主角不是它。

        接下来就是正文了。在长宽比固定的情况下,网页自适应,其实就是将网页等比例放大或者缩小。我们提出一个 设想,在网页初始化的时候,正确地放大或者缩小网页,来适应屏幕;并在浏览器显示区域发生变化时,修改放大或者缩小的比例,使网页始终能够适应屏幕。

        放大和缩小,有什么现有的方法或者样式吗?有, css中的 zoom 以及 scale(),浅讲一下两个样式的不同之处:

zoom:

        1. 使用该样式的标签会等比例缩放。zoom:0.5 (缩放50%),zoom:2(放大两倍)。

        2. 缩放的基准点在原容器的左上角(应该没记错,想证实的可以自己试试),意思就是,使用zoom放大缩小,原容器的左上角作为原点不动,然后边长放大缩小。在数学里的话,差不多就是原点固定,然后在第四象限放大缩小。

        3. 火狐firefox不支持。

scale():

        1. 使用该样式的标签也会放大缩小,不过它可以让长宽独立放大缩小。transform: scale(2, 2); (放大两倍),transform: scale(0.5, 2); (水平方向缩放50%,垂直方向放大2倍)。

vue项目网页自适应,等比例放大缩小(vue 网页)

        2. 缩放的基准点在原容器的中心,意思大概是以原容器中心为原点,然后向一二三四象限扩张或收缩。

        3. 火狐firefox支持。

        对比下来,scale()优势明显,我们就用scale(),它是css3的属性,我们不考虑什么兼容问题,现在还不支持css3的浏览器,我都不稀罕用。如果非要用zoom,也可以,因为代码方面差不多。

        既然上面的 设想 可以有方法实现,现在就剩最后一个问题了,缩放多少呢?

        场景假设:我们以设计稿 1920px*1080px为例,但是现在我们的屏幕没有1920*1080,或者浏览器没有最大化,就占了屏幕的一半,这时候很可能浏览器长宽比连16:9都不是,我们可以宽度做基准,高度来适应宽度(高度为基准,宽度适应高度也可以,看场景和具体需要)。设计稿的宽度是1920px,而浏览器可视宽度是 window.innerWidth,我们需要在浏览器可视范围内自适应缩放容器,也就是在 window.innerWidth 的宽度中来显示 1920px的东西,那我们的 缩放比例 就是 window.innerWidth / 1920。

        所有问题都解决了,现在就来实现我们的设想。下面我以scale()为例了。

        在网页初始化的时候,正确地放大或者缩小网页,来适应屏幕。翻译:mounted() 的时候scale()主容器。

mounted() { var browerWidth = window.innerWidth; //浏览器可视宽度 var baseWidth = 1920; //设计稿宽度 var zoomValue = browerWidth / baseWidth; //缩放比例计算 document.getElementById("mainContainer").style.transform = "scale(" + zoomValue + "," + zoomValue + ")"; //mainContainer为主容器id}

        在浏览器显示区域发生变化时,修改放大或者缩小的比例,使网页始终能够适应屏幕。翻译:窗口尺寸变化时,重新计算缩放比例,并重新scale()主容器。

window.onresize = function () { var browerWidth = window.innerWidth; var baseWidth = 1920; var zoomValue = browerWidth / baseWidth; document.getElementById("mainContainer").style.transform = "scale(" + zoomValue + "," + zoomValue + ")"; }

        整合一下:

mounted() { var browerWidth = window.innerWidth; //浏览器可视宽度 var baseWidth = 1920; //设计稿宽度 var zoomValue = browerWidth / baseWidth; //缩放比例计算 document.getElementById("mainContainer").style.transform = "scale(" + zoomValue + "," + zoomValue + ")"; //mainContainer为主容器id window.onresize = function () { //窗口尺寸变化时,重新计算和缩放 browerWidth = window.innerWidth; zoomValue = browerWidth / baseWidth; document.getElementById("mainContainer").style.transform = "scale(" + zoomValue + "," + zoomValue + ")"; }}

        到这里,自适应的内容已经结束,但还不完美。如果显示区域的比例不是16:9。两种情况:

        1. 宽度更大,高度为了适应宽度,会导致垂直方向显示不全,需要上下滚动显示。这个就改成以高度为基准。上面的 场景假设 有提到。

        2. 高度更大,或者使用了1的解决方法。因为显示区域不是16:9,而设计稿是16:9,总会有部分区域不属于主容器,那这部分区域就是白色的很难看,像这样:

         这个问题其实就很简单了,我们给主容器再套一个父容器,父容器来设置背景色填充留白。父容器的样式这么写(自适应窗口,并让子元素水平垂直居中,留白部分用背景色填充):

#app { width: 100vw; height: 100vh; background: rgb(24, 25, 35); display: flex; align-items: center; justify-content: center;}

最终效果图:

 

本文链接地址:https://www.jiuchutong.com/zhishi/287152.html 转载请保留说明!

上一篇:postman下载与汉化(附直接下载链接)(postman汉化包)

下一篇:[遇到的问题-已解决]Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.1(遇到的问题及解决方法)

  • 服装店应该掌握这4种营销方法(做服装店的经验之谈)

    服装店应该掌握这4种营销方法(做服装店的经验之谈)

  • 华为手表需要贴膜吗(华为手表需要贴背膜吗)

    华为手表需要贴膜吗(华为手表需要贴背膜吗)

  • 苹果11可以无线充电吗(苹果11可以无线连接carplay吗)

    苹果11可以无线充电吗(苹果11可以无线连接carplay吗)

  • 苹果手机如何拦截陌生短信(苹果手机如何拦截信息)

    苹果手机如何拦截陌生短信(苹果手机如何拦截信息)

  • 刷宝发视频怎么算收益(刷宝短视频怎么上传视频)

    刷宝发视频怎么算收益(刷宝短视频怎么上传视频)

  • 平板电脑可以用鼠标吗(平板电脑可以用u盘吗)

    平板电脑可以用鼠标吗(平板电脑可以用u盘吗)

  • qq作业有时间限制吗(qq作业超时怎么办)

    qq作业有时间限制吗(qq作业超时怎么办)

  • 京豆为什么被收回了(京豆为什么会被扣除)

    京豆为什么被收回了(京豆为什么会被扣除)

  • 抖音怎么发长图片滚动(抖音怎么发长图模式)

    抖音怎么发长图片滚动(抖音怎么发长图模式)

  • 数据线充电慢怎么解决(数据线充的慢怎么回事)

    数据线充电慢怎么解决(数据线充的慢怎么回事)

  • 苹果手机通讯录不按字母排序怎么办(苹果手机通讯录里的联系人不见了怎么恢复)

    苹果手机通讯录不按字母排序怎么办(苹果手机通讯录里的联系人不见了怎么恢复)

  • 闪电转usb连接线什么意思(闪电转usb连接线 苹果连电视)

    闪电转usb连接线什么意思(闪电转usb连接线 苹果连电视)

  • 美图t9上市时间(美图t9发售价多少)

    美图t9上市时间(美图t9发售价多少)

  • 怎么发群待办(微信发错群了,又撤不了怎么办)

    怎么发群待办(微信发错群了,又撤不了怎么办)

  • ipad怎么省电(ipad省电设置十大技巧)

    ipad怎么省电(ipad省电设置十大技巧)

  • 文本对齐的五种方法(文本对齐方式什么意思)

    文本对齐的五种方法(文本对齐方式什么意思)

  • 小米8青春版配置(小米8青春版配置参数表)

    小米8青春版配置(小米8青春版配置参数表)

  • 三星g6200是什么处理器(三星g620是什么型号)

    三星g6200是什么处理器(三星g620是什么型号)

  • 什么是微视频(什么是微视频教学)

    什么是微视频(什么是微视频教学)

  • 荣耀9x有指示灯吗(荣耀9x有指示灯怎么关闭)

    荣耀9x有指示灯吗(荣耀9x有指示灯怎么关闭)

  • qq消息隐藏怎么设置(qq消息隐藏消息内容)

    qq消息隐藏怎么设置(qq消息隐藏消息内容)

  • 荣耀手环5nfc版支持门禁卡吗(荣耀手环5NFC版多少钱)

    荣耀手环5nfc版支持门禁卡吗(荣耀手环5NFC版多少钱)

  • 荣耀手机恢复出厂设置(荣耀手机恢复出厂设置了还可以恢复出厂设置吗)

    荣耀手机恢复出厂设置(荣耀手机恢复出厂设置了还可以恢复出厂设置吗)

  • 京东取消订单钱退到哪(京东取消订单钱没到账)

    京东取消订单钱退到哪(京东取消订单钱没到账)

  • 手机qq怎么充话费(手机qq怎么充话费便宜)

    手机qq怎么充话费(手机qq怎么充话费便宜)

  • oppo手机录屏怎么录声音(oppo手机录屏怎么结束)

    oppo手机录屏怎么录声音(oppo手机录屏怎么结束)

  • 荣耀20i返回键在哪(荣耀20如何调出返回键)

    荣耀20i返回键在哪(荣耀20如何调出返回键)

  • 如何清除华为云空间(如何清除华为云空间的图库文件)

    如何清除华为云空间(如何清除华为云空间的图库文件)

  • 苹果手机换机条件(苹果手机换新机条件)

    苹果手机换机条件(苹果手机换新机条件)

  • 实收资本印花税按次还是按年
  • 加计扣除内容
  • 当月出租设备需要发票吗
  • 关联方交易的会计处理方法
  • 注销股本对所有股票影响
  • 普通发票金额和申报工资有关系吗
  • 新企业会计准则什么时候实施的
  • 制造费用计入营业成本吗
  • 政府会计制度中累计盈余怎么计算
  • 工程预收款如何处理
  • 暂估入账估低了怎么办
  • 银行收取代发工资合法吗
  • 网上购物退款后又收到产品了怎么办
  • 收据注明实际到账时间
  • 机动车发票抵扣联有什么用
  • 当月增次月是什么意思
  • 现金流量计划中的税金怎么算
  • 被吊销营业执照的公司如何注销
  • 如何区分纳税人和小规模纳税人
  • 应付和预付账款的区别
  • 开了发票一定要确认收入吗
  • 销售不动产税务处理
  • 承兑汇票怎么换算
  • 防伪税控技术维护费怎么申报
  • 预借差旅费报销会计分录
  • 公司买的理财产品怎么做账
  • 稳增长促转型
  • 如何开启系统设置
  • 福利费发票已认证怎么查
  • php ftp功能
  • 一般纳税人出售旧设备的税率
  • 绿萝怎么样养
  • 营改增开始时间
  • 供应商发票多开了怎么处理?
  • thinkphp框架怎么用
  • 大数据项目之数据采集
  • 微信小程序完整授权
  • phpweb漏洞
  • mysql redo log buffer
  • 错误凭证如何修改?所有的错误的凭证都能修改吗?
  • 挂靠车辆进项税额是否可以抵扣
  • 个体户开发票超过定额是如何交税?
  • 其他应付款不用付了会计分录
  • sqlserver数据库和mysql区别
  • 商业折扣应该怎么计算
  • 调整以前年度少计收入
  • 用友软件接口
  • 参加新冠疫情防控工作感悟 医务人员
  • 当月没认证的发票当月不用进行账务处理吗
  • 电影赠票怎么用
  • 生育津贴领取条件及流程
  • 收入纳税明细里的收入和实际不符
  • 企业预提费用是什么科目
  • sql查询当前年份
  • 迁移windows
  • WZCSLDR.exe - WZCSLDR是什么进程
  • 在系统注册表中注册
  • xp系统怎么更改屏幕分辨率
  • 笔记本如何一键锁屏快捷键
  • 在mac下如何安装软件
  • Linux系统root密码忘记怎么重置
  • win8应用商店废了
  • win10系统怎么关闭病毒防护
  • linux的tar命令用法
  • 微软认为
  • sqlite数据库修改及升级
  • 安卓游戏模拟游戏制作
  • 局域网远程开机与远程唤醒
  • python怎么写链表
  • node.js适用哪些场景
  • unity mathf.sin
  • 税务局上班周末上班吗
  • 国家税务局广东省电子税务总局手机版
  • 青岛胶州国际机场在哪个区
  • 吉林省电子税务局官网
  • 江西车辆购置税查询网
  • 国税总局王军简历
  • 耗电异常优化是什么意思微信
  • 税务发票定额
  • 发票上纳税人识别号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设