html让网页在手机端自动横屏,如何实现移动端页面默认横屏显示
思路分析
使用 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让网页在手机端自动横屏,如何实现移动端页面默认横屏显示相关推荐
- js判断网页在手机端跳转到移动页面,script怎么写跳转移动端
js判断网页在手机端跳转到移动页面,script怎么写跳转移动端 js案例: <script>if(/Android|webOS|iPhone|Windows Phone|iPod|Bla ...
- PC端网页在手机端全屏展示改造
为了让PC端网页在手机端全屏展示,一般首先想到的是清除浏览器的默认设置边距. * {padding: 0;margin: 0; } 但是不建议使用以上写法,尤其是较大的网站,会极大的消耗资源,所以不建 ...
- html自动缩放不出现滚动条,HTML页面缩小后显示滚动条的示例代码
这里记录一下如何使得HTML页面缩小之后,底部出现滚动条,使得可以通过滚动滚动条来浏览由于界面缩小而被掩盖的地方. 说一下这样做的好处. 首先,一般界面缩小之后不出现滚动条,用户就不能访问被隐藏的地方 ...
- 滚动到底部自动加载 html,移动端页面滚动到底部自动加载数据
$(window).bind("scroll", function () { if(getScrollHeight() == getDocumentTop() + getWindo ...
- 进入web端进行来源判断后 自动跳转至wap端页面
/*** 使用说明:* 在web端添加如下代码,默认访问web端,一旦检测满足wap时跳转过去*/ let mobileAgent = ["iphone", "ipod& ...
- 【移动端网页布局】移动端网页布局基础概念 ⑧ ( 移动端页面布局方案 | 单独制作的移动端页面 - 主流 | 响应式页面兼容移动端 - 开发难度较大 )
文章目录 一.移动端页面布局方案 1.单独制作的移动端页面 2.响应式页面兼容移动端 一.移动端页面布局方案 移动端页面方案 : 单独制作的移动端页面 : 主流开发方案 , PC 端 与 移动端 访问 ...
- Android activity默认横屏设置
在android app开发中,有些需求要求app 页面默认横屏状态,但是如果在AndroidManifest.xml中设置方向 设置android:screenOrientation="l ...
- 解决audio和video在手机端无法自动播放问题
解决audio和video在手机端无法自动播放问题 参考文章: (1)解决audio和video在手机端无法自动播放问题 (2)https://www.cnblogs.com/theblogs/p/9 ...
- [html] HTML5的video在手机端如何实现进来页面时就自动播放?
[html] HTML5的video在手机端如何实现进来页面时就自动播放? 理想情况autoplay=true.但是现实是:基本所有浏览器都屏蔽了这个属性. 能实现的现在只有微信了,微信有一套自己的规 ...
最新文章
- java标准类的制作
- 使命召唤5该服务器没有响应,使命召唤5突然就建不了服务器了~~~求高人帮忙~~...
- Java基础入门(一):Java里面的时间
- 【手写系列】写一个迷你版的Tomcat
- STM32 UART2程序--端口重映射
- Java的不同版本:J2SE、J2EE、J2ME的区别
- 总奖金15万,双赛道同名消歧挑战赛报名进行中
- 查看堆内存(histogram)中的对象数量及大小
- asp前端日历_ASP+JavaScript的完整的日历使用-ASP教程,ASP应用
- 程序员应该具备的12种能力
- java 协同编辑的多指针_多人协作项目如何保持代码风格统一
- Rstudio如何让显示界面的字体更大一些
- war包还原成项目_将War包还原成java web项目
- 【hacker的错误集】IndentationError: expected an indented block
- 次元壁的重塑:当AI主播走进央视演播厅
- Android 之文件夹排序
- 无线服务器dns怎么设置方法,怎么设置无线路由器的dns
- 吃白菜一样用micropython玩esp32(四)—— siri远程控制点灯
- Python 爬取迷你MP4电影网,电影名称保存到本地,Requests+lxml框架
- 关于安卓上pcm文件转wav全是噪音解决办法