首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js横竖屏切换事件

在JavaScript中,监听横竖屏切换主要依赖于window对象的orientationchange事件或者resize事件。

一、基础概念

  1. orientationchange事件
    • 当设备的屏幕方向(横屏或竖屏)发生改变时触发。
    • 可以通过window.orientation属性获取当前屏幕的方向值(例如,在大多数浏览器中,0表示竖屏,90或 - 90表示横屏)。
  • resize事件
    • 当浏览器窗口的大小发生改变时触发。在横竖屏切换时,窗口大小通常也会发生变化,所以也可以用来检测横竖屏切换。

二、优势

  1. 用户体验优化
    • 可以根据屏幕方向调整页面布局。例如,在移动设备上,横屏时可能更适合展示宽屏的视频或者多栏布局,竖屏时适合单栏的信息流布局。
    • 对于一些基于传感器交互的应用(如游戏),能够根据屏幕方向调整操作逻辑。

三、类型(这里主要是从事件触发机制角度)

  1. 基于orientationchange事件
    • 这种方式直接针对屏幕方向的变化进行监听,相对比较直观。
  • 基于resize事件
    • 不仅仅能检测横竖屏切换,还能检测到其他窗口大小改变的情况,比如用户手动调整浏览器窗口大小。但是可能会存在一些误判,因为其他因素也可能导致窗口大小改变。

四、应用场景

  1. 响应式网页设计
    • 像新闻类网站,在竖屏时以单栏布局显示文章内容,在横屏时可以切换为双栏布局,一栏显示文章内容,一栏显示相关图片或者广告。
  • 移动应用开发(使用WebView时)
    • 如果是将网页嵌入到移动应用中的WebView组件,通过监听横竖屏切换事件,可以对页面布局进行调整以适应不同的屏幕方向。

五、可能遇到的问题及解决方法

  1. 兼容性问题
    • 部分旧版本的浏览器可能不完全支持orientationchange事件或者对window.orientation属性的支持存在差异。
    • 解决方法:可以使用特性检测来判断浏览器是否支持相关功能。如果不支持,可以使用resize事件结合屏幕宽高比的判断来模拟横竖屏切换检测。
    • 示例代码:
    • 示例代码:
  • 布局调整的闪烁问题
    • 在横竖屏切换时,如果布局调整不及时或者计算不准确,可能会出现页面元素闪烁或者布局错乱的情况。
    • 解决方法:可以提前缓存一些布局相关的参数,在横竖屏切换事件触发时,尽量快速准确地应用新的布局样式。并且可以使用CSS的过渡效果来平滑布局的改变。例如,在切换布局时,先将元素隐藏,调整好布局后再显示。
    • 示例代码:
    • 示例代码:
    • 示例代码:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

TRTC横竖屏切换

一、简介 本篇主要介绍TRTC通话时,横竖屏切换接口的调用示例、通话效果。 音视频通话完整链路,大致是:本地采集、本地预览、编码输出、网络传输、接收解码渲染。...用户要的只是4种效果:自己横竖屏切换+对方看到的横竖屏切换,但是sdk却有4X4X4=64种实现方式,一旦遇到问题就很费解。以下将引导:用最简单的方式,体验sdk的横竖屏切换功能。...还有一些手机,平放在桌面时,会发生横竖屏切换,这是手机重力感应触发的,请把手机支起来吧,或者关闭手机的重力感应。...关于sdk重力感应功能,可以参考这篇《TRTC横竖屏切换2,重力感应》 3、横屏后画面裁剪问题 横屏后画面只显示中间一小部分,看上去放大了。...setRemoteViewFillMode 另外,您也可以同步调整view的横竖屏比例。 链接 《TRTC横竖屏切换2,重力感应》

3.3K135

iOS横竖屏切换

