Изменение CSS на основе мобильной ориентации

#javascript #android #iphone #mobile

#javascript #Android #iPhone #Мобильный

Вопрос:

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

Комментарии:

1. Нет ли какой-либо опции для привязки к событию изменения размера окна, и если X больше, чем Y, это альбомная ориентация? И на Y больше, чем на X, у вас получается портрет? Сохранить 1 переменную как логическое значение isLandscape и, если оно изменилось, отредактировать вашу таблицу стилей?

2. Почему вы думаете, что медиа-запросы CSS не являются чистым решением?

Ответ №1:

Пример

 /* For portrait */
@media screen and (orientation: portrait) {
  #toolbar {
    width: 100%;
  }
}

/* For landscape */

@media screen and (orientation: landscape) {
  #toolbar {
    position: fixed;
    width: 2.65em;
    height: 100%;
  }

  p {
    margin-left: 2em;
  }
}
  

Более подробную информацию смотрите здесь

Комментарии:

1. @Mike Добро пожаловать. Вы можете выразить свою благодарность, если проголосуете за мой ответ.

2. np только что сделал и снова txs

Ответ №2:

Приведенный ниже код jQuery, похоже, работает лучше всего для меня…в примерах привязки этого не произошло.

 $(document).ready(function() {
               $(window).resize(function() {
                  alert(window.orientation);
                  });
               });
  

Ответ №3:

Сначала присвойте вашей таблице стилей, включающей строку, идентификатор =»cssElement» или что-то в этомроде.

Затем с помощью jQuery:

 $(document).ready(function(){   

   // The event for orientation change
   var onChanged = function() {

      // The orientation
      var orientation = window.orientation;

      if(orientation == 90) { 
          $('#cssElement').attr('href', '/path/to/landscape.css');
      } else {
          $('#cssElement').attr('href', '/path/to/portrait.css');
      }

   };

   // Bind the orientation change event and bind onLoad
   $(window).bind(orientationEvent, onChanged).bind('load', onChanged);

});
  

Комментарии:

1. Я думал, window.orientation это число, а не строка.

2. ^^icktoofay, Вы правы (исправлено). Я что-то неправильно прочитал. В любом случае, это / должно / работать в браузере телефона.

Ответ №4:

Вы можете использовать событие window.onorientationchange.