目次
回复内容:
ホームページ ウェブフロントエンド H5 チュートリアル content"width=640,user-scalable=no" 然后再进行固定尺寸的px设计?

content"width=640,user-scalable=no" 然后再进行固定尺寸的px设计?

Jun 07, 2016 am 08:43 AM
content device user width

content"width=640,user-scalable=no" 然后再进行固定尺寸的px设计? 竟然也可以达到自适应的布局在手机上面
咱们不都是通常viewport content="width=device-width么 那么上面这种有没有什么坑呢 ,那么以后我是t content="width=device-width css3媒体查询 还是用content"width=640,user-scalable=no"这样的方法呢 我需要兼容手机浏览器和apk的webview

回复内容:

結論:content"width=640,user-scalable=no" 是一個很好的解決方案,荔枝FM,人人都是播客的移動站使用的就是此方案
固定宽度,viewport 缩放

视觉稿、页面宽度、viewport width 使用统一宽度,利用浏览器自身缩放完成适配。页面样式(包括图像元素)完全按照视觉稿的尺寸,使用定值单位 (px、em)即可完成。

优点:
  • 开发简单 缩放交给浏览器,完全按视觉稿切图。
  • 还原精准 绝对等比例缩放,可以精准还原视觉稿(不考虑清晰度的情况下)。
  • 测试方便 在PC端即可完成大部分测试,手机端只需酌情调整一些细节(比如图标、字体混合排列时,因为字体不同造成的对齐问题)。
存在的问题:
  • 像素丢失 对于一些分辨率较低的手机,可能设备像素还未达到指定的 viewport 宽度,此时屏幕的渲染可能就不准确了。比较常见的是边框“消失”了,不过随着手机硬件的更新,这个问题会越来越少的。
  • 缩放失效 某些安卓机不能正常的根据 meta 标签中 width 的值来缩放 viewport,需要配合initial-scale
  • 文本折行 存在于缩放失效的机型中,某些手机为了便于文本的阅读,在文本到达 viewport 边缘(非元素容器的边缘)时即进行折行,而当 viewport 宽度被修正后,浏览器并没有正确的重绘,所以就发现文本没有占满整行。一些常用的段落性文本标签会存在该问题。

缩放失效问题需通过 js 动态设定 initial-scale


利用 rem 布局

依照某特定宽度设定 rem 值(即 html 的 font-size),页面任何需要弹性适配的元素,尺寸均换算为 rem 进行布局;当页面渲染时,根据页面有效宽度进行计算,调整 rem 的大小,动态缩放以达到适配的效果。利用该方案,还可以根据 devicePixelRatio 设定 initial-scale 来放大 viewport,使页面按照物理像素渲染,提升清晰度。

优点:
  • 清晰度高,能达到物理像素的清晰度。
  • 能解决 DPR 引起的“1像素”问题。
  • 向后兼容较好,即便屏幕宽度增加、PPI 增加该方案依旧适用。
缺点:
  • 适配 js 需尽可能早进入,减少(避免)viewport 变化引起的重绘。
  • 某些Android机会丢掉 rem 小数部分。
  • 需要预编译库进行单位转换。
(轉自MobileWeb 适配总结) 别的不多说了,强烈建议看看前几天刚写的一篇文章:使用Flexible实现手淘H5页面的终端适配 应该能让你找到需要的答案 你在用的可能是:
 <span class="nt"><meta</span> <span class="na">name=</span><span class="s">"viewport"</span> <span class="na">content=</span><span class="s">"target-densitydpi=device-dpi,width=640,user-scalable=no"</span> <span class="nt">/></span>
ログイン後にコピー
这种做法就本质上是对界面进行线性缩放来适应不同大小的屏幕。对于一定尺寸范围内的设备是可以的。但如果想开发出跨越平板和手机的界面则不太合适。因为手机和平板屏幕尺寸差异太大,会导致缩放太大而是界面元素显得不太和谐。所以最好采用非线性缩放的办法。