横竖屏切换实例 竖屏界面如何present横屏界面 竖屏present横屏是很普遍的场景,比如说视频播放场景的全屏切换,就可以在当前竖屏的界面present一个横屏播放界面的方式,实现横竖屏切换。...横屏竖切换机制分析 前面的实例介绍了如何支持切换,但是也产生一些疑问: 工程配置文件也没有设置横屏,为什么后面就能支持横屏?...工程配置、AppDelegate、UIViewController这三者,在横竖屏切换过程的关系是什么? 自动旋转和手动旋转有什么区别? .......仅仅知道切换适配代码,是无法形成横竖屏切换理解,也就很难回答上述的问题。 由于没有找到解释横竖屏切换机制的官方文档,以下根据自己的经验对这个切换的机制进行分析。...Window:由于App的适配是UIWindow为单位,那么理论上是可以新建一个UIWindow来横屏的界面; 横竖屏切换通知 NSNotification通知 [[NSNotificationCenter

2.7K20
  • apicloud APP横竖屏切换

    APP开发中会遇到例如视频全屏播放如果不是使用原生模块,则需要通过将屏幕切换为横屏显示才能实现全屏。或者某些APP用户在使用pad体验时提供横竖屏切换体验会更好。...这个时候就需要使用到setScreenOrientation来实现横竖屏切换。...//屏幕根据重力感应在横竖屏间自动切换 (需要自动切换横竖屏可以用该值) auto_portrait //屏幕根据重力感应在竖屏间自动切换 auto_landscape...//屏幕根据重力感应在横屏间自动切换 例子: api.setScreenOrientation({ orientation: 'landscape_left'}); 例如设置了横竖屏自动切换同时页面中应用了...可以通过orientationchange实现监听横竖屏切换事件 window.addEventListener("orientationchange", function(){ });

    1.3K20

    android横竖屏切换问题

    一、禁止横竖屏转换 Android横竖屏切换在手机开发中比较常见,很多软件在开发过程中为了避免横竖屏切换时引发不必要的麻烦,通常禁止掉横竖屏的切换, 通过在AndroidManifest.xml中设置activity...二、横竖屏切换 如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局。... } 三、通过onConfigurationChanged拦截横竖屏变换 按照二的操作,Activity每次横竖屏切换都会重新调用onPause-> onStop-> onDestory-> onCreate...函数了,而是会去调用onConfigurationChanged()这样就能控制横竖屏的切换了。...只能捕获竖屏变横屏的事件 不能捕获横屏变竖屏 目标3:捕获横竖屏切换的事件 步骤:在Activity中(ActivityName.java)重写onConfigurationChanged事件 @Override

    2.6K20

    TRTC横竖屏切换1,手动切换

    一、简介 本篇主要介绍TRTC通话时,横竖屏切换接口的调用示例、通话效果。 音视频通话完整链路,大致是:本地采集、本地预览、编码输出、网络传输、接收解码渲染。...用户要的只是4种效果:自己横竖屏切换+对方看到的横竖屏切换,但是sdk却有4X4X4=64种实现方式,一旦遇到问题就很费解。以下将引导:用最简单的方式,体验sdk的横竖屏切换功能。...还有一些手机,平放在桌面时,会发生横竖屏切换,这是手机重力感应触发的,请把手机支起来吧,或者关闭手机的重力感应。...关于sdk重力感应功能,可以参考这篇《TRTC横竖屏切换2,重力感应》 3、横屏后画面裁剪问题 横屏后画面只显示中间一小部分,看上去放大了。...setRemoteViewFillMode 另外,您也可以同步调整view的横竖屏比例。 五、下一篇 《TRTC横竖屏切换2,重力感应》

    2.2K30

    TRTC横竖屏切换1,手动切换

    一、简介 本篇主要介绍TRTC通话时,横竖屏切换接口的调用示例、通话效果。 音视频通话完整链路,大致是:本地采集、本地预览、编码输出、网络传输、接收解码渲染。...用户要的只是4种效果:自己横竖屏切换+对方看到的横竖屏切换,但是sdk却有4X4X4=64种实现方式,一旦遇到问题就很费解。以下将引导:用最简单的方式,体验sdk的横竖屏切换功能。...还有一些手机,平放在桌面时,会发生横竖屏切换,这是手机重力感应触发的,请把手机支起来吧,或者关闭手机的重力感应。...关于sdk重力感应功能,可以参考这篇《TRTC横竖屏切换2,重力感应》 3、横屏后画面裁剪问题 横屏后画面只显示中间一小部分,看上去放大了。...setRemoteViewFillMode 另外,您也可以同步调整view的横竖屏比例。 五、下一篇 《TRTC横竖屏切换2,重力感应》

    2K30

    iOS 知识小集(横竖屏切换)

    iOS 中横竖屏切换的功能,在开发iOS app中总能遇到。以前看过几次,感觉简单,但是没有敲过代码实现,最近又碰到了,demo尝试了几种情况,这里就做下总结。 注意 ?...一般情形 所有界面都支持横竖屏切换 如果App的所有切面都要支持横竖屏的切换,那只需要勾选【General】 中的【Device Orientation】,选择希望支持的方向即可。 ?...- (BOOL)prefersStatusBarHidden { return NO; } 特殊情形 个别界面固定方向,其他所有界面都支持横竖屏切换 这种情况,在【General】-->【Device...另一种方式,是借助通知来控制界面的横竖屏切换。 还是整个App中大部分界面都是竖屏,某个界面可以横竖屏切换的情况。...这里有一个用JS 和原生item 控制横竖屏切换的Demo。地址 这是效果图: ? 横竖屏切换.gif 横竖屏切换总结就到这来了,Have Fun!

    4.2K41

    TRTC横竖屏切换2,重力感应

    一,简介 如前篇文章《TRTC横竖屏切换1,手动切换》介绍,TRTCSDK提供了三个api,支持手动调整横竖屏切换,组合起来有4X4X4=64种变化,满足所有横竖屏切换需求。...实际开发过程中,手动调用起来,往往还是很麻烦,所以sdk提供了自动横竖屏切换的接口,重力感应开关:setGSensorMode。...手机旋转180° 左不动,右边手机逆时针旋转180°,home键朝上 7、关闭重力感应,手机旋转270° 左不动,右边手机逆时针旋转270°,home键朝左 四、总结 非特殊需求,您不需要关注通话横竖屏切换...,交给sdk重力感应自动切换即可。...当您是安卓智能设备,采集画面有角度,或者有特殊横屏需求,可以关闭重力感应,换成全手动调用。参考前篇《TRTC横竖屏切换1,手动切换》

    1.2K20

    Activity横竖屏切换的那些事

    由设备的物理方向传感器决定,如果用户旋转设备,这屏幕就会横竖屏切换 nosensor 忽略物理方向传感器,这样就不会随着用户旋转设备而横竖屏切换了(”unspecified”设置除外) user 用户当前首选的方向...reverseLandscape API 9 以上,反向横屏 reversePortrait API 9 以上,反向竖屏 sensorLandscape API 9 以上,横屏,但是可以根据 物理方向传感器来切换正反向横屏...sensorPortrait API 9 以上,竖屏,但是可以根据 物理方向传感器来切换正反向竖屏 fullSensor API 9 以上,上下左右四个方向,由物理方向传感器决定 locked API... 这样横竖屏切换的时候不会重新创建...利用系统的加载机制自动帮我们加载相应的布局 如果大家在资源目录res 中添加了 layout-land(横向布局文件夹) 和 layout-port (竖想布局文件夹),重启Activity模式的横竖屏切换

    2.2K20

    TRTC横竖屏切换2,重力感应

    一,简介 如前篇文章《TRTC横竖屏切换1,手动切换》介绍,TRTCSDK提供了三个api,支持手动调整横竖屏切换,组合起来有4X4X4=64种变化,满足所有横竖屏切换需求。...实际开发过程中,手动调用起来,往往还是很麻烦,所以sdk提供了自动横竖屏切换的接口,重力感应开关:setGSensorMode。...手机旋转180° 左不动,右边手机逆时针旋转180°,home键朝上 7、关闭重力感应,手机旋转270° 左不动,右边手机逆时针旋转270°,home键朝左 四、总结 非特殊需求,您不需要关注通话横竖屏切换...,交给sdk重力感应自动切换即可。...当您是安卓智能设备,采集画面有角度,或者有特殊横屏需求,可以关闭重力感应,换成全手动调用。参考前篇《TRTC横竖屏切换1,手动切换》

    1.4K50

    TRTC横竖屏切换2,重力感应

    一,简介 如前篇文章《TRTC横竖屏切换》介绍,TRTCSDK提供了三个api,支持手动调整横竖屏切换,组合起来有4X4X4=64种变化,满足所有横竖屏切换需求。...实际开发过程中,手动调用起来,往往还是很麻烦,所以sdk提供了自动横竖屏切换的接口,重力感应开关:setGSensorMode。...png 7、关闭重力感应,手机旋转270° 左不动,右边手机逆时针旋转270°,home键朝左 Screenshot_2020-09-22-20-02-17.png 四、总结 非特殊需求,您不需要关注通话横竖屏切换...,交给sdk重力感应自动切换即可。...当您是安卓智能设备,采集画面有角度,或者有特殊横屏需求,可以关闭重力感应,换成全手动调用。参考前篇《TRTC横竖屏切换》 链接: 《TRTC横竖屏切换》

    2.1K115

    android横竖屏切换activity生命周期变化

    1、新建一个Activity,并把各个生命周期打印出来 2、运行Activity,得到如下信息 onCreate--> onStart--> onResume--> 3、按crtl+f12切换成横屏时...onStop--> onDestroy--> onCreate--> onStart--> onRestoreInstanceState--> onResume--> 4、再按crtl+f12切换成竖屏时...,切横屏时会执行一次,切竖屏时会执行两次 2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次...3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged...方法 总结一下整个Activity的生命周期 补充一点,当前Activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变 Activity运行时按下

    1.3K80

    解决横竖屏切换导致自定义View切换Fragment失败

    问题:   自定义的BottomSelectView,在切换横竖屏后,底部选择器点击后Fragment不切换,失去效果。...manifest中设置该Activity的configChanges为 android:configChanges="screenSize|keyboardHidden|orientation", 这样当横竖屏切换时..."时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法 横竖屏知识: // 设置横屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE...= 1; 竖屏 *系统中定义: int ORIENTATION_LANDSCAPE = 2; 横屏 */ //获取屏幕的方向 ,数值1表示竖屏,数值2表示横屏 int screenNum...= getResources().getConfiguration().orientation; //横竖屏切换的生命周期 onPause() onSaveInstanceState(Bundle outState

    1.3K40
    领券