位置: 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(遇到的问题及解决方法)

  • 荣耀30pro和荣耀30s的区别(荣耀30pro和荣耀30)

    荣耀30pro和荣耀30s的区别(荣耀30pro和荣耀30)

  • 三星s10与s10+的区别(三星s10和s10+的区别)

    三星s10与s10+的区别(三星s10和s10+的区别)

  • 华为账号怎么解除实名认证(捡的手机关联华为账号怎么解)

    华为账号怎么解除实名认证(捡的手机关联华为账号怎么解)

  • 抖音里面的喜欢是怎么来的(抖音里面的喜欢列表怎么删除)

    抖音里面的喜欢是怎么来的(抖音里面的喜欢列表怎么删除)

  • 快手上申请退货退款商家不给地址怎么办(快手上申请退货退款上门取件怎么付邮费)

    快手上申请退货退款商家不给地址怎么办(快手上申请退货退款上门取件怎么付邮费)

  • 抖音剩余粉丝未授权无法查看(抖音剩余粉丝未授权怎么移除)

    抖音剩余粉丝未授权无法查看(抖音剩余粉丝未授权怎么移除)

  • 苹果蓝牙耳机总是咚咚响(苹果蓝牙耳机总是频繁断开)

    苹果蓝牙耳机总是咚咚响(苹果蓝牙耳机总是频繁断开)

  • 1673是iPad几(ipad型号1673)

    1673是iPad几(ipad型号1673)

  • 优酷黄金会员和vip的区别(优酷黄金会员和88vip的区别)

    优酷黄金会员和vip的区别(优酷黄金会员和88vip的区别)

  • 华为限制广告跟踪要不要打开(华为限制广告跟踪打开耗电吗)

    华为限制广告跟踪要不要打开(华为限制广告跟踪打开耗电吗)

  • 192.168.1.1为什么进不去(192.168.1.1为什么登不上)

    192.168.1.1为什么进不去(192.168.1.1为什么登不上)

  • 电脑蓝屏后重启一直黑屏(电脑蓝屏后重启又正常是什么原因?)

    电脑蓝屏后重启一直黑屏(电脑蓝屏后重启又正常是什么原因?)

  • 威朗显示屏闪屏原因(威朗显示屏闪屏怎么解决)

    威朗显示屏闪屏原因(威朗显示屏闪屏怎么解决)

  • 电子秤m1m2m3m4是什么意思(电子秤上的m1m2m3m4m5m6是什么意思)

    电子秤m1m2m3m4是什么意思(电子秤上的m1m2m3m4m5m6是什么意思)

  • 无线耳机左右怎么分(无线耳机左右怎么分没有rl)

    无线耳机左右怎么分(无线耳机左右怎么分没有rl)

  • 一加7Tpro是什么处理器(一加7tpro百度百科)

    一加7Tpro是什么处理器(一加7tpro百度百科)

  • 通知栏显示是什么(通知栏有什么用)

    通知栏显示是什么(通知栏有什么用)

  • 小米米家智能门锁sn码在哪(小米米家智能门锁如何修改密码)

    小米米家智能门锁sn码在哪(小米米家智能门锁如何修改密码)

  • tpc数据线是什么意思(tpc数据线谁的专利)

    tpc数据线是什么意思(tpc数据线谁的专利)

  • word三线表格怎么制作(word三线表格怎么设置线宽)

    word三线表格怎么制作(word三线表格怎么设置线宽)

  • 华为折叠机什么时候上市(华为折叠机好用吗)

    华为折叠机什么时候上市(华为折叠机好用吗)

  • 手机QQ如何贴表情(手机qq如何贴表情)

    手机QQ如何贴表情(手机qq如何贴表情)

  • 磊科路由器初始密码(磊科路由器初始账号密码)

    磊科路由器初始密码(磊科路由器初始账号密码)

  • 魅族16怎么关机(魅族怎么关机重启)

    魅族16怎么关机(魅族怎么关机重启)

  • 苹果Mac系统遇到蓝牙文件传输失败不支持的项该怎么办?(mac电脑遇到问题而重新启动)

    苹果Mac系统遇到蓝牙文件传输失败不支持的项该怎么办?(mac电脑遇到问题而重新启动)

  • 安装win7系统提示Output error file to following location的原因及解决方法(装win7提示失败怎么办)

    安装win7系统提示Output error file to following location的原因及解决方法(装win7提示失败怎么办)

  • vue3动态路由刷新后空白或者404(vue2动态路由)

    vue3动态路由刷新后空白或者404(vue2动态路由)

  • 个人所得税申报操作流程2023
  • 视同销售收入是纳税调整项目吗?
  • 产值利税率是什么
  • 企业所得税负担变动率
  • 餐厅打包盒算不算商品
  • 个人独资企业需要监事吗
  • 金融业产值和金融业增加值有什么不同
  • 原材料入库进项税
  • 公司不交工会经费的原因,风险说明
  • 资本公积只能转现金吗
  • 出售交易性金融资产的交易费用计入
  • 实收资本叫别人代缴可以不
  • 代收水电气费加盟
  • 共同投资叫什么
  • 非经营性费用包括哪些内容
  • 营改增 贷款服务
  • 进项税额一直大于销项税额
  • 外出经营活动税收管理证明和跨区域涉税事项报告表
  • 享受小微企业所得税优惠条件2022
  • 业务宣传费和广告费计入什么科目
  • 完税证明已开回怎么处理
  • 小规模建筑公司可以开劳务发票吗
  • 出口退税的钱退到哪里了
  • 农民工签订劳务合同的条件
  • 电脑温度过高会怎么样
  • 产生的投资收益怎么算
  • 现金发放的餐补算工资么
  • 收到供应商现金回扣
  • PHP:session_unset()的用法_Session函数
  • php数组函数,选班长
  • win10telnet不是内部或外部命令教程
  • 盈余公积科目是什么科目
  • 提坏账准备的调整分录
  • 超过认证期的发票怎么办
  • zend framework手册
  • login user
  • ajax提交表单数据
  • 如何用php操作mysql
  • 资产负债表日后调整事项
  • 退税申报系统里出货明细金额少0.1会比对报关单金额吗
  • 增值税发票抵扣期限是多久
  • 物流公司可以作为货物收货人吗
  • 代垫费用开票明细怎么写
  • 如何对php网站页面进行修改
  • python调用自定义类
  • 直接免征的税款属于政府补助吗
  • 应发工资包括岗位工资吗
  • 客户发票弄丢了应该如何补救
  • 消费税和资源税何时计入成本,何时计入费用
  • 小规模企业申报哪些税
  • 交易性金融资产公允价值变动怎么算
  • 行政事业单位非税收入管理办法
  • 计提的生产车间职工工资
  • 应付劳务费怎么做账
  • 其它收益和递延收益的区别
  • 异地成立分公司的流程和要求
  • 委托生产的会计分录
  • 小型微利企业预缴企业所得税怎么算
  • 支付宝收入什么意思
  • 出口发票上的汇票是什么
  • 营业成本包括三大费用如何称呼
  • SQL Server中通配符的使用示例
  • centos7+
  • Windows Server 2008下 驾驭拨号上网
  • telnet root
  • ubuntu彻底删除
  • win10预览版好吗
  • Retina MacBook和10.10.3支持更快的NVMe SSD接口
  • 查看win8.1版本
  • win10怎么关闭欢迎界面
  • 阿里云一键建站
  • angular子组件调用父组件的方法
  • jquery删除节点的元素
  • display getSize()
  • web前端入门教程
  • 医保属于地税还是国税
  • 华为领导班子成员名单
  • 网上交了购置税你要打印出来吗
  • 根据消费税暂行条例的规定,纳税人自产自用
  • 工会经费收支办法2022新政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设