<span class="c1">//首先检查浏览器类型</span>
<span class="kd">var</span> <span class="nx">browser</span> <span class="o">=</span> <span class="nx">getBrowser</span><span class="p">();</span>

<span class="k">if</span> <span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nx">top</span> <span class="o">===</span> <span class="nb">window</span><span class="p">)</span> <span class="p">{</span>
	<span class="kd">var</span> <span class="nx">s</span><span class="p">,</span> <span class="nx">t</span><span class="p">,</span> <span class="nx">sw</span><span class="p">;</span>
	<span class="k">if</span> <span class="p">(</span><span class="nx">browser</span> <span class="o">===</span> <span class="s1">'Gecko'</span><span class="p">)</span> <span class="p">{</span>
		<span class="nx">s</span> <span class="o">=</span> <span class="nx">calcRato</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">screen</span><span class="p">.</span><span class="nx">width</span><span class="p">,</span> <span class="nx">screen</span><span class="p">.</span><span class="nx">height</span><span class="p">));</span>
		<span class="nb">document</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="s1">'<meta name="viewport" content="width='</span> <span class="o">+</span> <span class="mi">100</span> <span class="o">/</span> <span class="nx">s</span> <span class="o">+</span> <span class="s1">'%, user-scalable=no, initial-scale='</span> <span class="o">+</span> <span class="nx">s</span> <span class="o">+</span> <span class="s1">'"/>'</span><span class="p">);</span>
	<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">browser</span> <span class="o">===</span> <span class="s1">'Trident'</span><span class="p">)</span> <span class="p">{</span>
		<span class="nb">document</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="s1">'<meta name="viewport" content="width=device-width, user-scalable=no"/>'</span><span class="p">);</span>
		<span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">zoom</span> <span class="o">=</span> <span class="nx">calcRato</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">screen</span><span class="p">.</span><span class="nx">width</span><span class="p">,</span> <span class="nx">screen</span><span class="p">.</span><span class="nx">height</span><span class="p">));</span>
	<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
		<span class="nx">t</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'meta'</span><span class="p">);</span>
		<span class="nx">t</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="s1">'viewport'</span><span class="p">;</span>
		<span class="nx">t</span><span class="p">.</span><span class="nx">content</span> <span class="o">=</span> <span class="s1">'width=device-width, user-scalable=no, initial-scale=1'</span><span class="p">;</span>
		<span class="nb">document</span><span class="p">.</span><span class="nx">head</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">t</span><span class="p">);</span>
		<span class="nx">sw</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">screen</span><span class="p">.</span><span class="nx">width</span><span class="p">,</span> <span class="nx">screen</span><span class="p">.</span><span class="nx">height</span><span class="p">);</span>
		<span class="k">if</span> <span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">screen</span><span class="p">.</span><span class="nx">width</span> <span class="o">/</span> <span class="nb">window</span><span class="p">.</span><span class="nx">innerWidth</span><span class="p">,</span> <span class="nx">screen</span><span class="p">.</span><span class="nx">height</span> <span class="o">/</span> <span class="nb">window</span><span class="p">.</span><span class="nx">innerHeight</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
			<span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">zoom</span> <span class="o">=</span> <span class="nx">calcRato</span><span class="p">(</span><span class="nx">sw</span> <span class="o">/</span> <span class="nx">devicePixelRatio</span><span class="p">);</span>
		<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
			<span class="nx">s</span> <span class="o">=</span> <span class="nx">calcRato</span><span class="p">(</span><span class="nx">sw</span><span class="p">);</span>
			<span class="nx">t</span><span class="p">.</span><span class="nx">content</span> <span class="o">=</span> <span class="s1">'width='</span> <span class="o">+</span> <span class="mi">100</span> <span class="o">/</span> <span class="nx">s</span> <span class="o">+</span> <span class="s1">'%, user-scalable=no, initial-scale='</span> <span class="o">+</span> <span class="nx">s</span><span class="p">;</span>
		<span class="p">}</span>
	<span class="p">}</span>
<span class="p">}</span>

