H5横屏,移动端缓存_h5 横向-程序员宅基地

技术标签: web前端  更新  H5  

一.H5横屏布局

 

最近接到一个 H5 的活,乍一看挺简单的,做起来就不是那么回事了。

接下来说说我的踩坑之路。

1、页面里面要求有一条会自动延长的不规则曲线,就如这样。

 

开始我一听甲方说要这种效果,我是不敢接这个活的。大家应该都知道,这条曲线如果用 canvas 或者 svg 画出来,不得一年也得半载,这是会出人命的!好在我问了下我们之前公司的 UI 小姐姐,她就回了我一句话: ease!画个 gif 图就好了!
于是乎以为这个最难的问题都解决了,剩下的都好说了。。。哈哈哈

 

2、甲方给出的UI图是横向的,没明确要求打开页面就是横屏播放。

        之前确实没有做过横屏的移动端网页,想当然的以为打开页面时,把手机横过来,页面也就自动横过来了。所以我就那么做了。结局是在交给甲方后,甲方明确要求打开页面就是横屏播放。那我能怎么样啊,钱在人家手里攥着,我只能改了!

 

    竖屏页面改横屏页面的开始

        第一个念头就是 transform: rotate(90deg) ,嗯,页面是横过来了。当时用的 rem 布局,按理说横过来之后,应该是占满全屏的,可结果并不是这样,无论我把高调成100%,还是宽调成100%,都占不满全屏。只能去google了。发现 transform: rotate(90deg)不是这么直接写进去的。而是这样:

        


css文件:
//需要用到媒体查询
// screen 彩屏设备
// orientation:portrait 竖屏(竖屏设置上让其横屏播放)
@media screen and (orientation: portrait) {
    #box {
        -webkit-transform:rotate(90deg);
        -moz-transform: rotate(90deg);
        -ms-transform: rotate(90deg);
        transform: rotate(90deg);
    }
}

js文件:
<script>
    //获取屏幕可视区宽高
    var width = document.documentElement.clientWidth;
    var height =  document.documentElement.clientHeight;
    //对宽高进行判断
    if( width < height ){
        $box =  $('#box');
        //把设备可视区的宽和高赋值给 box 的高和宽。
        //这样就实现旋转过来的 box 的宽高跟屏幕的可视区大小一样了
        $box.width(height);
        $box.height(width);
        //执行到这一步时,页面旋转过来成横向的了,宽高也跟屏幕的可视区大小一样了
        //但是,发现页面并没有100%在可视区范围内,如下图
        //所以需要对 box 进行定位,然后就 ok 了
        $box.css('top',  (height-width)/2 );
        $box.css('left',  0-(height-width)/2 );
    }
</script>

     

 

页面是横过来了,意味着原来的 rem 布局就全乱了。当时情况紧急,一看 rem 用不上了,立马用 百分比布局 进行修改,当时的 css 中一堆乱码,放眼望去,rem 和 % 就那么混在其中。就这么整到了凌晨 5 点。我也想认真画页面啊,可是时间不等我,只能先这样了。

 

3,ios 端背景音乐不能自动播放加自动循环播放。

iPhone自动播放音视频,可以通过以下代码解决,但必须在微信Weixin JSAPI的WeixinJSBridgeReady才能生效,可能是微信接口对此做了某些限制。

      ios 端背景音乐不能自动播放

 

    var oA = document.getElementsByTagName('audio')[0];

     function audioAutoPlay(){ 

             oA.play(); //必须加上微信Weixin JSAPI的WeixinJSBridgeReady才能生效                                            document.addEventListener("WeixinJSBridgeReady",function(){ 

                         oA.play(); 

                },false); } 

     audioAutoPlay()

     ios 端背景音乐不能自动循环播放

    

    //在标签中加入 `loop` 对 ios 无效,只能通过以下的事件监听进行弥补 

      var oA = document.getElementsByTagName('audio')[0]; 

      function init(){ 

             oA.addEventListener('ended',loopAudio,false); 

        }

      function loopAudio(){ 

             oA.play(); 

       }

 

