有个需求是要层叠两张图,就像你现在看到的:整个浏览器和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. java定时器学习

    一.这个是利用jdk自带的Thread类的sleep方法实现定时执行任务. package tasker; import java.util.Date; public class tasker01 e ...

  2. 原来css可以直接覆盖内联style

    今天阅读博文新手如何在gdb中存活时,发现行距太小,阅读起来不舒服. 查看了一下html代码,发现是博文内容中的内联style(line-height: normal)覆盖了博客模板的css引起的. ...

  3. PL/SQL编程基础(二):变量的声明、赋值、(赋值、连接、关系、逻辑)运算符

    变量的声明.赋值.运算符 1.声明并使用变量 变量可以在声明时赋值,也可以先定义后赋值: 使用%TYPE与%ROWTYPE可以根据已有类型定义变量. PL/SQL是一种强类型的编程语言,所有的变量都必 ...

  4. Bean Life Cycle

    Bean生命周期 Spring Bean Life Cycle https://www.tutorialspoint.com/spring/spring_bean_life_cycle.htm The ...

  5. python设置redis过期时间

    import time import redis if __name__ == "__main__": try: conn=redis.StrictRedis(host='192. ...

  6. Python开发【Django】:时间处理

    时间格式化 做博客后台时,需要经常对数据库里面的时间格式(2017-02-17 02:10:44.308638)进行处理,格式化成自己想要的时间(列如年月日),下面就来记录下如何对时间进行处理 1.时 ...

  7. 小米范工具系列之四:小米范HTTP批量发包器

    最新版本1.3,下载地址:http://pan.baidu.com/s/1c1NDSVe  文件名httpsender . 此工具使用java 1.8以上版本运行. 小米范HTTP批量发包器的主要功能 ...

  8. 从零开始写JavaWeb框架(第一章节)

    买了本<从零开始写JavaWeb框架> 因为是第一次用IDEA,期间遇到很多问题,比如:怎么在IDEA中配置tomcat: 在IDEA界面的右上角点击: 点击+,选择Maven 到了如下界 ...

  9. 002-Spring Framework-Core-01-IoC容器

    一.概述 文章地址:https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/ 核心主要包括:IoC co ...

  10. Java Thread 如何处理未捕获的异常?

    Java Thread是不允许异常抛出到本线程之外的,Runnable接口的public abstract void run()是不允许throws Exception的,这在编译时就通不过. 线程异 ...