<span class="kd">function</span> <span class="nx">calcRato</span><span class="p">(</span><span class="nx">sw</span><span class="p">)</span> <span class="p">{</span>
	<span class="c1">//离散放大级别</span>
	<span class="kd">var</span> <span class="nx">step</span> <span class="o">=</span> <span class="mf">0.125</span><span class="p">;</span>
	<span class="c1">//基准宽度为320px</span>
	<span class="kd">var</span> <span class="nx">zoom</span> <span class="o">=</span> <span class="nx">sw</span> <span class="o">/</span> <span class="mi">320</span><span class="p">;</span>
	<span class="c1">//放大时不使用线性算法</span>
	<span class="k">if</span> <span class="p">(</span><span class="nx">zoom</span> <span class="o">></span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
		<span class="nx">zoom</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nx">zoom</span><span class="p">)</span> <span class="o">/</span> <span class="nx">step</span><span class="p">)</span> <span class="o">*</span> <span class="nx">step</span><span class="p">;</span>
	<span class="p">}</span>
	<span class="k">return</span> <span class="nx">zoom</span><span class="p">;</span>
<span class="p">}</span>
ログイン後にコピー
对,我也是用这种方法比较方便。不过由于宽高等比缩放后,在元素定位布局时很多手机的屏幕就不够高,因此还是得媒体查询做些细节上的调节 用过这种代码写hybrid app效果还行,核心区别就在于它没有媒体查询,手机,平板都长一个样,等比缩放不仔细看效果也不差(毕竟会变形),如果你只需要开发个大部分机型适配的页面,我觉得这么写挺好
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

htmlの幅とは何を意味するのでしょうか? htmlの幅とは何を意味するのでしょうか? Jun 03, 2021 pm 02:15 PM

HTML5 では、width は幅を意味します。width 属性は要素のコンテンツ領域の幅を定義します。コンテンツ領域の外側に内側のマージン、境界線、および外側のマージンを追加できます。「要素 {width: value}」を設定するだけで済みます。要素。

Linux でビジー状態のデバイスの問題を解決する Linux でビジー状態のデバイスの問題を解決する Jan 02, 2024 pm 03:44 PM

Linux でアンマウント デバイスを管理する場合、ファイル システムをアンマウントするときにこの状況が発生し、アンマウント対象のディレクトリにいない場合に、「deviceisbusy」が発生することがよくあります。その場合、そのディレクトリを使用しているユーザーまたはプロセスが存在する可能性があります。 #umount/mntumount:/mnt:deviceisbusyumount:/mnt:deviceisbusy 次に、fuser コマンドを使用して、プロセスのプロセス ID と所有者を表示する必要があります。例: #fuser-mu/mnt/mnt:25781c(root)#kill- 925781#umount/ mnt はこんな感じ

Docker マウントディレクトリの権限の問題を解決する方法 Docker マウントディレクトリの権限の問題を解決する方法 Feb 29, 2024 am 10:04 AM

Docker では、マウント ディレクトリの権限の問題は通常、-v パラメータを使用してマウント ディレクトリを指定するときに権限関連のオプションを追加することで解決できます。マウントされたディレクトリのアクセス許可を指定するには、マウントされたディレクトリの後に ro または :rw を追加します。それぞれ、読み取り専用と読み取り/書き込みアクセス許可を示します。例: dockerrun-v/host/path:/container/path:roimage_name Dockerfile で USER ディレクティブを定義してコンテナ内で実行するユーザーを指定し、コンテナ内での操作が権限要件に準拠していることを確認します。例: FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

WIN10 Home Edition システムでデバイスを無効にする方法は? WIN10 Home Edition システムでデバイスを無効にする方法は? Jan 17, 2024 pm 03:57 PM