二,清除移动端浏览页面后的缓存。

 

        最后这个问题,也算是个大问题了。前提:我并没有在 js 中写入任何的本地存储。

        最后一次增加了一张图片,结果上传至服务器的时候把图片名字给写错一个字母,导致图片加载不出来。后来把路径更改之后,再次用之前打开过该页面的手机浏览时,发现图片依旧没有加载出来,然而电脑就可以。各种找原因啊,这是为啥呢?

        当时我想可能是缓存的问题吧,就把手机重启了,结果还是加载不出来。后来换个手机,一切正常。然后我手动清理手机缓存之后,一切正常了。

        后来在网上查阅大量资料,发现是微信搞的鬼。因为移动端从头到尾是用微信浏览的网站,找到以下解决办法:

 

  • 用户在用微信打开的网页中,点击右上角的三个点,然后点击里面的刷新就好了。这种方法显然是不可行的。
  • 在URL后面拼接随机字串或时间戳,但是有人说 url 后面加随机数 CDN 会失效,加版本号更合理。
  • 用PHP写HTML文本,用php以在js css 图片后面加个随机数来解决

1.jpg?rand=<?php echo rand(1000,50000); ?> 
  • 浏览器貌似是从webview的上层做的缓存。就是如果请求过了这个地址。就会存在本地。之后不取线上了。试试写头信息
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> 
<meta http-equiv="Pragma" content="no-cache" /> 
<meta http-equiv="Expires" content="0" />

以上这些方法,我一个也没试过,因为这只是我接的一个外快而且工期特别紧(外加阑尾炎),前后也就五天就上线了,不具备测试条件。如读者遇到这种问题,还请挨个试一下看看,总有一款适合你。

 






 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jsnancy/article/details/80079854

智能推荐

USB TypeC接口和USB PD快充协议,有何区别?_pd controler能否区分usb的类型-程序员宅基地

文章浏览阅读1.1w次,点赞9次,收藏31次。很多人一下子搞不清楚,怎么USB即是TypeC又是USB PD呢?首先USB标准有几个版本的,比如USB2.0->USB3.0->USB3.1->USB 4.0,通常提到这个,说的是通信速度变快了。那USB TypeC又是什么呢?它主要是指接口,它出现之前,USB接口是多样的,比如:USB Type B:从USB 2.0开始定义,只有4个针脚,常用于打印机、显示器等的连接。Mini USB:分为A型,B型和AB型,从USB1.1/USB2.0开始就有定义,._pd controler能否区分usb的类型

qq协议 0825 和 0836 udp 登录包解析_抓包qq登录版本-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏9次。qq协议 0825 和 0836 udp 登录包解析参考使用工具:概念解释udp报文解析0825 udp 发送包报文原始数据:解析0825 返回包原始数据解析0836 发送包原始数据解析参考0825包参考: https://www.cnblogs.com/mRRRR/p/5288931.html虽然是2016年的, 但是里面的结构大体还是不变参考: https://github.com/fa-ge/PCQQ-ProtocolPCQQ协议的实现, 这里面基本都写清楚了, 但是能不能用我还没试过, 最_抓包qq登录版本

JavaScript中的(内置)方式来检查字符串是否为有效数字_js 判断是的有效数字-程序员宅基地

文章浏览阅读1.2k次。我希望在与旧的VB6 IsNumeric()函数相同的概念空间中有东西吗? _js 判断是的有效数字

PHP5.4NTS MYSQL_windows安装Apache2.4.3(mod_fcgi)+PHP5.4.10+Mysql5.5.29-程序员宅基地

文章浏览阅读129次。最近有朋友问我,根据我的以前的一个教程,用php5apache2_4.dll来运行php的http://www.myxzy.com/post-333.html,但是现在apachelounge官网没有php5apache2_4.dll文件下载了,只有一个mod_fcgid了,php的包里面也没有php5apache2_4.dll这个文件。所以就写了这个教程。这个教程是在windows下用Apach..._windows 安装apahce2.4安装mod_fcgid.so

三分钟教你如何用Github找开源项目--值得一看!_github 网站 下载课题相关的开源代码程序。-程序员宅基地

