レスポンシブ対応のviewportメタタグ生成ツール
属性の正確な順序や句読点を暗記せずに、レスポンシブ対応のviewportメタタグを生成できます。一般的なモバイル対応にはdevice-widthを選び、意図的に固定viewportを使う場合は正の数値幅を入力してから初期倍率を設定してください。結果には、ドキュメントのheadへそのままコピーできる完全なHTMLタグ、contentの値、さらにスクリプト、テンプレート、テスト、自動ビルド処理で扱いやすい正規化済み設定が含まれます。
無料で実行
viewport幅を目的に合わせて選択します
viewport宣言は、ページのレイアウトviewportと画面の関係をモバイルブラウザーへ伝えます。多くのレスポンシブサイトでは、device-widthが適切です。デバイスのCSSピクセル幅に追従し、利用可能な領域に応じてメディアクエリを動作させられるためです。この生成ツールでは、固定され管理されたviewportが本当に必要な場合に限り、正の数値幅も指定できます。たとえば、旧式の埋め込み画面、再現可能なブラウザーフィクスチャ、互換性テストなどに利用できます。数値にはpxを付けずに入力してください。375は有効ですが、375pxはこの宣言の幅として無効です。ゼロ、負数、空欄、有限でない値、任意の単語は、もっともらしいだけのマークアップへ混入させず、明確に拒否します。返される幅は正規化されるため、375という数値テキストは安定したwidth=375になります。この限定的な検証により、自動処理でも出力を信頼できます。成功時の幅は、正確な標準キーワードまたは正の数値のどちらかであり、隠れたスペル補正やブラウザー依存の推測は行われません。
初期倍率を設定してタグをコピーします
初期倍率は、ページを最初に読み込んだ時点のズーム倍率を制御します。一般的には1を使用します。利用者がズームする前に、1つのCSSピクセルをviewport上の1つのCSSピクセルへ対応させる設定です。既定値は1ですが、特定のテストやアプリケーション要件がある場合は、別の正の有限数も指定できます。生成ツールはこの設定を幅とは別に検証し、数値としての意味を安定したテキスト形式で保持します。その後、<meta name="viewport" content="width=device-width, initial-scale=1">のような完全なタグを生成します。ブラウザーごとに相互作用が変わり得る複数のviewport宣言を追加せず、ドキュメントのhead内に原則として1回だけ配置してください。応答にはcontent文字列と、正規化されたwidthおよびinitial_scaleも含まれます。HTMLへ書き込む場合はmeta_tag、content属性だけを求めるフレームワークではcontent、テストで設定を検証する場合は個別フィールドを利用できます。ネットワーク要求、ページ検査、user agent判定は結果に影響せず、同一入力はブラウザーでもAPIでも常に同じ出力になります。
自動追加されない設定を確認します
この機能が意図的に生成するのはwidthとinitial-scaleだけです。maximum-scale、minimum-scale、user-scalable、viewport-fit、interactive-widgetなどの任意ディレクティブは追加しません。これらは自動的な既定値ではなく、製品設計とアクセシビリティを考慮して決める必要があるためです。特にズームの制限は、拡大を必要とする方にとってコンテンツを使いにくくする可能性があり、小さな生成ツールが無断で導入すべき動作ではありません。また、既存ページの監査、重複タグの検出、レスポンシブブレークポイントの試験、CSS自体がレスポンシブであることの証明も行いません。指定された2つの設定から決定論的なマークアップを作成します。結果を追加した後は、狭い画面と広い画面でページを確認し、文字が読みやすいこと、操作部品がはみ出さないことを確かめ、実際のブラウザーでズームを試してください。テンプレートを使うプロジェクトでは、全ルートへ同じ方針を適用できるよう、共有headコンポーネントに宣言を置きます。このページの対話操作はブラウザー内で無料です。自動API要求は$0.002です。同じ純粋なソルバーが両方を処理するため、手動で確認したタグを形式や検証規則を変えずにビルドスクリプトへ移せます。
活用例
レスポンシブページを作り始める
新しいHTMLドキュメントや共有レイアウトテンプレート向けに、標準的なdevice-widthとinitial-scaleの宣言を作成します。
決定論的なフィクスチャを用意する
明示的で再現可能なレイアウト幅を必要とするブラウザーテスト用に、固定数値のviewport宣言を生成します。
設定出力を正規化する
フォームやスクリプトの設定を、安定したタグと、検証およびスナップショットテスト用の個別フィールドへ変換します。
よくある質問
レスポンシブサイトではどの幅を使えばよいですか?
一般的なレスポンシブ設計ではdevice-widthを使用します。デバイスのviewport幅をCSSピクセル単位で反映します。
固定幅を入力できますか?
はい。単位を付けずに375のような正の数値を入力してください。ゼロ、負数、有限でない値、数値でない値は拒否されます。
初期倍率はどれを使えばよいですか?
一般的な既定値は1です。プロジェクトに明確な要件がある場合は、別の正の有限数も指定できます。
生成結果はズームを無効にしますか?
いいえ。user-scalable、maximum-scale、minimum-scaleの各ディレクティブは追加しません。
メタタグはどこへ置きますか?
HTMLのhead内に1回だけ配置してください。同じドキュメントに競合するviewport宣言を複数置かないでください。
APIリクエストの料金はいくらですか?
成功したAPIリクエスト1回につき$0.002です。このページではブラウザー内で無料で実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/web/viewport-meta-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width":"device-width"}'const res = await fetch("https://api.kit.forhosting.com/web/viewport-meta-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width": "device-width"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/viewport-meta-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width": "device-width"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/viewport-meta-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width":"device-width"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width":"device-width"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/viewport-meta-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"width": "device-width"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.viewport_meta_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
timeout_sec | 30 |
max_crawl_pages | 25 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |