buộc trang web chỉ hiển thị ở chế độ ngang


85

Tôi chỉ muốn hiển thị trang web của mình ở chế độ ngang, nó có thể di động được không? Không quan trọng hướng của thiết bị trong tay người dùng là gì nhưng trang web sẽ luôn ở chế độ ngang. Tôi đã thấy ứng dụng iPhone hoạt động như vậy nhưng điều này có thể được thực hiện cho một trang web không?


3
Câu hỏi hay, nhưng tôi dám cá rằng câu trả lời là "Không thể" mặc dù bạn có thể ăn gian: stackoverflow.com/a/4807047/615754 .
nnnnnn

Không hẳn. Bạn có thể làm giả nó bằng cách sử dụng các biến đổi css nhưng nó xấu xí và tôi không nghĩ có cách nào để biết nó có bị lộn ngược trên Android hay không. Khá chắc chắn điều này đã được thảo luận ở đây trước đây.
Dagg Nabbit

1
có thể buộc trang web phải có chiều rộng tối thiểu: 320px không? vì vậy nếu kích thước màn hình có độ phân giải thấp hơn, người dùng sẽ cần phải cuộn để xem toàn bộ trang web. Hoặc Tôi có thể phóng to nội dung 240px chiều rộng lên 320px không?
coure2011

Tôi không chắc liên kết này hữu ích như thế nào đối với bạn nhưng các tính năng mới nhất của [tháng 1 năm 2020] đề xuất một API mới cho khóa Định hướng từ W3C w3c.github.io/screen-orientation
Sarath Sajan

Câu trả lời:


117

@Golmaal thực sự đã trả lời điều này, tôi chỉ dài dòng hơn một chút.

<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>

Bạn không có quyền kiểm soát người dùng di chuyển hướng, tuy nhiên, ít nhất bạn có thể nhắn tin cho họ. Ví dụ này sẽ ẩn trình bao bọc nếu ở chế độ dọc và hiển thị thông báo cảnh báo và sau đó ẩn thông báo cảnh báo ở chế độ ngang và hiển thị chân dung.

Tôi không nghĩ câu trả lời này tốt hơn @Golmaal, chỉ có một lời khen cho nó. Nếu bạn thích câu trả lời này, hãy đảm bảo ghi công cho @Golmaal.

Cập nhật

Tôi đã làm việc với Cordova rất nhiều gần đây và hóa ra bạn CÓ THỂ kiểm soát nó khi bạn có quyền truy cập vào các tính năng gốc.

Cập nhật khác

Vì vậy, sau khi phát hành Cordova, nó thực sự khủng khiếp. Tốt hơn là sử dụng một cái gì đó như React Native nếu bạn muốn JavaScript. Nó thực sự tuyệt vời và tôi biết nó không phải là web thuần túy nhưng trải nghiệm web thuần túy trên thiết bị di động đã thất bại.


đã làm nên ngày của tôi! đây là tập lệnh thực sự tiện dụng để buộc chế độ ngang trên các thiết bị nhỏ đưa ra một thông điệp hay.
dhruvpatel

bạn có hầu hết các tín dụng mặc dù;) + 1d cho câu trả lời và @Golmaal mô tả cặn kẽ của bạn ..
Hitesh Misro

Thực sự hữu ích, cảm ơn! Cần lưu ý rằng điều này dường như không hoạt động nếu bạn dán nó vào một biểu định kiểu riêng biệt.
Mmm,

Câu trả lời của bạn tốt hơn câu bạn tham khảo. Bạn cung cấp một giải pháp thực tế và đề xuất một cảnh báo dễ thực hiện thay vì một cái gì đó sáng tạo và có vấn đề hơn. "Câu trả lời" kia có thể đã truyền cảm hứng cho bạn, nhưng nó ít nhiều chỉ khiến bạn băn khoăn. Sẽ tốt hơn nếu một bình luận đề cập đến sự tồn tại của thuộc tính orientationnhóm có điều kiện.
Vince

46

Trong khi bản thân tôi đang đợi câu trả lời ở đây, tôi tự hỏi liệu nó có thể được thực hiện thông qua CSS hay không:

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

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

35

Hãy thử cái này Nó có thể thích hợp hơn cho bạn

#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>

Điều này sẽ tự động quản lý vòng quay đều.


7
Thông minh, nhưng không thực sự hiệu quả. Phần lớn trang không thể truy cập được khi nó được xoay, vì chỉ nội dung được xoay chứ không phải trình duyệt thực tế.
Graham

2
Điều này sẽ phá vỡ bất kỳ hoạt ảnh nào và nó có thể sẽ phá hủy khả năng phản hồi trên thiết bị di động của trang.
Wissam El-Kik

2

Tôi đã phải thử với chiều rộng của các thùng chứa chính của mình:

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

ý tưởng hay .. bất kỳ hiện vật / nhiễu nào khi chuyển đổi giữa chân dung / phong cảnh?
hko ngày
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.