Tworzę aplikację internetową na iPhone'a i chcę zablokować orientację w trybie pionowym. czy to możliwe? Czy są jakieś rozszerzenia zestawu internetowego, które to umożliwiają?
Należy pamiętać, że jest to aplikacja napisana w HTML i JavaScript dla Mobile Safari, NIE jest to natywna aplikacja napisana w Objective-C.
orientation
iphone
Kevin
źródło
źródło
Odpowiedzi:
Możesz określić style CSS na podstawie orientacji widoku: kieruj na przeglądarkę treścią [orient = "pozioma"] lub treścią [orient = "portret"]
http://www.evotech.net/blog/2007/07/web-development-for-the-iphone/
Jednak...
Podejście Apple do tego problemu polega na umożliwieniu programistom zmiany CSS na podstawie zmiany orientacji, ale bez całkowitego zapobiegania ponownej orientacji. Znalazłem podobne pytanie gdzie indziej:
http://ask.metafilter.com/99784/How-can-I-lock-iPhone-orientation-in-Mobile-Safari
źródło
To dość hakerskie rozwiązanie, ale przynajmniej coś (?). Chodzi o to, aby użyć transformacji CSS, aby obrócić zawartość strony do trybu quasi-portretu. Oto kod JavaScript (wyrażony w jQuery) na początek:
Kod oczekuje, że cała zawartość Twojej strony będzie znajdować się w elemencie div bezpośrednio w elemencie body. Obraca ten obszar o 90 stopni w trybie poziomym - z powrotem do portretu.
Pozostawione jako ćwiczenie dla czytelnika: element div obraca się wokół swojego punktu środkowego, więc jego położenie prawdopodobnie będzie wymagało dostosowania, chyba że jest idealnie kwadratowe.
Jest też nieatrakcyjny problem wizualny. Gdy zmienisz orientację, Safari obraca się powoli, a następnie element div najwyższego poziomu przyciąga do 90 stopni inaczej. Aby uzyskać jeszcze więcej zabawy, dodaj
do twojego CSS. Gdy urządzenie się obraca, to robi to Safari, a potem zawartość Twojej strony. Niesamowite!
źródło
Ta odpowiedź nie jest jeszcze możliwa, ale zamieszczam ją dla „przyszłych pokoleń”. Mamy nadzieję, że pewnego dnia będziemy mogli to zrobić za pomocą reguły CSS @viewport:
Oto strona „Can I Use” (od 2019 r. Tylko IE i Edge):
https://caniuse.com/#feat=mdn-css_at-rules_viewport_orientation
Specyfikacja (w trakcie):
https://drafts.csswg.org/css-device-adapt/#orientation-desc
MDN:
https://developer.mozilla.org/en-US/docs/Web/CSS/@viewport/orientation
Na podstawie tabeli zgodności przeglądarek MDN i następującego artykułu wygląda na to, że niektóre wersje przeglądarek IE i Opera są obsługiwane:
http://menacingcloud.com/?c=cssViewportOrMetaTag
Ta specyfikacja JS API również wygląda na trafną:
https://w3c.github.io/screen-orientation/
Założyłem, że skoro jest to możliwe przy proponowanej
@viewport
regule, to będzie możliwe poprzez ustawienieorientation
w ustawieniach rzutni wmeta
tagu, ale jak dotąd nie udało mi się to.W miarę poprawy sytuacji możesz zaktualizować tę odpowiedź.
źródło
Poniższy kod został użyty w naszej grze HTML5.
źródło
Wymyśliłem tę jedyną w CSS metodę obracania ekranu za pomocą zapytań o media. Zapytania są oparte na rozmiarach ekranu, które znalazłem tutaj . 480px wydawało się dobre, ponieważ żadne / kilka urządzeń nie miało więcej niż 480 pikseli szerokości lub mniej niż 480 pikseli wysokości.
źródło
orientation: landscape
nie działałoby tak dobrze w moim przykładzie @JustinPutneyScreen.lockOrientation()
rozwiązuje ten problem, chociaż wsparcie jest mniej niż powszechne w tym czasie (kwiecień 2017):https://www.w3.org/TR/screen-orientation/
https://developer.mozilla.org/en-US/docs/Web/API/Screen.lockOrientation
źródło
Podoba mi się pomysł powiedzenia użytkownikowi, aby przełączył telefon z powrotem w tryb portretowy. Jak wspomniano tutaj: http://tech.sarathdr.com/featured/prevent-landscape-orientation-of-iphone-web-apps/ ... ale z wykorzystaniem CSS zamiast JavaScript.
źródło
Może w nowej przyszłości będzie miało nieszablonowe rozwiązanie ...
Od maja 2015 r.
istnieje eksperymentalna funkcjonalność, która to robi.
Ale działa tylko w przeglądarkach Firefox 18+, IE11 + i Chrome 38+.
Jednak nie działa jeszcze w Operze ani Safari.
https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation#Browser_compatibility
Oto aktualny kod kompatybilnych przeglądarek:
źródło
Chociaż nie możesz zapobiec zmianie orientacji, nie możesz naśladować żadnej zmiany, jak podano w innych odpowiedziach.
Najpierw wykryj orientację lub zmianę orientacji urządzenia i za pomocą JavaScript dodaj nazwę klasy do elementu opakowującego (w tym przykładzie używam tagu body).
Następnie, jeśli urządzenie jest w orientacji poziomej, użyj CSS, aby ustawić szerokość ciała na wysokość rzutni, a wysokość ciała na szerokość widoku. Ustawmy początek transformacji, skoro już przy tym jesteśmy.
Teraz zmień orientację elementu ciała i przesuń (przetłumacz) na miejsce.
źródło
To lub podobne rozwiązanie CSS przynajmniej zachowa twój układ, jeśli tego szukasz.
Rozwiązanie roota uwzględnia możliwości urządzenia, a nie próbuje je ograniczać. Jeśli urządzenie nie pozwala na odpowiednie ograniczenie, najlepszym rozwiązaniem jest prosty hack, ponieważ projekt jest zasadniczo niekompletny. Im prostsze, tym lepsze.
źródło
W kawie, jeśli ktoś tego potrzebuje.
źródło
Zainspirowany odpowiedzią @ Grumdriga i ponieważ niektóre z użytych instrukcji nie zadziałały, sugeruję następujący skrypt, jeśli ktoś tego potrzebuje:
źródło
Mam podobny problem, ale żeby zrobić krajobraz ... Uważam, że poniższy kod powinien załatwić sprawę:
źródło
Kliknij tutaj, aby zobaczyć samouczek i działający przykład z mojej strony internetowej.
Nie musisz już używać hacków tylko po to, by sprawdzić orientację ekranu jQuery Mobile ani nie powinieneś już używać PhoneGap, chyba że faktycznie używasz PhoneGap.
Aby to zadziałało w 2015 roku potrzebujemy:
I jedna z tych wtyczek w zależności od wersji Cordova:
wtyczka cordova dodaje net.yoik.cordova.plugins.screenorientation
wtyczka cordova dodaje orientację ekranu cordova-plugin
Aby zablokować orientację ekranu, użyj tej funkcji:
Do odblokowania tego:
Możliwe orientacje:
portrait-primary Orientacja jest w głównym trybie portretowym.
portret-drugorzędna Orientacja jest w drugorzędnym trybie portretu.
landscape-primary Orientacja jest w podstawowym trybie poziomym.
landscape-secondary Orientacja jest w drugorzędnym trybie poziomym.
portret Orientacja to podstawowa orientacja pionowa lub drugorzędna (czujnik).
pozioma Orientacja jest albo pozioma-pierwotna lub pozioma-drugorzędna (czujnik).
źródło