Заставлять веб-сайт показывать только в ландшафтном режиме

Я хочу показать свой веб-сайт только в ландшафтном режиме, возможно ли это? Неважно, какая ориентация устройства в руке пользователя, но веб-сайт всегда будет в ландшафтном режиме. Я видел приложение iPhone, работающее так, но может ли это быть сделано для веб-сайта?

Ответ 1

@Golmaal действительно ответил на это, я просто немного более подробный.

<style type="text/css">
    #warning-message { display: none; }
    @media only screen and (orientation:portrait){
        #wrapper { display:none; }
        #warning-message { display:block; }
    }
    @media only screen and (orientation:landscape){
        #warning-message { display:none; }
    }
</style>

....

<div id="wrapper">
    <!-- your html for your website -->
</div>
<div id="warning-message">
    this website is only viewable in landscape mode
</div>

У вас нет контроля над перемещением пользователя, но вы можете хотя бы сообщить об этом. Этот пример скроет обертку, если в портретном режиме, и покажет предупреждающее сообщение, а затем скройте предупреждающее сообщение в альбомном режиме и покажите портрет.

Я не думаю, что этот ответ лучше, чем @Golmaal, только комплимент к нему. Если вам нравится этот ответ, не забудьте дать @Golmaal кредит.

Обновление

Недавно я работал с Кордовой, и, оказывается, вы можете управлять им, когда у вас есть доступ к собственным функциям.

Другое обновление

Итак, после выпуска Кордовы это действительно ужасно, в конце концов. Лучше использовать что-то вроде React Native, если вы хотите JavaScript. Это действительно потрясающе, и я знаю, что это не чистая сеть, но это вроде как неудачно.

Ответ 2

Пока я сам буду ждать ответа, интересно, можно ли это сделать через CSS:

@media only screen and (orientation:portrait){
#wrapper {width:1024px}
}

@media only screen and (orientation:landscape){
#wrapper {width:1024px}
}

Ответ 3

Попробуйте Это может быть более подходящим для вас

#container { display:block; }
@media only screen and (orientation:portrait){
  #container {  
    height: 100vw;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    transform: rotate(90deg);
  }
}
@media only screen and (orientation:landscape){
  #container {  
     -webkit-transform: rotate(0deg);
     -moz-transform: rotate(0deg);
     -o-transform: rotate(0deg);
     -ms-transform: rotate(0deg);
     transform: rotate(0deg);
  }
}
<div id="container">
    <!-- your html for your website -->
    <H1>This text is always in Landscape Mode</H1>
</div>

Ответ 4

Мне пришлось играть с шириной моих основных контейнеров:

html {
  @media only screen and (orientation: portrait) and (max-width: 555px) {
    transform: rotate(90deg);
    width: calc(155%);
    .content {
      width: calc(155%);
    }
  }
}