zoukankan      html  css  js  c++  java
  • 还是 js 替代 vw vh 了

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

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

    核心代码

                top: 13.25vh;
                left: 50%;
                margin-left: -32.31vw;
                 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 = {
                         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 = {
           outSize[0],
          height: outSize[1],
          left: outLeftTop[0],
          top: outLeftTop[1]
        };
        return ops;
      }
    }())
  • 相关阅读:
    svn command line tag
    MDbg.exe(.NET Framework 命令行调试程序)
    Microsoft Web Deployment Tool
    sql server CI
    VS 2010 One Click Deployment Issue “Application Validation did not succeed. Unable to continue”
    mshtml
    大厂程序员站错队被架空,只拿着五折工资!苟活和离职,如何选择?
    揭秘!Windows 为什么会蓝屏?微软程序员竟说是这个原因...
    喂!千万别忘了这个C语言知识!(~0 == -1 问题)
    Linux 比 Windows 更好,谁反对?我有13个赞成理由
  • 原文地址:https://www.cnblogs.com/justSmile2/p/9851449.html
Copyright © 2011-2022 走看看