Windows 10 オペレーティング システムは、間違いなく今日最も影響力のあるオペレーティング システムの 1 つであり、非常に強力なデバイス管理機能を備えています。この強力な機能には、デバイスの有効化と無効化が含まれます。 WIN10 Home Edition システムでデバイスを無効にする方法 方法 1: デバイス マネージャーでデバイスを無効にする 1. まず、デバイス マネージャーを開いてみましょう。方法は 3 つあります。 (1) キーボードの WIN+X キーを押して、[デバイス マネージャー] を選択します。 (2)スタートメニューに「デバイスマネージャー」と直接入力してクリック! (3) コントロール パネルでデバイス マネージャーを見つけて選択します。 2. 次に、デバイスリストで無効にするデバイスを見つけます。クリックして無効にします。 Ps: ここでは、システムに接続されているすべてのデバイスが表示されます

CSSで幅の値を表現するにはどのような方法がありますか? CSSで幅の値を表現するにはどのような方法がありますか? Nov 13, 2023 pm 05:47 PM

メソッドには、ピクセル値、パーセンテージ、em 単位、rem 単位、vw/vh 単位、auto、fit-content、min-content、max-content が含まれます。詳細な紹介: 1. ピクセル値 (px): ピクセル値は固定されており、画面解像度がどのように変化してもその幅は変わりません。例: width: 300px; 2. パーセント (%): 幅のパーセントは、親要素の幅を基準にしています。例: width: 50%; 3、em 単位など。

CentOS7でPCIデバイスを検索する機能が欠けている場合の解決方法 CentOS7でPCIデバイスを検索する機能が欠けている場合の解決方法 Jan 05, 2024 am 09:08 AM

XilinxPCIEdemo を使用しているときに、xapp1022 が提供する Linux ドライバーをコンパイルしたところ、pci_find_device 関数が見つからないというエラー メッセージが表示されました。このドライバはfedora用と説明にあり、現在の環境はCentos7です。ドライバーで使用されているヘッダー ファイルは PCI に関連する linux/pci.h だけなので、調べてみたところ、存在しませんでした。ライブラリをインストールする必要があるのではないかと考えて検索したところ、pciutils を見つけました。インストール後、以下を再コンパイルしましたが、やはり失敗しました。ヘッダー ファイルをもう一度見ると、追加の pci フォルダーがあり、その中に pci.h が含まれています。この pci.h には多くの関数宣言がありますが、pci_find_devi はありません。

デバイスドライバーのブルースクリーンでスレッドスタックを修正する5つの方法 デバイスドライバーのブルースクリーンでスレッドスタックを修正する5つの方法 Mar 25, 2024 pm 09:40 PM

一部のユーザーは、Microsoft の 3 月の Win11 アップデート パッチ KB5035853 をインストールした後、ブルー スクリーン オブ デス エラーが発生し、システム ページに「ThreadStuckinDeviceDriver」が表示されたと報告しました。このエラーはハードウェアまたはドライバーの問題によって発生する可能性があることが理解されています。ここでは、コンピューターのブルー スクリーンの問題をすぐに解決できる 5 つの修正方法を紹介します。方法 1: システム ファイル チェックを実行する コマンド プロンプトで [sfc/scannow] コマンドを実行すると、システム ファイルの整合性の問題を検出して修復できます。このコマンドの目的は、欠落または破損したシステム ファイルをスキャンして修復し、システムの安定性と通常の動作を確保することです。方法 2: 1. 「ブルー スクリーン修復ツール」をダウンロードして開きます。

CSS コンテンツ プロパティの説明: コンテンツ、カウンター、引用符 CSS コンテンツ プロパティの説明: コンテンツ、カウンター、引用符 Oct 21, 2023 am 10:16 AM

CSS コンテンツ属性の詳細な説明: content、counter、quotesCSS (カスケード スタイル シート) はフロントエンド開発に不可欠な部分であり、Web ページを美しくし、ユーザー エクスペリエンスを向上させるのに役立ちます。 CSS には、コンテンツ、カウンター、引用符などのテキスト コンテンツの表示を制御するために使用できる特別なプロパティがいくつかあります。この記事では、これらのプロパティについて詳しく説明し、具体的なコード例を示します。 1. content 属性content 属性

See all articles