送你一个封装的移动端横屏展示的JS库

简介: 我们经常在移动端横屏展示一些东西,所以今天我们来介绍下怎么在移动端实现横屏展示。

实现


源码:


// screenOrientation.js
export default function (option) {
  var _this = this;
  _this.option = {
    'mode': 'portrait', //portrait(竖屏)、landscape(横屏)
    'id': 'wrap', //最外层容器ID
    'init': false,
    'callback': false
  };
  for (var k in option)
    if (option[k] != '') _this.option[k] = option[k];
  var obj = document.getElementById(_this.option.id);
  var className = obj.className || " ";
  var w_width = obj.clientWidth;
  var w_height = obj.clientHeight;
  var flag = 0;
  var timer;
  if (_this.option.mode == "portrait")
    var cssBlock =
      '.' + _this.option.id + '_screenOrientation{-webkit-transform: rotateZ(-90deg) !important; transform: rotateZ(-90deg); position:relative;}';
  else
    // eslint-disable-next-line no-redeclare
    var cssBlock =
      '.' + _this.option.id + '_screenOrientation{-webkit-transform: rotateZ(90deg) !important; transform: rotateZ(90deg); position:relative;}';
  var style = document.createElement("style");
  style.type = "text/css";
  style.textContent = cssBlock;
  document.getElementsByTagName("head").item(0).appendChild(style);
  var _width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
  var _height = (window.innerHeight > 0) ? window.innerHeight : screen.height;
  _this.modifyDetec = function () {
    if ((_height < _width && _this.option.mode == "portrait") || (_height > _width && _this.option.mode == "landscape") && flag == 0) {
      obj.style.width = _height + "px";
      obj.style.height = _width + "px";
      obj.style.top = -(_width - _height) * 0.5 + "px";
      obj.style.left = -(_height - _width) * 0.5 + "px";
      obj.className = className + " " + (_this.option.id + "_screenOrientation");
      flag = 1;
      if (_this.option.callback) {
        _this.option.callback();
      }
    } else {
      obj.style.width = w_width + "px";
      obj.style.height = w_height + "px";
      obj.className = className;
      obj.style.top = " ";
      obj.style.left = " ";
      flag = 0;
    }
  }
  function detectOtt() {
    _width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
    _height = (window.innerHeight > 0) ? window.innerHeight : screen.height;
    if (window.orientation == 180 || window.orientation == 0 || window.orientation == 90 || window.orientation == -90) {
      clearTimeout(timer);
      timer = setTimeout(function () {
        _this.modifyDetec(_width, _height);
      }, 50);
    }
  }
  if (_this.option.init) {
    _this.option.init();
  }
  detectOtt();
  window.addEventListener("resize", detectOtt, false);
}


使用:


import screenOrientation from './screenOrientation.js'
// 方法
screen(){
  // portrait(竖屏)、landscape(横屏)
  // id : 最外层容器DOM元素ID
  new screenOrientation({ mode:'landscape', id:'wrap'})
}


结语




相关文章
|
11月前
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1714 103
|
11月前
|
JavaScript 前端开发 API
|
前端开发 数据安全/隐私保护
crypto-js中AES的加解密封装
文章介绍了如何在前端使用crypto-js库进行AES加密和解密,提供了加解密的函数封装示例,并演示了如何加密和解密字符串或对象。
1391 1
crypto-js中AES的加解密封装
|
JavaScript 前端开发 Python
用python执行js代码:PyExecJS库
文章讲述了如何使用PyExecJS库在Python环境中执行JavaScript代码,并提供了安装指南和示例代码。
930 1
用python执行js代码:PyExecJS库
|
10月前
|
资源调度 JavaScript 前端开发
Day.js极简轻易快速2kB的JavaScript库-替代Moment.js
dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。
609 24
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
710 156
|
JavaScript 前端开发
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
571 156
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
578 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
移动开发 JavaScript 前端开发
一些处理浏览器兼容性问题的JavaScript库
这些库在处理浏览器兼容性问题方面都有着各自的特点和优势,可以根据具体的需求和项目情况选择合适的库来使用,从而提高代码的兼容性和稳定性,为用户提供更好的体验。同时,随着浏览器技术的不断发展,还需要持续关注和学习新的兼容性解决方案。
441 58
|
JavaScript 前端开发 搜索推荐
Moment.js、Day.js、Miment,日期时间库怎么选?
【10月更文挑战第29天】如果你需要一个功能强大、插件丰富的日期时间库,并且对性能要求不是特别苛刻,Moment.js是一个不错的选择;如果你追求极致的轻量级和高性能,那么Day.js可能更适合你;而如果你有一些特定的日期时间处理需求,并且希望在性能和功能之间取得平衡,Miment也是可以考虑的。
607 57