思路分析

使用 postcss-pxtorem 自动将 px 转为 rem;

结合当前浏览器窗口宽高及 orientation 来判断当前设备横竖屏状态;

根据当前横竖屏状态采用不同处理逻辑;

创建项目

vue init webpack vue-horizontal-demo

具体步骤

安装命令

npm i postcss-pxtorem --save-dev

打开 build/vue-loader.conf.js 加入 px2rem 配置

"use strict";

const utils = require("./utils");

const config = require("../config");

const px2rem = require("postcss-pxtorem");

const isProduction = process.env.NODE_ENV === "production";

const sourceMapEnabled = isProduction

? config.build.productionSourceMap

: config.dev.cssSourceMap;

module.exports = {

loaders: utils.cssLoaders({

sourceMap: sourceMapEnabled,

extract: isProduction

}),

cssSourceMap: sourceMapEnabled,

cacheBusting: config.dev.cacheBusting,

transformToRequire: {

video: ["src", "poster"],

source: "src",

img: "src",

image: "xlink:href"

},

postcss: function() {

return [

px2rem({

rootValue: 75,

propList: ["*", "!border"],

minPixelValue: 1

})

];

}

};

在 index.html 中加入计算 font-size 代码

window.calcFontSize = () => {

document.documentElement.style.fontSize =

Math.min(

document.documentElement.clientWidth,

document.documentElement.clientHeight

) /

10 +

"px";

};

window.calcFontSize();

增加?horizontal-screen 全局指令

Vue.directive("horizontal-screen", {

bind(el, binding, vnode) {

let self = vnode.context;

let getDocumentSize = () => [

document.documentElement.clientWidth,

document.documentElement.clientHeight

];

// 设备开启竖屏锁定,强制横屏模式

let vertical = () => {

let [width, height] = getDocumentSize();

el.style.transform = `rotate(90deg)`;

el.style.transformOrigin = width / 2 + ‘px center‘;

el.style.width = height + ‘px‘;

el.style.height = width + ‘px‘;

};

// 设备关闭竖屏锁定,横屏时,还原成正常模式

let reset = () => {

let [width, height] = getDocumentSize();

el.style.transform = `rotate(0deg)`;

el.style.width = `${width}px`;

el.style.height = `${height}px`;

};

el.resize = function() {

if (document.activeElement.nodeName === "INPUT") return; // 兼容安卓

window.calcFontSize();

if ([null, 180, 0].includes(window.orientation)) {

vertical();

} else if ([90, -90].includes(window.orientation)) {

reset();

}

};

el.resize();

el.click = e => {

if (e.target.nodeName === "INPUT") {

reset();

} else if (![90, -90].includes(window.orientation)) {

vertical();

}

};

window.addEventListener("click", el.click, false);

window.addEventListener("resize", el.resize, false); // 兼容安卓

window.addEventListener("orientationchange", el.resize, false);

},

unbind(el, binding, vnode) {

window.removeEventListener("click", el.click, false);

window.removeEventListener("resize", el.resize, false);

window.removeEventListener("orientationchange", el.resize, false);

}

});

在页面最外层的容器加上 ‘v-horizontal-screen‘ 即可

原文:https://www.cnblogs.com/olivers/p/12719927.html

