Giữ nguyên kích thước phông chữ HTML khi hướng iPhone thay đổi từ dọc sang ngang


203

Tôi có một ứng dụng web di động với danh sách không có thứ tự chứa nhiều danh sách với một siêu liên kết bên trong mỗi li:

... Câu hỏi của tôi là làm cách nào tôi có thể định dạng các siêu liên kết để chúng không thay đổi kích thước khi được xem trên iPhone và đồng hồ đo chuyển đổi từ dọc -> ngang? Ngay bây giờ, tôi có kích thước phông chữ siêu liên kết được chỉ định là 14px, nhưng khi chuyển sang ngang, nó sẽ thổi lên đến 20px. Tôi muốn kích thước phông chữ được giữ nguyên. Đây là mã:

ul li a
{
  font-size:14px;
  text-decoration: none;
  color: #cc9999;
}
<ul>
  <li id="home" class="active">
    <a href="home.html">HOME</a>
  </li>
  <li id="home" class="active">
    <a href="test.html">TEST</a>
  </li>
</ul>

Câu trả lời:


433

Bạn có thể vô hiệu hóa hành vi này thông qua thuộc tính -webkit-text-size-adjustCSS:

html {
    -webkit-text-size-adjust: 100%; /* Prevent font scaling in landscape while allowing user zoom */
}

Việc sử dụng thuộc tính này được mô tả kỹ hơn trong Hướng dẫn nội dung web Safari .


4
Như snobojohan lưu ý, bạn có thể gói nó trong truy vấn phương tiện cụ thể theo chiều ngang để duy trì khả năng tăng kích thước phông chữ trên trình duyệt máy tính để bàn. Điều này là không cần thiết trên các trang nhắm mục tiêu iOS, nơi thu phóng pinch sẽ hoạt động bất kể.
Matt Stevens

Tính năng này đường nối không hoạt động trong iOS6. Bạn cũng có thể thử sử dụng <meta content="viewport"thẻ meta (xem bên dưới)
Dan

13
KHÔNG sử dụng none, 100%thay vào đó, đó là hành vi bạn muốn: blog.55minutes.com/2012/04/iphone-text-resizing
fregante

1
Cảm ơn bạn vì điều này ... Tôi đã cố gắng tìm hiểu điều gì đang xảy ra với kích thước phông chữ trong phong cảnh xD
Jeff Bleach

3
@ bfred.it +1, tôi nghĩ rằng nó đáng để chỉnh sửa câu trả lời này với sự thay đổi đó.
Minh

106

Lưu ý: nếu bạn sử dụng

html {
    -webkit-text-size-adjust: none;
}

sau đó điều này sẽ vô hiệu hóa hành vi thu phóng trong các trình duyệt mặc định. Một giải pháp tốt hơn là:

html {
    -webkit-text-size-adjust: 100%;
}

Điều này sửa hành vi của iPhone / iPad, mà không thay đổi hành vi của máy tính để bàn.


25

Sử dụng -webkit-text-size-điều chỉnh: none; trực tiếp trên html phá vỡ khả năng phóng to văn bản trong tất cả các trình duyệt webkit. Bạn nên kết hợp điều này với som truy vấn phương tiện truyền thông cụ thể cho iOS. Ví dụ:

@media only screen and (min-device-width : 320px) and (max-device-width : 1024px) {
     html {
        -webkit-text-size-adjust: none;
     }
}

Thật thú vị, tôi chỉ làm cho nó hoạt động bằng cách đặt thuộc tính -webkit bên trong truy vấn phương tiện. Cảm ơn!
zuallauz

12

Như đã đề cập trước đó, quy tắc CSS

 -webkit-text-size-adjust: none

không còn hoạt động trong các thiết bị hiện đại.

May mắn thay, một giải pháp mới xuất hiện cho iOS5 và iOS6 (todo: còn iOS7 thì sao?) :

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

Bạn cũng có thể thêm , user-scalable=0để tắt thu phóng pinch, vì vậy trang web của bạn sẽ hoạt động giống như một ứng dụng gốc. Nếu thiết kế của bạn phanh khi người dùng phóng to, thay vào đó hãy sử dụng thẻ meta này:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

Chà, một câu hỏi hay là nên sử dụng dấu phẩy hay dấu chấm phẩy trong thẻ meta này! Nhưng nó hoạt động :)
Dan

2
Tôi chỉ cần <meta name="viewport" content="width=device-width, initial-scale=1.0">cho nó có hiệu lực.
Foxinni

1
@Foxinni: cảm ơn, đã cập nhật câu trả lời. Tôi nghĩ rằng 2 thẻ meta đầu tiên này là rác không dùng được từ các phiên bản iOS đầu tiên
Dan

10

Bạn có thể thêm một meta trong tiêu đề HTML:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />


9

Bạn cũng có thể chọn sử dụng thiết lập lại CSS, chẳng hạn như normalize.css , bao gồm cùng một quy tắc mà crazygringo khuyến nghị:

/**
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}

Như bạn thấy, nó cũng bao gồm một quy tắc cụ thể của nhà cung cấp cho Điện thoại IE.

Để biết thông tin hiện tại về việc triển khai trong các trình duyệt khác nhau, hãy tham khảo trang tham chiếu MDN .


3

Các mã dưới đây làm việc cho tôi.

html{-webkit-text-size-adjust: 100%;}

Hãy thử xóa bộ nhớ cache của trình duyệt nếu nó không hoạt động.



0

Trong trường hợp của tôi, sự cố này là do tôi đã sử dụng thuộc tính CSS width: 100%cho thẻ HTML input type="text".

Tôi đã thay đổi giá trị widthđến 60% và thêm padding-right:38%.

input {
    padding-right: 38%;
    width: 60%;
}
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.