文章浏览阅读10w+次。Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。# 按照项目名/仓库名搜索(大小写不敏感)in:name xxx # 按照README搜索(大小写不敏感)in:readme xxx# 按照description..._github 网站 下载课题相关的开源代码程序。

MAC地址表、端口安全、MAC地址偏移-程序员宅基地

文章浏览阅读1.4k次,点赞7次,收藏6次。文章目录MAC地址1.组成2.分类3.常见MAC地址4.MAC地址表MAC地址表分类2.端口安全安全MAC地址分类端口安全保护动作配置端口安全经常使用的场景MAC地址偏移出现场景如何避免MAC地址漂移检测MAC地址MAC(Media Access Control Address)地址:网络中每台设备都有一个唯一的网络标识。1.组成MAC地址为48位(6字节)前24bit是通过向IETF等机构申请用来表示厂商的代码,后24bit是厂商分配给产品的唯一数值。2.分类物理MAC地址:MAC地址的_mac地址偏移

随便推点

信号量~~_sem_t-程序员宅基地

文章浏览阅读672次。信号量本质是一个计数器~用来描述临界资源的有效个数~POSIX和systeam V信号量都用于同步工作,达到无冲突的访问共享资源。但是POSIX可以用于线程同步~使用信号量首先就要创建一个sem_t类型的变量#include //头文件sem_t sem1;_sem_t

如何用python爬取e-hentai的图片-程序员宅基地

文章浏览阅读5.3w次,点赞6次,收藏26次。前言本来这是个正经的图片爬取教程,但是考虑到正经的教程一向是不会有人看的,所以干脆满足一下各位老绅士的心理,改成了E站的爬图教学。事先声明,本博客本质上还是个爬虫教学,所以不会提供任何ehentai访问方式和黄涩链接(代码本身也无法自动翻墙访问ehentai)。由于E站访问的问题,爬虫的效率具体也和网络稳定率有关,所以失败并不一定是代码有问题。博主并不常访问E站(不要说了,真的全是因为你们喜欢),所以对相关的页面并不是十分了解,如果有些页面反复使用该爬虫仍无法运行,那就可能是触及到了博主的知识盲区。(_e-hentai

flutter屏幕适配-程序员宅基地

文章浏览阅读240次。现在的手机品牌和型号越来越多,导致我们平时写布局的时候会在个不同的移动设备上显示的效果不同,比如我们的设计稿一个View的大小是300px,如果直接写300px,可能在当前设备显示正常,但到了其他设备可能就会偏小或者偏大,这就需要我们对屏幕进行适配。安卓原生的话有自己的适配规则,可以根据不同的尺寸建立不同的文件夹,系统会根据当前的设备尺寸取对应的大小的布局。而flutter本身并..._flutter_screenutil适配宽度和高度

课程设计--计算机钢琴_计算机钢琴程序编写程序,程序运行时使 pc 机成为一架可弹奏的钢琴,当按下数字-程序员宅基地

文章浏览阅读2.7k次。计算机钢琴_计算机钢琴程序编写程序,程序运行时使 pc 机成为一架可弹奏的钢琴,当按下数字

用python动手学统计学_3-1使用python进行描述统计:单变量_num is deprecated and will be removed in python 3.-程序员宅基地

文章浏览阅读478次。基于python 3.9,使用pycharm community实现,本人水平非常菜,想要开始学习知识。内容基于这本书和一些网上资料如菜鸟网站等进行补充数学公式使用mathtype3-1使用python进行描述统计:单变量3-1-1统计分析与scipyimport scipy as sp3-1-2单变量的操作只有一种类型的数据import scipy as spimport numpy as npfish_data = np.array([2,3,3,4,4,4,4,5,5,6_num is deprecated and will be removed in python 3.14; use ast.constant 怎么

JS之前台参数提交到后台,双引号转义为"解决办法-程序员宅基地

文章浏览阅读1.5k次。问题描述var param = $("#searchForm").serializeJson();前台封装好了键值对形式的字符串,使用了EasyUI的treeGrid控件,传到后台后,双引号转义为&quot;解决办法apache工具包common-lang中有一个很有用的处理字符串的工具类,其中之一就是StringEscapeUtils,利用此工具类进行解决问题...

推荐文章

热门文章

相关标签