html让网页在手机端自动横屏,如何实现移动端页面默认横屏显示相关推荐

  1. js判断网页在手机端跳转到移动页面,script怎么写跳转移动端

    js判断网页在手机端跳转到移动页面,script怎么写跳转移动端 js案例: <script>if(/Android|webOS|iPhone|Windows Phone|iPod|Bla ...

  2. PC端网页在手机端全屏展示改造

    为了让PC端网页在手机端全屏展示,一般首先想到的是清除浏览器的默认设置边距. * {padding: 0;margin: 0; } 但是不建议使用以上写法,尤其是较大的网站,会极大的消耗资源,所以不建 ...

  3. html自动缩放不出现滚动条,HTML页面缩小后显示滚动条的示例代码

    这里记录一下如何使得HTML页面缩小之后,底部出现滚动条,使得可以通过滚动滚动条来浏览由于界面缩小而被掩盖的地方. 说一下这样做的好处. 首先,一般界面缩小之后不出现滚动条,用户就不能访问被隐藏的地方 ...

  4. 滚动到底部自动加载 html,移动端页面滚动到底部自动加载数据

    $(window).bind("scroll", function () { if(getScrollHeight() == getDocumentTop() + getWindo ...

  5. 进入web端进行来源判断后 自动跳转至wap端页面

    /*** 使用说明:* 在web端添加如下代码,默认访问web端,一旦检测满足wap时跳转过去*/ let mobileAgent = ["iphone", "ipod& ...

  6. 【移动端网页布局】移动端网页布局基础概念 ⑧ ( 移动端页面布局方案 | 单独制作的移动端页面 - 主流 | 响应式页面兼容移动端 - 开发难度较大 )

    文章目录 一.移动端页面布局方案 1.单独制作的移动端页面 2.响应式页面兼容移动端 一.移动端页面布局方案 移动端页面方案 : 单独制作的移动端页面 : 主流开发方案 , PC 端 与 移动端 访问 ...

  7. Android activity默认横屏设置

    在android app开发中,有些需求要求app 页面默认横屏状态,但是如果在AndroidManifest.xml中设置方向 设置android:screenOrientation="l ...

  8. 解决audio和video在手机端无法自动播放问题

    解决audio和video在手机端无法自动播放问题 参考文章: (1)解决audio和video在手机端无法自动播放问题 (2)https://www.cnblogs.com/theblogs/p/9 ...

  9. [html] HTML5的video在手机端如何实现进来页面时就自动播放?

    [html] HTML5的video在手机端如何实现进来页面时就自动播放? 理想情况autoplay=true.但是现实是:基本所有浏览器都屏蔽了这个属性. 能实现的现在只有微信了,微信有一套自己的规 ...

最新文章

  1. java标准类的制作
  2. 使命召唤5该服务器没有响应,使命召唤5突然就建不了服务器了~~~求高人帮忙~~...
  3. Java基础入门(一):Java里面的时间
  4. 【手写系列】写一个迷你版的Tomcat
  5. STM32 UART2程序--端口重映射
  6. Java的不同版本:J2SE、J2EE、J2ME的区别
  7. 总奖金15万,双赛道同名消歧挑战赛报名进行中
  8. 查看堆内存(histogram)中的对象数量及大小
  9. asp前端日历_ASP+JavaScript的完整的日历使用-ASP教程,ASP应用
  10. 程序员应该具备的12种能力
  11. java 协同编辑的多指针_多人协作项目如何保持代码风格统一
  12. Rstudio如何让显示界面的字体更大一些
  13. war包还原成项目_将War包还原成java web项目
  14. 【hacker的错误集】IndentationError: expected an indented block
  15. 次元壁的重塑:当AI主播走进央视演播厅
  16. Android 之文件夹排序
  17. 无线服务器dns怎么设置方法,怎么设置无线路由器的dns
  18. 吃白菜一样用micropython玩esp32(四)—— siri远程控制点灯
  19. Python 爬取迷你MP4电影网,电影名称保存到本地,Requests+lxml框架
  20. 关于安卓上pcm文件转wav全是噪音解决办法

热门文章

  1. C++之类的组合(聚合)
  2. 数值法求解最优控制问题(三)——多重打靶法
  3. opengrok搭建快餐教程2020
  4. Druid连接池自定义数据库密码加解密的实现
  5. 手游NPC开始用AI对话/ 腾讯回应XR部门全线解散/ 邓明扬获美国数学竞赛第一... 今日更多新鲜事在此...
  6. 软信天成:企业如何对数据资产追根溯源?
  7. 计算机注册表知识,win7注册表小常识
  8. Typora图床搭建教程
  9. 历时3年,美图全面容器化踩过的坑
  10. 联想小新潮7000原配固态硬盘参数