有个需求是要层叠两张图,就像你现在看到的:整个浏览器和html页面,内层图片要水平居中,等比例与源UI图适配不同设备

本来很简单的使用 vw vh了(

核心代码

            top: 13.25vh;
            left: 50%;
            margin-left: -32.31vw;
            width: 64.62vw;
            height: 61.56vh;

),但是发觉不太居中,而且考虑到移植的兼容性,还是用jq搞了一遍:

        (function () {
            var size = {
                uiImage: [530, 830],
                widthHeight: [340, 510],
                leftTop: [94, 110]
            };
            $('.top').css(getCss(size));
            function getCss(sizeSrc) {
                function ratio(arrTop, arrBottom) {
                    var arr = [];
                    for (var i = 0, j = arrTop.length; i < j; i++) {
                        arr[i] = arrTop[i] / arrBottom[i];
                    }
                    return arr;
                }
                var realSize, ratios, outSize, outLeftTop, ops;
                realSize = [$(window).width(), $(window).height()];
                ratios = ratio(sizeSrc.uiImage, realSize);
                outSize = ratio(sizeSrc.widthHeight, ratios);
                outLeftTop = ratio(sizeSrc.leftTop, ratios);
                ops = {
                    width: outSize[0],
                    height: outSize[1],
                    left: outLeftTop[0],
                    top: outLeftTop[1]
                };
                return ops;
            }
        }())

考虑到不想再新建一个js文件,再次包装下:

<div class="top-image" ui-image="530,830" width-height="340,510" left-top="94,110" ></div>
 
(function () {
  var obj = $('.top-image');
  obj.css(getCss({
    uiImage: obj.attr('ui-image').split(','),
    widthHeight: obj.attr('width-height').split(','),
    leftTop: obj.attr('left-top').split(',')
  }));
  function getCss(sizeSrc) {
    function ratio(arrTop, arrBottom) {
      var arr = [];
      for (var i = 0, j = arrTop.length; i < j; i++) {
        arr[i] = arrTop[i] / arrBottom[i];
      }
      return arr;
    }
    var realSize, ratios, outSize, outLeftTop, ops;
    realSize = [$(window).width(), $(window).height()];
    ratios = ratio(sizeSrc.uiImage, realSize);
    outSize = ratio(sizeSrc.widthHeight, ratios);
    outLeftTop = ratio(sizeSrc.leftTop, ratios);
    ops = {
      width: outSize[0],
      height: outSize[1],
      left: outLeftTop[0],
      top: outLeftTop[1]
    };
    return ops;
  }
}())

还是 js 替代 vw vh 了的更多相关文章

  1. 视区相关单位vw, vh..简介以及可实际应用场景

    这篇文章发布于 2012年09月24日,星期一,01:15,归类于 css相关. 阅读 37012 次, 今日 12 次 by zhangxinxu from http://www.zhangxinx ...

  2. CSS3自适应字体大小(vw vh)

    viewpoint css3提供了一些与当前viewpoint相关的元素,vw,vh,vmin, vmax等. “viewpoint” = window size vw = 1% of viewpor ...

  3. 视区相关单位vw, vh..简介以及可实际应用场景——张鑫旭

    一.N多的唠哩唠叨 CSS3中一些新的单位早在去年春暖花开的时候就介绍了,参见:CSS长度值及时间.频率.角度单位.显然,其中就提到了本文要感叹的单位vw, vh,见下图: 不过“我看见你”和“我触碰 ...

  4. 【学习笔记】响应式布局的常用解决方案(媒体查询、百分比、rem、和vw/vh)

    原文转载:https://blog.csdn.net/sinat_17775997/article/details/81020417 一.媒体查询 不同物理分辨率的设备,在还原设计稿时,css中设置的 ...

  5. 关于将px转换为vw vh的解决方案

    什么是vw(Viewport Width)和vh(Viewport Height)? vw和vh是前端开发中的一个动态单位,是一个相对于网页视口的单位. 系统会将视口的宽度和高度分为100份,1vw占 ...

  6. css中vw,vh单位对于UC的兼容性问题

    vw,vh单位在移动端浏览器不兼容,在网上找半天也没找到什么官方的解决方法:我就试了一下在使用到vh的单位之前添加一个用px定义的样式: 如: 当浏览器不是别100vw单位的时候 就会赋给px单位的样 ...

  7. css3自适应布局单位vw,vh你知道多少?

    视口单位(Viewport units) 什么是视口? 在桌面端,视口指的是在桌面端,指的是浏览器的可视区域:而在移动端,它涉及3个视口:Layout Viewport(布局视口),Visual Vi ...

  8. css中px em rem vw vh vmax vmin等单位的区别--转载

    px:绝对单位,页面按精确像素展示 em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值. rem:相对 ...

  9. vw+vh+rem响应式布局

    科普下: 平时很少用的css单位: 1.长度单位: rem:相对长度单位.相对于根元素(即html元素)font-size计算值的倍数; vw:相对于视口的宽度.视口被均分为100单位的vw; vh: ...

随机推荐

  1. 输入一个网站地址到网站展现的过程以及APR协议(鬼知道中间经历了什么)

    以前只知道输入一个网站,然后看着返回琳琅满目的内容,其实中间经历的过程和步骤太多了.为了满足好奇心以及学习需要,特查阅了资料将其记录下来以备后续自己复习. 从我在地址栏输入www.zhihu.com ...

  2. 310实验室(七)OptimizationTemplateLibrary

    利用泛型编程思想,C++模板. 首先定义变量或者重新typedef variables: 模板中的变量:_TRandom.double  _TReal._TProblem::TDecision _TD ...

  3. chinese-typesetting:更好的中文文案排版

    欢迎指正.GitHub 地址:https://github.com/jxlwqq/chinese-typesetting 更好的中文文案排版 统一中文文案.排版的相关用法,降低团队成员之间的沟通成本, ...

  4. Android--aapt命令

    1.aapt l[ist] [-v] [-a] file.{zip,jar,apk} 释义:列出压缩文件中的内容 aapt l xxx.apk:简单的罗列压缩文件中每一项的内容 aapt l -v x ...

  5. OGG双向复制

    注意:在进行如下配置之前,先在源数据库(原来的目标数据库)端添加辅助的redolog配置:      1.SQL> alter database add supplemental log dat ...

  6. 设置webView头部不能滑动

    设置webView头部不能滑动 _webView.scrollView.bounces=NO;

  7. centos 搭建php环境

    安装Apache1.安装yum -y install httpd2.开启apache服务systemctl start httpd.service3.设置apache服务开机启动systemctl e ...

  8. python 面向对象· self 讲解

    self就是参数 以形参形式 5.self是什么鬼? self是一个python自动会给传值的参数 那个对象执行方法,self就是谁. obj1.fetch('selec...') self=obj1 ...

  9. nodejs Async详解之二:工具类

    Async中提供了几个工具类,给我们提供一些小便利: memoize unmemoize log dir noConflict 1. memoize(fn, [hasher]) 有一些方法比较耗时,且 ...

  10. SaltStack系列(三)之state相关介绍

    一.管理对象 saltstack系统中管理对象叫做Target,在master上可以采用不同的Tatget去管理不同的minion.这些Target都是通过去管理和匹配Minion的ID来做一些集合. ...