首页 > 其他分享 >html css 等比例缩放

html css 等比例缩放

时间:2023-05-10 16:33:10浏览次数:28  
标签:body style ch 缩放 window html cw css

来自:https://blog.csdn.net/chenrui310/article/details/129365208 侵删

         let cw = 1920,ch = 1080//默认
        let body = document.getElementById('body')
        body.style.width = `${cw}px`
        body.style.height = `${ch}px`
 
        // 对body进行缩放
        function windowResize() {
            // 窗口宽高
            let w = window.innerWidth,
                h = window.innerHeight
            // 缩放比例
            let r = w / cw < h / ch ? w / cw : h / ch
 
            body.style.transform = `scale( ${r})`
            // 因为scale是以body的原中心点为基准进行缩放,所以缩放之后需要调整外边距,使其位于窗口的中心位置
            body.style.marginLeft = (-(cw - r * cw) / 2 + (w - r * cw) / 2) + 'px'
            body.style.marginTop = (-(ch - r * ch) / 2 + (h - r * ch) / 2) + 'px'
            body.style.marginBottom = (-(h > ch ? h : ch - r * ch)) + 'px'
            body.style.marginRight = (-(w > cw ? w : cw - r * cw)) + 'px'
        }
 
       window.addEventListener("load", windowResize())
        // 监听窗口尺寸变化
        window.addEventListener('resize', windowResize);

当开发前端页面在分辨率1920的情况下,需要切换到小屏,有种方法是可以对屏幕比例进行缩放,通过css3属性transform可以自适应屏幕分辨率大小

var s;
function resize() {
s = window.screen.width / 1920;
document.body.style.transformOrigin = '0 0';
document.body.style.transform = 'scale(' + s + ',' + s + ')';
document.body.style.width = window.innerWidth / s + 'px';
document.body.style.height = window.innerHeight / s + 'px';
}
window.onresize = function () {
resize();
}
resize();

 


通过计算屏幕分辨率比例,对当前页面进行比例缩放。

但是这会有一个问题,就是如果页面中有定位,缩放后定位的位置会跑偏。那是因为,如果使用定位left,top来固定窗口位置时候,body的大小改变会对它的children的定位产生影响,并且定位的弹框大小没有对应缩放。

发现一个简单的方法

s = window.screen.width / 1920;
document.body.style.zoom = s;
这样就可以了
————————————————
版权声明:本文为CSDN博主「chenrui310」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenrui310/article/details/129365208

标签:body,style,ch,缩放,window,html,cw,css
From: https://www.cnblogs.com/Byme/p/17388382.html

相关文章

  • HTML5基础day3
    关于HTML5第三天的学习内容1.audio音频文件 运行后可在网页中展现音频文件且可以播放注意:音频元素缺失controls属性会导致页面效果丢失,变成空白2.HTML5结构元素一般的页面布局由页面头部、页面主体、页面底部构成,分别通过代码header、section、footer来实现  3.表单......
  • CSS 3种引入方式
    1.1内联样式-用style属性1.2内部样式-用<style>标签1.3外部样式-(1)用<link>标签-(2)在<style>标签中使用@import(不推荐)-不推荐原因:-link标签内使用src引入css文件,浏览器会将其标记为css文件进行异步下载,并继续向下执行。-而@import引入css文件会待文件下载完......
  • html5 3.0 表单
    表单的定义:多个输入框,以表格的形式展示表单常用在网页登录和注册功能中表单的元素属性:<inputtype="text"name="  ”value=" "/>type;指定当前元素的类型value:所见即所得name:提交到后端服务器的值文本框<inputtype="text"value=""/>用户在页面中输入的值明文显示;valuce="......
  • 本地图文直接复制到HTML编辑器中
    ​ 图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪......
  • 利用css var函数让你的组件样式输出规范样式API,可定制性更高;
    我们平时在使用ElementuiAntdesing这些UI库时,难免会碰到使用deep强行侵入式去修改组件内部样式的情况; 比如下列代码,我们需要把ant的分页样式进行高度自定义,就得使用deep去修改; 这种实现方式确实能够达到我们的目的,但在开发时确总觉得不太合适:1、他属于强行入侵组件内部去......
  • iphone 解析HTML
    几周前,由于需要从网页中提取一部分内容我们就一直在寻找一个可以在iPhone可用的简单的html解析器。我们在该贴中找到了一个名为hpple的漂亮封装。使用该库的简单步骤如下:包含并链接libxml2:展开Targets双击项目名选择所有配置搜索HeaderSearchPath加入一行并选中recursive选项:${......
  • 碎片化学习前端之HTML(webComponent)
    前言webComponent是HTML5推出的新特性,为组件化推广奠定基础。webComponent基本使用原生组件,性能较好,但存在兼容性问题。其核心技术有:Customelements,ShadowDOM,HTMLTemplates。CustomelementsJavaScriptAPI,用于定义customelements及其行为。<m-buttontype="p......
  • CSS学习1 认识CSS;三种CSS的编写样式;CSS注释;常见的CSS样式;元素link;CSS颜色表示方法;浏览
    1_认识CSSwhat:为网页添加样式(美化界面);一门样式表语言,不是编程语言发展历史css1(两个人合作发布)css2(w3c)css3(模块化持续发展中)总结:美化HTML,让HTML与CSS分离方式一:添加样式,例如颜色、字体,大小方式二:布局,按照某种结构显示2_三种CSS的编写样式声明:例如【color:red......
  • Java使用wkhtmltopdf实现HTML转pdf
    wkhtmltopdf设置全屏:wkhtmltopdf--disable-smart-shrinking--page-sizeA4-B0-L0-R0-T0test.htmloutput.pdf-B-T-R-L是有效果的,$snappy->setOption('margin-top','0mm');$snappy->setOption('margin-left','0mm'......
  • HTML中meta标签的那些属性
    <meta>标签是HTML中用于描述网页元信息的元素。它位于<head>部分,不会显示在页面内容中,但对于浏览器、搜索引擎等具有重要作用。主要作用有:定义文档的字符编码、提供网页的描述信息、关键词、作者、视口设置等,这些信息有助于搜索引擎理解和索引网页内容。 <meta>标签的......