携帯電話でページを強制する方法
21767 ワード
まずhtmlの内容を準備します.
実は原理は簡単で、内容を右に90度回転させるだけで横画面になるのでしょう.まず、位置を
実は
しかし、ユーザーの画面が回転してボタンが開いていて、ユーザーが携帯電話を横にすると、悲劇的になります.以下の図です.
スクリーンの変化を監視する必要があります.ユーザーが自分でスクリーンを横にすると、前の回転を削除します.
完全なデモはこちらをご覧ください.
<div id="content">
<p> html5 。。。p>
<p> 。。。p>
<p> 。。。p>
<p> 。。。p>
<p> 。。。p>
<p> 。<img src="http://img001.photo.21cn.com/photos/album/20120904/o/6A7A403C29766CBCB38C616BDFD48486.jpg" />p>
div>
実は原理は簡単で、内容を右に90度回転させるだけで横画面になるのでしょう.まず、位置を
absolute
に変更します. #content {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#content p {
margin: auto;
margin-top: 20px;
text-align: center;
}
img {
width: 100px;
}
実は
position: absolute;
という行のコード以外は必要ありません.他は中央揃えなどをするためだけです.次にjsで縦スクリーン(portrait)か横スクリーン(landscape)かを判断し、縦スクリーンであれば右に90度回転します. const width = document.documentElement.clientWidth;
const height = document.documentElement.clientHeight;
if (width < height) {
console.log(width + " " + height);
const contentDOM = document.getElementById('content');
contentDOM.style.width = height + 'px';
contentDOM.style.height = width + 'px';
contentDOM.style.top = (height - width) / 2 + 'px';
contentDOM.style.left = 0 - (height - width) / 2 + 'px';
contentDOM.style.transform = 'rotate(90deg)';
}
しかし、ユーザーの画面が回転してボタンが開いていて、ユーザーが携帯電話を横にすると、悲劇的になります.以下の図です.
スクリーンの変化を監視する必要があります.ユーザーが自分でスクリーンを横にすると、前の回転を削除します.
const evt = "onorientationchange" in window ? "orientationchange" : "resize";
window.addEventListener(evt, function () {
const width = document.documentElement.clientWidth;
const height = document.documentElement.clientHeight;
const contentDOM = document.getElementById('content');
alert('width: ' + width + ' height: ' + height)
if (width > height) { //
contentDOM.style.width = width + 'px';
contentDOM.style.height = height + 'px';
contentDOM.style.top = '0px';
contentDOM.style.left = '0px';
contentDOM.style.transform = 'none';
}
else { // , bug, ,width:375, height: 323, 。 safari、chrome 。
alert('change to portrait')
contentDOM.style.width = height + 'px';
contentDOM.style.height = width + 'px';
contentDOM.style.top = (height - width) / 2 + 'px';
contentDOM.style.left = 0 - (height - width) / 2 + 'px';
contentDOM.style.transform = 'rotate(90deg)';
}
}, false);
完全なデモはこちらをご覧ください.