移动端兼容小计

1、页面布局:

由于手机型号多样导致页面高宽比非常多,在制作上会有出现不同手机在同一套css下面显示效果不尽如人意,所以需要进行兼容性处理。

方式很多比如直接套用类似bootstrap类的框架,可以使用rem等相对单位。这里我主要使用的是媒体查询和vw和vh单位和百分比来进行处理。

100vw为整个屏幕的宽度,100vh为屏幕高度,其实和百分比的做法很相似,只不过把计算的值单位换成vw或者vh。

2、碰到的兼容问题,主要是ios:

a、ios: optgroup使用会出现select的选择文本靠左无法修改,同时在optgroup上的class等选择器无法进行样式修改,最好不用

b、ios:overflow:scroll 的盒子滑动不畅,在css添加 -webkit-overflow-scrolling: touch;  详情可以看这个链接了解:https://www.cnblogs.com/xiahj/p/8036419.html

c、当你点击ios的可点击元素时会出现一个半透明的背景,可以设置-webkit-tap-highlight-color: rgba(0, 0, 0, 0);来去除。

d、a,button等可点击标签最好加上cursor:pointer;属性,ios可能无法点击。

e、不要写es6的语法,低版本的手机无法编译,会报错

f、canvas画图:使用的是html2canvas,做了一个将几个页面元素合并利用canvas画成一张图片长按保存图片的效果,本地图片可以正常画图。

由于ios的安全问题,线上正常的图片地址是没有办法画图成功的,尝试过把线上的图片链接通过canvas.toDataURL(‘图片类型‘)在本地先转成base64链接在进行画图,但是ios由于安全问题无法使用toDataURL方法,所以失败了。

最后是让后端人员先把图片地址转成base64再返回给前端,这样是可以画图成功的。另外如果是背景图的话会模糊,所以请使用<img>。

可参考文章:https://www.jianshu.com/p/22bd5b98e38a

使用方式:

html:
    <p class="share-notice" data-html2canvas-ignore>长按保存图片,邀请好友来点赞</p> //data-html2canvas-ignore 如果有某个元素是你希望不被绘图的那么加上这个属性就好了
js:
    <script type="text/javascript"     src="/v2/js/base/html2canvas.min.js"></script>
    html2canvas(document.getElementById(‘share-page‘), { //要绘制canvas的选择器
        allowTaint: true, //
        backgroundColor: null //在生成canvas时底部多了一条线 这个设置成null解决了
    }).then(function(canvas) {
        var url = canvas.toDataURL()
        $(‘.canvas-img‘).attr(‘src‘, url)
    })

g、摇一摇,声音播放:

3、调试使用:vconsole cdn:https://www.bootcdn.cn/vConsole/

在页面引入:<script src="https://cdn.bootcss.com/vConsole/3.3.0/vconsole.min.js"></script>

在使用的页面:var vConsole = new VConsole();

这样就可以在手机上看到调试信息了

原文地址:https://www.cnblogs.com/muzs/p/10899034.html

时间: 2024-10-03 07:07:45

移动端兼容小计的相关文章

traits技法小计

在学习算法导论的时候,对于各数据结构,自然是实现一个才算掌握,工具当然是template编程,但是自己的demo经常存在很多问题,比如没有给出迭代器啊,操作符重载不够啊等等设计上的问题,而某些问题实际上是从设计之初就该考虑的大框架,而非小细节.对于C++而言,STL无疑是最佳的参考资料,侯捷先生的STL源码剖析一书给我们良好的示范,而直接从第四章开始看会云里雾里,无法得其精髓,因此在学习算法之余决定尾随侯捷先生脚步,学习STL traits技法,从而可以从STL中学到更多的数据结构实现. 收获自

设计模式小计——23种设计模式3

责任链模式Chain of Responsibility 使多个对象都有机会处理请求,从而避免请求的发送者和接受者间的耦合关系,并沿着这条链传递请求,直到有对象处理它为止 责任链模式关键是建立链接关系,在链中决定谁来处理请求 //抽象处理者 public abstract class Handle{ private Handle nextHandle;//链的下一个节点 public final Response handleMessage(Request request){ Response

【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)--转

前言 javascript事件基础 事件捕获/冒泡 事件对象 事件模拟 移动端响应速度 PC与移动端鼠标事件差异 touch与click响应速度问题 结论 zepto事件机制 注册/注销事件 zepto模拟tap事件 tap事件的问题一览 点透问题 fastclick思想提升点击响应 实现原理 鬼点击 ios与android鼠标事件差异 事件捕获解决鬼点击 结语 前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜

汽车仪表是如何计算总计里程和小计里程的?

现在汽车仪表大部分的总计里程和小计里程都是显示在屏幕上的,这包括段码屏.点阵屏.TFT彩屏等,虽然显示形式不一样,但是从业务需求和软件应用层的实现策略来讲,原理应该都是通用的.本文不涉及具体车型,仅对一般的业务逻辑作介绍,一是为了自己总结记录,二是期望吸引同行或爱好者交流. 1.总计里程 ODO(Total Odometer )即总计里程,顾名思义,主要作用是记录汽车总的行驶里程,一般来讲,在用户使用过程中是无法对其修改或清零的,因为它是对二手汽车价值评估的一项重要数值,当然随意篡改这一数据也是

设计模式小计——23种设计模式1

单例模式Singleton Pattern 确保类只有一个实例,而且自行实例化并向整个系统提供这个实例 public class Singleton{ private static final Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getSingleton(){ return singleton; } } 节省内存开支,减少性能开销,应用启动产生单例对象,永久驻留内

设计模式小计——23种设计模式2

模板方法模式Template Method Pattern 定义一个操作的算法的框架,是的子类可以不改变算法结构即可重定义该算法一些特定步骤 public abstract class AbstractClass{//抽象模板类 protected abstract void method1();//算法步骤1 protected abstract void method2();//算法步骤2 public void templateMethod(){//模板方法,定义算法结构 this.met

Sql使用WITH ROLLUP 进行分类汇总及小计功能

效果如下: 测试代码如下: CREATE TABLE #test    (      Name VARCHAR(10) ,      [procedure] CHAR(1) ,      model VARCHAR(5) ,      quantity INT    ); INSERT  INTO #test        SELECT  'A' ,                '1' ,                'φ50' ,                500        UNI

RandomStrngUtils工具类小计

//产生5位长度的随机字符串,中文环境下是乱码 RandomStringUtils.random(5); //使用指定的字符生成5位长度的随机字符串 RandomStringUtils.random(5, new char[]{'a','b','c','d','e','f', '1', '2', '3'}); //生成指定长度的字母和数字的随机组合字符串 RandomStringUtils.randomAlphanumeric(5); //生成随机数字字符串 RandomStringUtils.

c++11小计

[capture] (parameters) mutable -> return-type { statement } " (parameters)" 和 "-> return-type"在不需要的情况下可省略. mutable:mutable修饰符.默认情况下,lambda函数总是一个const函数,mutable可以取消常量性.在使用该修饰符时,参数列表不可省略(即使为空). 在使用lambda函数的时候,如果需要捕捉的值成为lambda函数的常量,