Hướng dẫn về Viewport Meta Tag
Điều gì đó viewport meta tag làm, vì sao điều này làm responsive design hoạt động on mobile, đó correct configuration, đó thuộc tính reference, và các lỗi thường gặp.
Ngôn ngữ
Đó viewport meta tag — <meta name="viewport" content="width=device-width, initial-scale=1"> — hints để đó trình duyệt để size đó layout viewport để đó device width trong CSS pixels thay vì một legacy ~980px fallback some mobile các trình duyệt dùng. Không có điều này, phones có thể render đó trang tại đó wider fallback và shrink điều này, producing tiny text, horizontal scroll, và responsive breakpoints đó có thể không apply as dự kiến. đây là không phải là yếu tố xếp hạng itself, nhưng của nó presence là một of đó điều Google documents as indicating mobile-friendliness, và của nó absence là một classic mobile usability failure. Không bao giờ force người dùng-scalable=không hoặc một restrictive maximum-quy mô — điều này fails đó W3C accessibility conformance rule cho zoom và có thể lock out thấp-vision người dùng, though các trình duyệt có thể override điều này (iOS 10+ bỏ qua điều này theo mặc định). Kiểm thử điều này với Lighthouse hoặc PageSpeed Insights: Search Console's Mobile Usability báo cáo và đó Mobile-Friendly Kiểm thử đã là retired December 1, 2023.
Evidence for this claim The viewport meta tag lets authors control viewport width and scaling so responsive layouts render at device width. Scope: Browser viewport behavior. Confidence: high · Verified: MDN: Viewport meta tag Evidence for this claim Pages should not disable browser zoom because users must be able to enlarge content for accessibility. Scope: WCAG resize-text requirement and viewport guidance. Confidence: high · Verified: W3C WAI: Understanding Resize TextTóm tắt — viewport meta tag là một line trong của bạn trang
<head>đó tells phones và tablets để render của bạn trang tại screen thực width thay vì pretending nó desktop monitor. không có nó, của bạn trang hiển thị lên tiny và bạn có để pinch và scroll sideways để đọc nó. line bạn muốn là<meta name="viewport" content="width=device-width, initial-scale=1">.
Điều gì viewport meta tag là
Khi smartphones đầu tiên đã nhận web các trình duyệt, phần lớn websites là được xây dựng cho desktop screens. So nhiều phone các trình duyệt cheated: không có viewport tag, họ’d fall lại để fixed ~980 pixel wide layout — desktop-ish — lay trang out tại đó width, sau đó shrink toàn bộ điều xuống để fit phone. kết quả là readable-shaped trang đó là way cũng nhỏ để thực ra đọc, với text bạn có để pinch-zoom và nội dung đó spilled off sides.
viewport meta tag turns đó off. nó single line bạn put trong
<head> của bạn trang:
<meta name="viewport" content="width=device-width, initial-scale=1">width=device-width tells đó trình duyệt “lay this page out at this device’s screen
width, measured in CSS pixels” (bản dịch) «lay này trang out tại này device screen width, measured trong CSS pixels» (không nhất thiết đó giống nhau as của nó thô hardware-pixel
count on một cao-density screen), và initial-scale=1 says “and don’t zoom in or
out when the page first loads.” (bản dịch) «và không zoom trong hoặc out khi đó trang đầu tiên loads.» đó là điều này. Copy đó line, paste điều này near đó top of
của bạn <head>, đã xong.
Vì sao điều này quan trọng
Hai reasons:
- Điều này làm trang của bạn readable on một phone. Với đó tag, text là legible không có zooming và nội dung fits đó screen. Không có điều này, bạn nhận đó shrunk-xuống, tiny-text, horizontal-scroll experience.
- đây là điều gì làm “responsive design” (bản dịch) «responsive design» thực ra hoạt động. Nếu trang web của bạn dùng modern responsive CSS (layouts đó adapt để screen size), những rules là meant để kick trong dựa trên đó trình duyệt thực tế screen width. Đó viewport tag là điều gì tells điều này đó width. Không có điều này, của bạn responsive breakpoints có thể không apply đó way bạn designed them cho mobile.
Hầu hết modern themes và site builders thêm này tag cho bạn tự động. Nhưng older templates, hand-được xây dựng các trang, và some trang builders miss điều này — mà là vì sao “viewport not set” (bản dịch) «viewport không set» vẫn cho thấy lên trong audits.
mistake để tránh
bạn có thể see version của điều này tag với user-scalable=no on end — đó
ai đó trying để dừng khách truy cập từ zooming so họ có thể’t “break” layout.
không làm đó. nó dừng mọi người với thấp vision từ zooming trong để đọc của bạn
trang, và modern iPhones bỏ qua setting anyway, so nó làm không có gì except hurt
accessibility. Leave zoom alone.
Cách điều này fits rest của mobile SEO
viewport tag là một nhỏ piece của bigger mobile picture — nó về Cách của bạn trang renders on phone, mà là khác từ mobile-đầu tiên lập chỉ mục (về mà version của bạn trang Google đọc). nếu bạn’re đang làm đầy đủ mobile truyền, mobile SEO hub, mobile SEO checklist, và mobile-đầu tiên lập chỉ mục cover rest.
Muốn chính xác thuộc tính reference, accessibility details, và Cách kiểm thử tag hiện tại đó Google old Mobile-Friendly Kiểm thử là đã biến mất? Chuyển để Nâng cao tab.
Evidence for this claim The viewport meta tag lets authors control viewport width and scaling so responsive layouts render at device width. Scope: Browser viewport behavior. Confidence: high · Verified: MDN: Viewport meta tag Evidence for this claim Pages should not disable browser zoom because users must be able to enlarge content for accessibility. Scope: WCAG resize-text requirement and viewport guidance. Confidence: high · Verified: W3C WAI: Understanding Resize TextTóm tắt — viewport meta tag —
<meta name="viewport" content="width=device-width, initial-scale=1">— hints trình duyệt để size layout viewport để device width trong CSS pixels thay vì legacy ~980px fallback some mobile các trình duyệt sử dụng, mà là Điều gì lets responsive CSS media các truy vấn evaluate so với device thực width on mobile. Bị thiếu hoặc misconfigured, nó kinh điển mobile usability thất bại (tiny text, horizontal scroll). nó là không xếp hạng factor — Google documents của nó presence as một điều của nó mobile-friendliness evaluation kiểm tra cho, và không nhiều hơn đó. không bao giờ forceuser-scalable=no/ restrictivemaximum-scale: nó fails W3C ACT accessibility rule cho zoom, though trình duyệt overrides exist (iOS 10+ bỏ qua nó theo mặc định). Google và Bing khuyến nghị giống hệt tag. Kiểm thử với Lighthouse / PageSpeed Insights — Search Console’s Mobile Usability báo cáo và Mobile-Friendly Kiểm thử là retired December 1, 2023.
vấn đề nó solves: ~980px virtual viewport
Để understand đó tag bạn có để understand điều gì đây là overriding. Khi mobile các trình duyệt đã là new, đó lack of một viewport tag meant some of them sẽ fall lại để một fixed layout width of khoảng 980px và render tại đó size — một deliberate accommodation so desktop-sized, pre-responsive các trang sẽ không completely break on sớm smartphones. Đó trình duyệt thì scaled đó kết quả xuống để đó physical screen. MDN’s own cách diễn đạt: “If the site isn’t designed to work well on small viewports and this tag is omitted, some mobile browsers render the site using a fixed initial containing block width, typically 980px.” (bản dịch) «Nếu đó site không designed để hoạt động well on nhỏ viewports và này tag là omitted, some mobile các trình duyệt render đó site dùng một fixed ban đầu containing block width, typically 980px.» — đây là một trình duyệt-cụ thể fallback, không một universal spec constant.
Đó consequence, trong Google own words: “Without a viewport meta tag, mobile devices render pages at typical desktop screen widths and then scale the pages down, making them difficult to read.” (bản dịch) «Không có một viewport meta tag, mobile devices render các trang tại typical desktop screen widths và thì quy mô đó các trang xuống, đang làm them difficult để đọc.» Bạn nhận unreadable text, forced pinch-zooming, và horizontal scrolling — đó textbook symptoms of một trang flagged “not mobile-friendly.” (bản dịch) «không mobile-friendly.»
Setting đó tag “lets you control the width and scaling of the viewport so that it’s sized correctly on all devices.” (bản dịch) «cho phép bạn control đó width và scaling of đó viewport so đó đây là sized correctly on all devices.»
Layout viewport so với. visual viewport (dưới hood)
Hai “viewports” là trong play, và nó worth giữ them straight:
- layout viewport là area trang lays out vào và đó fixed-position
elements attach để.
width=device-widthsets điều này để device screen width trong CSS pixels. - visual viewport là Điều gì người dùng là hiện tại looking tại — mà thay đổi Khi họ pinch-zoom. Zooming thay đổi visual viewport không có thay đổi layout viewport.
Đó reason này matters cho SEO và CSS: của bạn responsive media các truy vấn
(@media (max-width: 600px) và friends) là evaluated so với đó layout
viewport. Nếu đó layout viewport là stuck tại một legacy ~980px fallback vì
có không viewport tag, một phone có thể match của bạn desktop breakpoints thay vì
của bạn hẹp ones. MDN diễn đạt điều này plainly: “Without it, your responsive design with
breakpoints and media queries may not work as intended on mobile browsers.” (bản dịch) «Không có điều này, của bạn responsive design với breakpoints và media các truy vấn có thể không hoạt động as dự kiến on mobile các trình duyệt.» Đó
tag là điều gì làm device-width đó layout viewport so của bạn dự kiến breakpoints
evaluate correctly.
đúng tag, và nơi nó goes
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- ...the rest of your head... -->
</head>Put nó cao trong <head>, near charset, trước khi nội dung-phụ thuộc tags. Đây là
giá trị Google, Bing, và Lighthouse all khuyến nghị — verbatim, nó khắc phục
Lighthouse itself suggests. không overthink giá trị: width=device-width, initial-scale=1 là câu trả lời cho essentially mỗi responsive trang web.
Thuộc tính reference
content thuộc tính là comma-separated list của directives. MDN là
canonical thuộc tính-by-thuộc tính reference; ở đây Điều gì mỗi một làm:
| Directive | Điều gì nó làm | Notes |
|---|---|---|
width | Controls (minimum) pixel width của viewport | toàn bộ number 1–10000, hoặc special giá trị device-width ( screen width trong CSS pixels). sử dụng device-width. |
initial-scale | zoom ratio giữa device width và viewport on load | number 0.0–10.0. sử dụng 1. |
minimum-scale | minimum zoom cấp độ được phép | phải là ≤ maximum-scale. iOS 10+ bỏ qua nó theo mặc định. |
maximum-scale | maximum zoom-trong được phép | phải là ≥ minimum-scale. iOS 10+ bỏ qua nó theo mặc định. không restrict nó. |
user-scalable | Liệu người dùng có thể zoom (yes/no, default yes) | iOS 10+ bỏ qua nó theo mặc định. Setting no là accessibility anti-pattern — leave nó. |
interactive-widget | Cách interactive UI (e.g. virtual keyboards) ảnh hưởng viewport | Các giá trị: resizes-visual (default), resizes-content, overlays-content. Newer; phần lớn SEO nội dung omits nó. |
viewport-fit | Cách viewport xử lý display cutouts (notches) | Các giá trị: auto (default), contain (fits bên trong largest rectangle đó tránh cutout), cover (fills display — pair với CSS env() safe-area-inset variables so nội dung không land dưới cutout). |
viewport-fit và interactive-widget là cả hai trình duyệt-layout các trường hợp biên —
display-cutout và virtual-keyboard xử lý, respectively — không SEO directives;
phần lớn SEO-focused các hướng dẫn skip them hoàn toàn.
nhỏ nhưng thực gotcha từ Lighthouse own tài liệu: setting initial-scale dưới
1 có thể trigger legacy double-tap-để-zoom behavior đó adds interaction delay —
một reason để stick với initial-scale=1 thay vì getting clever.
không bao giờ disable zoom: user-scalable=no là anti-pattern
bạn’ll vẫn tìm user-scalable=no (hoặc maximum-scale=1) copy-pasted vào old
theme boilerplate, thường từ nhà phát triển ai đã không muốn pinch-zoom “messing lên”
của họ layout. nó sai on hai được tính:
- Điều này fails đó web own accessibility conformance kiểm thử cho zoom, và điều này hoạt động
so với WCAG intent. Đó W3C ACT rule “Meta viewport allows for zoom” (bản dịch) «Meta viewport cho phép cho zoom»
(rule b4f0c3) áp dụng để bất kỳ viewport tag đó sets
user-scalablehoặcmaximum-scale, và của nó expectation là rõ ràng: đó tag không được setuser-scalable=no, vàmaximum-scalekhông được là set dưới2. (Đó rule carries stated assumptions — điều này không apply nếu đó trang có không visible nội dung, offers một sản phẩm khác way để resize text, hoặc không bao giờ cần để reflow past một 320×256 CSS-pixel area — nhưng một typical responsive trang không đáp ứng những exceptions.) Theo MDN: “Disabling zooming capabilities by settinguser-scalableto a value ofnoprevents people experiencing low vision conditions from being able to read and understand page content. Additionally, WCAG requires a minimum of 2× scaling; however, the best practice is to enable a 5× zoom.” (bản dịch) «Disabling zooming capabilities by setting để một giá trị of ngăn mọi người experiencing thấp vision conditions từ đang able để đọc và understand trang nội dung. Additionally, WCAG requires một minimum of 2× scaling; tuy nhiên, đó best practice là để enable một 5× zoom.» Blocking zoom locks out đó chính xác người dùng ai cần điều này hầu hết. - đây là cũng trình duyệt-cụ thể, không universal. iOS Safari 10 và sau đó bỏ qua
user-scalable=novà restrictivemaximum-scaletheo mặc định — đó là an iOS override, không một thay đổi để đó ACT rule hoặc để WCAG intent. So on một lớn share of mobile traffic đó setting accomplishes không có gì, trong khi on các trình duyệt đó làm vẫn honor điều này (older Android WebViews, some trong-app các trình duyệt) điều này actively fails đó accessibility kiểm thử trên. Zero upside, real downside — và không treat “iOS ignores it” (bản dịch) «iOS bỏ qua điều này» as proof đó markup là accessible mọi nơi.
rule là đơn giản: không touch zoom. width=device-width, initial-scale=1 và
không có gì khác.
là nó xếp hạng factor?
là precise ở đây, vì lot của SEO nội dung overstates nó. Ở đây chính xác Điều gì Google documents, và nơi line để ngành inference sits.
Điều gì Google documents: đó viewport tag là không một trực tiếp xếp hạng factor. Google own supported-meta-tags doc says plainly đó “presence of this tag indicates to Google that the page is mobile friendly” (bản dịch) «presence of này tag indicates để Google đó trang là mobile friendly» — đó là đó toàn bộ được ghi lại claim: presence các tín hiệu mobile-friendliness. Google không document đó tag as scored, as một kết xuất bảo đảm, hoặc as proof một trang responsive design là thực ra good.
Evidence for this claim Google documents that viewport-meta presence indicates a page is mobile friendly, but that statement does not establish that the tag itself is a ranking factor, a display guarantee or sufficient evidence of responsive quality. Scope: production HTML and HTTP responses Confidence: high · Verified: Meta tags and attributes that Google supportsnơi practitioners connect dots (ngành inference, không Google citation): bị thiếu hoặc misconfigured viewport tag là phổ biến root nguyên nhân của mobile-usability failures (tiny text, horizontal scroll, unusable tap targets) đó SEOs generally understand để degrade mobile trang experience. đó connection là reasonable và widely held trong ngành, nhưng nó practitioner inference về Vì sao tag matters — không điều gì đó tài liệu củ Google state as xếp hạng chain.
So honest cách diễn đạt: tag itself không phải scored, và khắc phục nó vì trang không có nó renders badly on phones — không vì Google documents nó as xếp hạng lever, trực tiếp hoặc gián tiếp. giữ điều này tách biệt từ mobile-đầu tiên lập chỉ mục cũng: đó distinct Google Search concept về mà version của bạn trang Google primarily dùng cho lập chỉ mục và xếp hạng; viewport tag là về Cách đó mobile HTML renders trong trình duyệt, đầy đủ dừng.
Evidence for this claim Mobile-first indexing means Google primarily uses the mobile content for indexing and ranking; it is a separate Google Search concept from the browser's viewport rendering contract. Scope: production HTML and HTTP responses Confidence: high · Verified: Mobile-first indexing best practicesCách kiểm thử nó — tooling changed trong 2023
Này là nơi hầu hết older các hướng dẫn là stale. On December 1, 2023, Google retired Search Console’s Mobile Usability báo cáo, đó Mobile-Friendly Kiểm thử tool, và đó Mobile-Friendly Kiểm thử API (announced April 2023, confirmed hoàn tất đó December). Google reasoning đã là đó other tools đã có matured — “many other robust resources for evaluating mobile usability have emerged, including Lighthouse from Chrome.” (bản dịch) «nhiều other robust các tài nguyên cho evaluating mobile usability có emerged, including Lighthouse từ Chrome.» So nếu một tutorial tells bạn để open Search Console → Mobile Usability để kiểm tra của bạn viewport, đó báo cáo không lâu hơn tồn tại.
Layer những điều này kiểm tra thay vì relying on một tool: xác nhận tag tồn tại trong thô phân phối HTML (không chỉ sau khi JavaScript chạy), xác nhận của bạn responsive breakpoints thực ra apply tại phone widths, kiểm thử zooming để 200% không có layout breaking ( resize behavior WCAG intent là được xây dựng khoảng), và spot-kiểm tra trong nhiều hơn một trình duyệt — iOS Safari-chỉ kiểm tra có thể hide zoom-restriction bug đó Android hoặc trong-app các trình duyệt vẫn enforce.
của bạn hiện tại toolkit:
- Lighthouse (trong Chrome DevTools). Đó relevant audit trong lịch sử đọc “Does
not have a
<meta name="viewport">tag withwidthorinitial-scale” (bản dịch) «Không có một tag với hoặc» — điều này fails trừ khi đó<head>có mộtmeta name="viewport"whosecontentbao gồmwidth=. As of Lighthouse 13 đây là folded vào đó “Optimize viewport for mobile” (bản dịch) «Optimize viewport cho mobile» insight. - PageSpeed Insights — chạy Lighthouse plus trường Core Web Vitals dữ liệu.
- Chrome DevTools device toolbar — emulate phone dimensions và eyeball điều này.
- Bing Mobile Friendliness Kiểm thử Tool — Bing kiểm tra viewport và zoom-control configuration cũng, và khuyến nghị đó giống nhau tag Google làm.
- View nguồn / real-device kiểm tra — sometimes đó fastest kiểm thử là để chỉ look
tại đó
<head>on của bạn phone.
phổ biến mistakes
- Không tag tại all (“viewport not set” (bản dịch) «viewport không set») — đó trang renders tại đó legacy desktop-ish width và shrinks.
- MỘT hardcoded pixel width như
width=1024thay vìdevice-width— một tag tồn tại, nhưng điều này vẫn không match đó trang để đó device. Lighthouse và real mobile-friendliness cả hai muốn một usablewidth=giá trị, không chỉ bất kỳ tag. initial-scaledưới 1 — có thể trigger đó legacy double-tap-zoom delay.user-scalable=no/ restrictivemaximum-scale— copy-pasted từ old boilerplate; accessibility anti-pattern, đã bỏ qua on iOS anyway.
cho nơi điều này sits trong rộng hơn mobile hoạt động — configuration, nội dung parity, speed — see mobile SEO hub, mobile SEO checklist, và mobile-đầu tiên lập chỉ mục. cho tag itself as part của wider on-trang tag family, meta tags cluster là map.
AI summary
condensed take on Nâng cao version:
- Đó viewport meta tag —
<meta name="viewport" content="width=device-width, initial-scale=1">— hints các trình duyệt để size đó layout viewport để đó device width trong CSS pixels thay vì một legacy ~980px fallback some mobile các trình duyệt dùng. đây là điều gì lets responsive CSS media các truy vấn evaluate so với đó device real width on mobile. - Không có điều này: some mobile các trình duyệt render đó trang tại đó wider fallback và shrink điều này — tiny text, horizontal scroll, breakpoints đó có thể không apply as dự kiến. Google: “Without a viewport meta tag, mobile devices render pages at typical desktop screen widths and then scale the pages down.” (bản dịch) «Không có một viewport meta tag, mobile devices render các trang tại typical desktop screen widths và thì quy mô đó các trang xuống.»
- Layout viewport so với. visual viewport:
width=device-widthsets đó layout viewport (điều gì media các truy vấn evaluate so với) và acts as một minimum width; pinch-zoom thay đổi đó visual viewport chỉ. - Các thuộc tính:
width,initial-scale,minimum-scale,maximum-scale,user-scalable, và đó newerinteractive-widgetvàviewport-fit(cả hai trình duyệt-layout các trường hợp biên, không SEO directives). Dùngwidth=device-width, initial-scale=1và không có gì khác. - Không bao giờ disable zoom:
user-scalable=no/ mộtmaximum-scaledưới2fails đó W3C ACT rule cho zoom (b4f0c3) và hoạt động so với WCAG resize intent — và iOS 10+ overrides điều này theo mặc định, so đây là an accessibility downside với zero upside anywhere. - Xếp hạng: Google documents chỉ đó presence “indicates to Google that the page is mobile friendly” (bản dịch) «indicates để Google đó trang là mobile friendly» — không đó tag là scored, và không một stated xếp hạng chain qua usability các tín hiệu (đó link là ngành inference, không một Google citation). Distinct từ mobile-đầu tiên lập chỉ mục (mà version là được lập chỉ mục, không cách điều này renders).
- Kiểm thử changed: Search Console’s Mobile Usability báo cáo, đó Mobile-Friendly Kiểm thử tool, và của nó API đã là retired Dec 1, 2023 — dùng Lighthouse, PageSpeed Insights, DevTools device toolbar, hoặc Bing Mobile Friendliness Kiểm thử; layer trong một 200%-zoom kiểm tra và hơn một trình duyệt.
- Các lỗi thường gặp: không tag, hardcoded
width=1024,initial-scale< 1, copy-pasteduser-scalable=no. Google và Bing khuyến nghị đó giống hệt giá trị.
Tài liệu chính thức
Chính-nguồn tài liệu và các tiêu chuẩn references.
- Meta tags và các thuộc tính đó Google hỗ trợ — lists đó viewport tag và trạng thái của nó presence “indicates to Google that the page is mobile friendly.” (bản dịch) «indicates để Google đó trang là mobile friendly.» Đó hiện tại, trực tiếp nguồn (Google dedicated older
configure-viewportdoc đã được retired). - Không có một
<meta name="viewport">tag với width hoặc ban đầu-quy mô (Lighthouse) — đó audit definition, đó desktop-width-fallback lời giải thích, và đó được khuyến nghị cách sửa code. - Điều gì đó Viewport? — Chrome cho Nhà phát triển / web.dev on đó legacy ~980px default và layout so với. visual viewport.
- Đó role of trang experience trong creating helpful nội dung (Apr 2023) — nơi Google announced đó Dec 1, 2023 retirement of đó Mobile Usability báo cáo và Mobile-Friendly Kiểm thử tool/API, pointing để Lighthouse.
Các tiêu chuẩn / kỹ thuật reference
<meta name="viewport">(MDN Web Tài liệu) — đó chính thuộc tính-by-thuộc tính reference:width,initial-scale,minimum-scale,maximum-scale,user-scalable,interactive-widget,viewport-fit, đó iOS 10+ override behavior, và đó WCAG accessibility warning.- MDN: Responsive design — đó viewport meta tag — đó đơn giản statement đó breakpoints và media các truy vấn “may not work as intended” (bản dịch) «có thể không hoạt động as dự kiến» không có đó tag.
- MDN: CSS viewport concepts — qualifies đó ~980px fallback để “some mobile browsers,” (bản dịch) «some mobile các trình duyệt,» không một universal default.
- W3C WAI: ACT rule “Meta viewport allows for zoom” (bản dịch) «Meta viewport cho phép cho zoom» (b4f0c3) — đó precise accessibility conformance kiểm thử:
user-scalable=novàmaximum-scaledưới2fail, với đó rule own applicability và assumptions spelled out.
Bing / Microsoft
- Bing Mobile Friendliness Kiểm thử Tool (trong Bing Quản trị viên web Tools) evaluates viewport và zoom-control configuration, nội dung width, text readability, tap-đích spacing, và incompatible plug-ins, và khuyến nghị giống nhau
width=device-width, initial-scale=1giá trị Google làm. (Bing help-doc các URL move periodically; kiểm tra hiện tại Bing Quản trị viên web Tools help center cho trực tiếp trang.)
Quotes từ nguồn
On—record statements từ tài liệu củ Google và MDN. mỗi link jumps để quoted passage on nguồn trang nơi deep link là khả dụng.
Google — Điều gì tag làm và Vì sao
- “Without a viewport meta tag, mobile devices render pages at typical desktop screen widths and then scale the pages down, making them difficult to read. Setting the viewport meta tag lets you control the width and scaling of the viewport so that it’s sized correctly on all devices.” (bản dịch) «Không có một viewport meta tag, mobile devices render các trang tại typical desktop screen widths và thì quy mô đó các trang xuống, đang làm them difficult để đọc. Setting đó viewport meta tag cho phép bạn control đó width và scaling of đó viewport so đó đây là sized correctly on all devices.» — Lighthouse / Chrome cho Nhà phát triển (Google). Nhảy đến trích dẫn
- “Presence of this tag indicates to Google that the page is mobile friendly.” (bản dịch) «Presence of này tag indicates để Google đó trang là mobile friendly.» — Meta tags và các thuộc tính đó Google hỗ trợ, Google Search Central tài liệu. Đọc đó doc
MDN — accessibility warning
- “Disabling zooming capabilities by setting
user-scalableto a value ofnoprevents people experiencing low vision conditions from being able to read and understand page content.” (bản dịch) «Disabling zooming capabilities by setting để một giá trị of ngăn mọi người experiencing thấp vision conditions từ đang able để đọc và understand trang nội dung.» — MDN Web Tài liệu. Đọc đó reference - On
user-scalable,minimum-scale, vàmaximum-scale: “Browser settings can ignore this rule, and iOS10+ ignores it by default.” (bản dịch) «Trình duyệt settings có thể bỏ qua này rule, và iOS10+ bỏ qua điều này theo mặc định.» Đọc đó reference
W3C — accessibility conformance kiểm thử cho zoom
- Applicability: “This rule applies to each
contentattribute on ametaelement with anameattribute value ofviewportfor which at least one of the following is true: thecontentattribute value has theuser-scalableproperty; or thecontentattribute value has themaximum-scaleproperty.” (bản dịch) «Này rule áp dụng để mỗi thuộc tính on một element với một thuộc tính giá trị of cho mà ít nhất một of đó sau là đúng: đó thuộc tính giá trị có đó thuộc tính; hoặc đó thuộc tính giá trị có đó thuộc tính.» Expectation: đó thuộc tính giá trị không được setuser-scalableđểno, và không được setmaximum-scaledưới2. — W3C WAI, ACT rule “Meta viewport allows for zoom” (bản dịch) «Meta viewport cho phép cho zoom» (b4f0c3). Đọc đó rule
MDN — qualifying legacy fallback và breakpoint behavior
- “If the site isn’t designed to work well on small viewports and this tag is omitted, some mobile browsers render the site using a fixed initial containing block width, typically 980px.” (bản dịch) «Nếu đó site không designed để hoạt động well on nhỏ viewports và này tag là omitted, some mobile các trình duyệt render đó site dùng một fixed ban đầu containing block width, typically 980px.» — MDN, CSS viewport concepts. Đọc đó reference
- “Without it, your responsive design with breakpoints and media queries may not work as intended on mobile browsers.” (bản dịch) «Không có điều này, của bạn responsive design với breakpoints và media các truy vấn có thể không hoạt động as dự kiến on mobile các trình duyệt.» — MDN, Responsive design hướng dẫn. Đọc đó reference
Google — retiring mobile tools (Dec 2023) (qua công cụ tìm kiếm Land verbatim coverage)
- “In the nearly ten years since we initially launched this report, many other robust resources for evaluating mobile usability have emerged, including Lighthouse from Chrome.” (bản dịch) «Trong đó nearly ten năm since we initially launched này báo cáo, nhiều other robust các tài nguyên cho evaluating mobile usability có emerged, including Lighthouse từ Chrome.» Đọc bài đưa tin
Mà viewport configuration nên I sử dụng?
cho gần như mỗi trang web câu trả lời là giống nhau một line — nhưng mọi người talk themselves vào “clever” variants đó nguyên nhân các vấn đề. Nhấp qua để land on right giá trị (và để rule out anti-patterns).
Choosing your viewport meta tag value
Viewport tag checklist
nhanh truyền để xác nhận tag là present và sane:
-
<meta name="viewport">tag tồn tại trong<head>(view nguồn hoặc kiểm tra của bạn template/theme head một phần). - nó placed cao trong
<head>, nearcharset, trước khi nội dung-phụ thuộc tags. -
contentgiá trị làwidth=device-width, initial-scale=1. -
widthlàdevice-width— không hardcoded pixel number như1024. -
initial-scalelà1— không dưới 1 (tránh double-tap-zoom delay). - Không
user-scalable=novà không restrictivemaximum-scale(zoom vẫn giữ enabled — accessibility). - Verified với Lighthouse hoặc PageSpeed Insights (không retired Mobile-Friendly Kiểm thử / Mobile Usability báo cáo).
- Spot-checked on thực phone hoặc trong Chrome DevTools device toolbar — text là readable, không horizontal scroll.
- của bạn responsive CSS breakpoints thực ra apply tại phone widths (họ có thể không có đúng viewport tag).
- Zoomed để 200% và layout vẫn hoạt động không có nội dung getting clipped.
- Spot-checked trong nhiều hơn một trình duyệt/engine, không chỉ của bạn default — iOS-chỉ kiểm tra có thể hide zoom restriction đó khác các trình duyệt vẫn enforce.
Viewport meta tag — bảng tra nhanh
** một line bạn muốn**
<meta name="viewport" content="width=device-width, initial-scale=1">Google, Bing, và Lighthouse all khuyến nghị điều này chính xác giá trị.
Thuộc tính reference
| Directive | sử dụng | Notes |
|---|---|---|
width | device-width | hoặc 1–10000 px; sử dụng device-width. |
initial-scale | 1 | 0,0–10,0; dưới 1 triggers double-tap-zoom delay. |
minimum-scale | (omit) | iOS 10+ bỏ qua. |
maximum-scale | (omit) | iOS 10+ bỏ qua; không restrict zoom. |
user-scalable | (omit; default yes) | no = fails zoom accessibility rule; iOS 10+ overrides nó. |
interactive-widget | (tùy chọn) | resizes-visual (default) / resizes-content / overlays-content. |
Symptoms of một bị thiếu/hỏng tag
- Tiny, unreadable text on mobile.
- Horizontal scrolling / pinch-để-zoom needed.
- Responsive breakpoints không applying as dự kiến on phones.
- “Viewport not set” (bản dịch) «Viewport không set» trong an audit.
Làm / không
- ✅
width=device-width, initial-scale=1, cao trong<head>. - ❌ Hardcoded
width=1024. - ❌
initial-scaledưới 1. - ❌
user-scalable=no/maximum-scale=1.
Xếp hạng reality: không trực tiếp xếp hạng factor. Google documents chỉ đó của nó presence indicates mobile-friendliness — usability→trang-experience chain là ngành inference, không Google-được ghi lại xếp hạng mechanism.
Kiểm thử với: Lighthouse · PageSpeed Insights · Chrome DevTools device toolbar · Bing Mobile Friendliness Kiểm thử. không Mobile-Friendly Kiểm thử hoặc Search Console Mobile Usability báo cáo — cả hai retired Dec 1, 2023.
Viewport anti-patterns
four ways mọi người nhận điều này tag sai, và Điều gì để làm thay vì.
1. Disabling zoom (user-scalable=no / maximum-scale=1).
Đó intent là thường “stop pinch-zoom from breaking my layout.” (bản dịch) «dừng pinch-zoom từ breaking my layout.» Đó reality: điều này
fails đó W3C accessibility conformance rule cho zoom và locks thấp-vision người dùng
out of scaling text, và iOS 10+ overrides điều này theo mặc định — so điều này làm không có gì on một
huge share of traffic trong khi vẫn failing đó accessibility kiểm thử on đó các trình duyệt
đó làm honor điều này. Cách sửa: xóa điều này hoàn toàn; giữ chỉ width=device-width, initial-scale=1.
2. Hardcoding pixel width (width=1024).
viewport tag tồn tại, so audits đôi khi half-truyền, nhưng trang là vẫn pinned
để fixed width đó không match thực devices. khắc phục: sử dụng width=device-width.
3. initial-scale dưới 1 để “fit more on screen.” (bản dịch) «fit hơn on screen.»
Shrinking đó ban đầu zoom có thể trigger đó legacy double-tap-để-zoom behavior đó
adds interaction delay, và điều này làm text nhỏ hơn cho mọi người. Cách sửa:
initial-scale=1 và let của bạn responsive CSS xử lý layout.
4. Relying on đó retired GSC Mobile Usability báo cáo để catch các vấn đề. Đó báo cáo, đó Mobile-Friendly Kiểm thử tool, và của nó API đã là retired December 1, 2023. Nếu của bạn QA xử lý vẫn says “check Mobile Usability,” (bản dịch) «kiểm tra Mobile Usability,» đây là silently đang làm không có gì. Cách sửa: audit với Lighthouse / PageSpeed Insights thay vì.
Bonus — treating tag as xếp hạng lever. nó không một. Thêm nó sẽ không lift thứ hạng; nó chỉ làm trang render correctly so nó có thể truyền mobile-friendliness kiểm tra đó làm feed trang experience. đặt nó sau khi, correctly, và move on.
kiểm tra và audit của bạn viewport tag
Ways để verify tag trên trang hoặc toàn bộ trang web, từ nhanh console snippet để crawl.
DevTools console — inspect đó hiện tại trang viewport tag
// Paste into the Chrome DevTools console on the page you're checking.
const vp = document.querySelector('meta[name="viewport"]');
if (!vp) {
console.warn('❌ No viewport meta tag — "viewport not set".');
} else {
const c = vp.getAttribute('content') || '';
console.log('viewport content:', c);
console.log(/width\s*=\s*device-width/i.test(c) ? '✅ width=device-width' : '⚠️ width is not device-width');
console.log(/user-scalable\s*=\s*no/i.test(c) || /maximum-scale\s*=\s*[01](\.0)?\b/i.test(c)
? '⚠️ zoom is restricted — accessibility anti-pattern' : '✅ zoom not restricted');
}Bookmarklet — một-nhấp kiểm tra
javascript:(function(){var v=document.querySelector('meta[name=viewport]');alert(v?('viewport: '+v.content):'NO VIEWPORT TAG (viewport not set)');})();Shell — fetch một URL và grep đó thô HTML head
# Prints the viewport tag from a page's server-rendered HTML (or nothing if absent).
curl -s https://example.com | grep -io '<meta[^>]*name=["'\'']*viewport[^>]*>'Shell — flag các trang đó restrict zoom trên một list of URLs
# urls.txt = one URL per line. Prints any page whose viewport disables/limits zoom.
while read -r u; do
html=$(curl -s "$u")
echo "$html" | grep -iq 'name=["'\'']*viewport' || { echo "MISSING $u"; continue; }
echo "$html" | grep -io '<meta[^>]*viewport[^>]*>' | grep -Eiq 'user-scalable=no|maximum-scale=[01]' \
&& echo "ZOOM-OFF $u"
done < urls.txtRegex — match đó tag trong nguồn (cho một code tìm kiếm / linter rule)
<meta[^>]+name=["']?viewport["']?[^>]*>Để flag đó anti-pattern cụ thể, tìm kiếm:
viewport[^>]*(user-scalable\s*=\s*no|maximum-scale\s*=\s*[01])cho toàn bộ-trang web sweep, crawler (Screaming Frog, Ahrefs trang web Audit) là nhanh hơn scripting — see Tools tab.
Tools cho kiểm tra viewport tag
- Lighthouse (Chrome DevTools → Lighthouse, hoặc đó CLI) — đó trực tiếp replacement cho đó retired Mobile-Friendly Kiểm thử; chạy đó viewport audit (“Optimize viewport for mobile” (bản dịch) «Optimize viewport cho mobile» trong Lighthouse 13+) plus đó rest of mobile usability và performance.
- PageSpeed Insights — Lighthouse trong đó trình duyệt, với trường Core Web Vitals dữ liệu alongside đó lab audit.
- Chrome DevTools device toolbar — toggle device emulation và eyeball đó trang tại phone dimensions; đó fastest way để see một hỏng viewport.
- Bing Mobile Friendliness Kiểm thử Tool (Bing Quản trị viên web Tools) — kiểm tra viewport và zoom-control configuration và khuyến nghị đó giống nhau tag.
- Screaming Frog SEO Spider / Ahrefs Site Audit — crawl đó toàn bộ site và surface các trang bị thiếu đó viewport tag (hoặc restricting zoom) tại quy mô, thay vì kiểm tra URLs một tại một time.
- View nguồn on của bạn phone — đó lowest-tech kiểm tra: là đó tag thực ra trong đó
<head>of đó phân phối HTML?
Note retirements: Search Console’s Mobile Usability báo cáo, Mobile-Friendly Kiểm thử tool, và Mobile-Friendly Kiểm thử API là all retired on December 1, 2023 — không reach cho them.
viewport tag là present nhưng trang vẫn looks desktop-sized
Symptom: nguồn contains viewport tag, tuy vậy phones hiển thị tiny text hoặc wide layout.
có khả năng nguyên nhân: có duplicate viewport tags, tag là injected cũng muộn, hoặc
responsive CSS không bao giờ loads. khắc phục: giữ một tag trong máy chủ-được kết xuất <head>,
xóa conflicting copies, và verify đó dự kiến media các truy vấn là applied trong
được kết xuất trang.
Mobile layout hoạt động tại đầu tiên và sau đó jumps wider
Symptom: ban đầu layout fits, sau đó horizontal scrolling xuất hiện sau khi load. có khả năng nguyên nhân: JavaScript adds fixed-width widget, bảng, banner, hoặc iframe sau khi viewport là established. khắc phục: inspect được kết xuất DOM tại moment overflow bắt đầu và constrain injected element. Thay đổi viewport giá trị không thể repair element Đó là intrinsically wider hơn screen.
Pinch zoom là blocked
Symptom: người dùng không thể zoom, mặc dù trang nếu không fits. có khả năng nguyên nhân:
user-scalable=no hoặc restrictive maximum-scale vẫn trong viewport nội dung.
khắc phục: xóa những điều đó restrictions và retest với trình duyệt zoom và OS text scaling.
không treat iOS override as proof đó markup là accessible mọi nơi.
crawler các báo cáo tag bị thiếu nhưng trình duyệt hiển thị nó
Symptom: được kết xuất trình duyệt sees tag, trong khi thô-HTML crawler không. có khả năng nguyên nhân: client-side JavaScript inserts nó. khắc phục: emit tag trong ban đầu document head. foundational kết xuất instruction nên không phụ thuộc on script đang chạy successfully.
Validate viewport-tag thay đổi
| Kiểm thử để chạy | Dự kiến kết quả | thất bại interpretation | Monitoring window | Rollback trigger |
|---|---|---|---|---|
View ban đầu HTML phản hồi và inspect <head> | Chính xác một viewport tag contains width=device-width, initial-scale=1 | tag là bị thiếu, duplicated, hoặc phụ thuộc on JavaScript | mỗi template phát hành | Roll lại nếu shared template xóa hoặc duplicates tag |
| Load trang tại several phone widths trong DevTools | CSS media các truy vấn activate tại dự kiến widths và nội dung fits | viewport là đúng nhưng responsive CSS hoặc fixed-width child là hỏng | trước khi và immediately sau khi deployment | Roll lại nếu chính nội dung hoặc navigation becomes unusable |
| Chạy Lighthouse với mobile profile | viewport audit truyền | phân phối hoặc được kết xuất configuration vẫn ngăn mobile-sized layout | trước khi và sau khi thay đổi | Roll lại nếu thay đổi introduces một cao-impact mobile thất bại |
| Kiểm thử pinch zoom và increased text size on physical phone | Người dùng có thể zoom và text reflows không có clipping | Scaling restrictions hoặc fixed-height components vẫn | Phát hành day và sau khi design-hệ thống thay đổi | Roll lại nếu essential controls không thể là reached tại enlarged text sizes |
| Crawl sample từ mỗi trang template sử dụng thô HTML | mỗi sample exposes giống nhau hợp lệ tag trong head | template hoặc kết xuất path có inconsistent markup | sau khi deployment và trong scheduled template QA | Roll lại affected template nếu các trang revert để legacy desktop viewport |
các tài nguyên worth của bạn time
My related writing
- Người mới bắt đầu Hướng dẫn để kỹ thuật SEO — nơi mobile kết xuất và trang experience fit bigger kỹ thuật picture.
- Core Web Vitals: Điều gì họ là & Cách Improve Yours — performance side của mobile experience đó sits tiếp theo để viewport tag.
My speaking
- Cách Tìm kiếm Hoạt động (SlideShare) — my walkthrough of crawling, kết xuất, lập chỉ mục, và xếp hạng, including cách Googlebot crawl và renders as một smartphone. (Standing disclaimer: “This is my understanding of systems… not going to be 100% complete or accurate.” (bản dịch) «Này là my understanding of các hệ thống… không going để là 100% hoàn tất hoặc chính xác.»)
từ khoảng ngành
<meta name="viewport">(MDN Web Tài liệu) — precise thuộc tính-by-thuộc tính reference, iOS override behavior, và WCAG accessibility warning.- không có
<meta name="viewport">tag với width hoặc ban đầu-quy mô (Lighthouse) (Chrome cho Nhà phát triển) — audit definition, desktop-width-fallback lời giải thích, và được khuyến nghị khắc phục. - Điều gì Viewport? (Chrome cho Nhà phát triển) — legacy ~980px default và layout so với. visual viewport, explained by Google.
- Meta tags và các thuộc tính đó Google hỗ trợ (Google Search Central) — hiện tại doc đó names viewport tag as mobile-friendliness tín hiệu.
- Google Officially Drops Mobile Usability Báo cáo, Mobile-Friendly Kiểm thử Tool và API (công cụ tìm kiếm Land) — December 2023 retirements và Lighthouse khuyến nghị.
- Bạn có thể dừng sử dụng người dùng-scalable=không và maximum-quy mô=1 trong viewport meta tags hiện tại (Luke Plant) — background on Vì sao restrictive zoom các thuộc tính existed và Vì sao họ’re obsolete và overridden on iOS.
- Người mới bắt đầu Hướng dẫn để Viewport Meta Tags (Semrush) — well-rounded đối thủ explainer covering
interactive-widget, iOS 10 override, và WCAG warning.
Tự kiểm tra: Viewport Meta Tag
Five nhanh các câu hỏi on viewport meta tag. Pick câu trả lời cho mỗi, sau đó kiểm tra.
Nhật ký thay đổi
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 18 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.