Saya mencoba memaksakan mode "lanskap" untuk aplikasi saya karena aplikasi saya sama sekali tidak dirancang untuk mode "potret". Bagaimana saya bisa melakukan itu?
Saya mencoba memaksakan mode "lanskap" untuk aplikasi saya karena aplikasi saya sama sekali tidak dirancang untuk mode "potret". Bagaimana saya bisa melakukan itu?
Jawaban:
Sekarang dapat dilakukan dengan manifes aplikasi web HTML5. Lihat di bawah.
Jawaban asli:
Anda tidak dapat mengunci situs web atau aplikasi web dalam orientasi tertentu. Ini bertentangan dengan perilaku alami perangkat.
Anda dapat mendeteksi orientasi perangkat dengan kueri media CSS3 seperti ini:
@media screen and (orientation:portrait) {
// CSS applied when the device is in portrait mode
}
@media screen and (orientation:landscape) {
// CSS applied when the device is in landscape mode
}
Atau dengan mengikat acara perubahan orientasi JavaScript seperti ini:
document.addEventListener("orientationchange", function(event){
switch(window.orientation)
{
case -90: case 90:
/* Device is in landscape mode */
break;
default:
/* Device is in portrait mode */
}
});
Pembaruan pada 12 November 2014: Sekarang dapat dilakukan dengan manifes aplikasi web HTML5.
Seperti yang dijelaskan di html5rocks.com , Anda sekarang dapat memaksa mode orientasi menggunakan manifest.json
file.
Anda perlu memasukkan baris tersebut ke dalam file json:
{
"display": "standalone", /* Could be "fullscreen", "standalone", "minimal-ui", or "browser" */
"orientation": "landscape", /* Could be "landscape" or "portrait" */
...
}
Dan Anda perlu menyertakan manifes ke dalam file html Anda seperti ini:
<link rel="manifest" href="manifest.json">
Tidak yakin apa dukungan yang ada di manifes aplikasi web untuk mode orientasi penguncian, tetapi Chrome pasti ada di sana. Akan diperbarui ketika saya memiliki info.
screen.orientation.lock('landscape');
Akan memaksanya untuk berubah dan tetap dalam mode lanskap. Diuji di Nexus 5.
Saya menggunakan beberapa css seperti ini (berdasarkan trik css ):
@media screen and (min-width: 320px) and (max-width: 767px) and (orientation: portrait) {
html {
transform: rotate(-90deg);
transform-origin: left top;
width: 100vh;
height: 100vw;
overflow-x: hidden;
position: absolute;
top: 100%;
left: 0;
}
}
landscape
menjadi portrait
dan berfungsi seperti yang diharapkan@media screen and (orientation: portrait)
portrait
(sehingga dapat beralih ke landscape
).
Saya memiliki masalah yang sama, itu adalah file manifest.json yang hilang, jika tidak ditemukan browser memutuskan dengan orientasi yang paling sesuai, jika Anda tidak menentukan file atau menggunakan jalur yang salah.
Saya memperbaiki hanya memanggil manifest.json dengan benar di header html.
Header html saya:
<meta name="application-name" content="App Name">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="manifest" href="manifest.json">
<meta name="msapplication-starturl" content="/">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#">
<meta name="msapplication-TileColor" content="#">
<meta name="msapplication-config" content="browserconfig.xml">
<link rel="icon" type="image/png" sizes="192x192" href="android-chrome-192x192.png">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#ffffff">
<link rel="shortcut icon" href="favicon.ico">
Dan konten file manifest.json:
{
"display": "standalone",
"orientation": "portrait",
"start_url": "/",
"theme_color": "#000000",
"background_color": "#ffffff",
"icons": [
{
"src": "android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
}
}
Untuk membuat favicon dan ikon Anda, gunakan alat web ini: https://realfavicongenerator.net/
Untuk membuat file manifes Anda, gunakan: https://tomitm.github.io/appmanifest/
PWA saya Berfungsi dengan baik, semoga membantu!