博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微通道横屏的问题
阅读量:5982 次
发布时间:2019-06-20

本文共 3219 字,大约阅读时间需要 10 分钟。

移动端html开展。我们经常用来推断横竖屏做一些事情。例如,在播放视频时,切经常使用横竖屏切换到中心和全屏显示,假设你无数次的尝试都失败了,请参阅最后,哦,有惊喜。!

一般来说,横竖屏的检測方式有下面几种:

一、使用浏览器自带的事件

使用浏览器自带事件orientationchange和浏览器对象window.orientation能够完美进行横竖屏幕切换。依据參考资料一,此事件在有些浏览器中使用绑定在body元素上的属性来实现,仅仅有在页面发生css重排后才会被触发。解决此问题的方法是在body上添加一个css类。用来触发css的重排,详细css代码例如以下:

.portrait body div { width: 10%; }.landscape body div { width: 15%; }

调用事件代码例如以下:

var updateOrientation = function() {
var orientation = window.orientation; switch(orientation) { case 90: case -90: orientation = 'landscape'; break; default: orientation = 'portrait'; } // set the class on the HTML element (i.e. ) document.body.parentNode.setAttribute('class', orientation); }; // event triggered every 90 degrees of rotation window.addEventListener('orientationchange', updateOrientation, false);

2、使用媒体查询(media query)

媒体查询里面中有横竖屏幕的检測。orientation: portrait(竖)/landscape(横),媒体查询该属性的生效系统版本号为:iOS 3.2+, Android 2.0+和一些其它浏览器。

详细代码例如以下:

@media all and (orientation: portrait) {  body div { width: 10%; }}@media all and (orientation: landscape) {  body div { width: 15%; }}

3、使用定时器。定期检測当前页面的长宽

此种方法通过定时检測当前页面的长宽。通过对照长宽,对其进行推断,依据推断结果模拟页面的横竖屏。此方法性能堪忧。主要用于以上1,2均不支持的浏览器或者手机。废话少说。上代码。

var updateOrientation = function() {
// landscape when width is biggest, otherwise portrait var orientation = (window.innerWidth > window.innerHeight) ? 'landscape': 'portrait'; // set the class on the HTML element (i.e. ) document.body.parentNode.setAttribute('class', orientation); }; // initialize the orientation updateOrientation(); // update every 5 seconds setInterval(updateOrientation, 5000);

4、横屏终结版

综上。产生了横屏终结版。

代码例如以下:

(function(){
var supportsOrientation = (typeof window.orientation == 'number' && typeof window.onorientationchange == 'object'); var HTMLNode = document.body.parentNode; var updateOrientation = function() {
// rewrite the function depending on what's supported if(supportsOrientation) { updateOrientation = function() {
var orientation = window.orientation; switch(orientation) { case 90: case -90: orientation = 'landscape'; break; default: orientation = 'portrait'; } // set the class on the HTML element (i.e. ) HTMLNode.setAttribute('class', orientation); } } else { updateOrientation = function() {
// landscape when width is biggest, otherwise portrait var orientation = (window.innerWidth > window.innerHeight) ?

'landscape': 'portrait'; // set the class on the HTML element (i.e. ) HTMLNode.setAttribute('class', orientation); } } updateOrientation(); } var init = function() {

// initialize the orientation updateOrientation(); if(supportsOrientation) { window.addEventListener('orientationchange', updateOrientation, false); } else { // fallback: update every 5 seconds setInterval(updateOrientation, 5000); } } window.addEventListener('DOMContentLoaded', init, false); })();

温馨提示: 1、假设移动端全部浏览器都失效,请检查手机屏幕旋转是否开启;2、假设仅仅有微信旋转失效。而在浏览器中打开正常,请打开微信的【开启横屏模式】;3、假设以上两条都无法解决。请检查人品。

5、參考资料

很多其它内容请查看

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
通过IP判断登录地址
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
我的友情链接
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
基本安装lnmp环境
查看>>
logstash消费阿里云kafka消息
查看>>
Oracle——条件控制语句
查看>>
day-6 and day-7:面向对象
查看>>
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
webgl像机世界
查看>>
php正则怎么使用(最全最细致)
查看>>
javascript数学运算符
查看>>
LC.155. Min Stack(非优化,两个stack 同步 + -)
查看>>
交互设计[3]--点石成金
查看>>
SCCM TP4部署Office2013
查看>>