목차
回复内容:
웹 프론트엔드 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 Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

html의 너비는 무엇을 의미합니까? html의 너비는 무엇을 의미합니까? Jun 03, 2021 pm 02:15 PM

HTML5에서 너비는 너비를 의미합니다. 너비 속성은 콘텐츠 영역 외부에 내부 여백, 테두리 및 외부 여백을 추가할 수 있습니다. 요소.

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 운영 체제는 의심할 여지 없이 오늘날 가장 영향력 있는 운영 체제 중 하나입니다. 이 강력한 기능에는 확실히 장치 활성화 및 비활성화가 포함됩니다. WIN10 Home Edition 시스템에서 장치를 비활성화하는 방법 방법 1: 장치 관리자에서 장치 비활성화 1. 먼저 장치 관리자를 엽니다! 세 가지 방법이 있습니다. (1) 키보드에서 WIN+X 키를 누르고 장치 관리자를 선택합니다. (2) 시작 메뉴에서 "장치 관리자"를 직접 입력하고 클릭! (3) 제어판에서 장치 관리자를 찾아 선택합니다. 2. 다음으로 장치 목록에서 비활성화하려는 장치를 찾으십시오! 비활성화하려면 클릭하세요. 추신: 여기에서는 시스템에 연결된 모든 장치를 볼 수 있습니다.

CSS에서 너비 값을 표현하는 방법은 무엇입니까? CSS에서 너비 값을 표현하는 방법은 무엇입니까? Nov 13, 2023 pm 05:47 PM

방법에는 픽셀 값, 백분율, em 단위, rem 단위, vw/vh 단위, 자동, fit-content, min-content, max-content가 포함됩니다. 자세한 소개: 1. 픽셀 값(px): 픽셀 값은 고정되어 있으며 화면 해상도가 어떻게 변하더라도 너비는 변경되지 않습니다. 예: 너비: 300px; 2. 백분율(%): 백분율 너비는 상위 요소의 너비를 기준으로 합니다. 예: 너비: 50%, 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.h를 포함하는 추가 pci 폴더가 있습니다. 이 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 콘텐츠 속성에 대한 자세한 설명: 콘텐츠, 카운터 및 인용문 CSS(Cascading Style Sheet)는 프런트 엔드 개발에 없어서는 안 될 부분으로 웹 페이지를 아름답게 하고 사용자 경험을 향상시키는 데 도움이 됩니다. CSS에는 콘텐츠, 카운터, 따옴표 등 텍스트 콘텐츠 표시를 제어하는 ​​데 사용할 수 있는 몇 가지 특수 속성이 있습니다. 이 문서에서는 이러한 속성을 자세히 설명하고 특정 코드 예제를 제공합니다. 1. 콘텐츠 속성 콘텐츠 속성

See all articles