<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>移动端适配 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E9%80%82%E9%85%8D/</link><description>Recent content in 移动端适配 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 10 Nov 2024 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E9%80%82%E9%85%8D/index.xml" rel="self" type="application/rss+xml"/><item><title>移动端适配</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/css/css-025/</link><pubDate>Sat, 09 Nov 2024 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/css/css-025/</guid><description>&lt;h2 id="导读"&gt;导读&lt;/h2&gt;
&lt;p&gt;移动端适配，是我们在开发中经常会遇到的，这里面可能会遇到非常多的问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1px&lt;/code&gt;问题&lt;/li&gt;
&lt;li&gt;&lt;code&gt;UI&lt;/code&gt;图完美适配方案&lt;/li&gt;
&lt;li&gt;&lt;code&gt;iPhoneX&lt;/code&gt;适配方案&lt;/li&gt;
&lt;li&gt;横屏适配&lt;/li&gt;
&lt;li&gt;高清屏图片模糊问题&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上面这些问题可能我们在开发中已经知道如何解决，但是问题产生的原理，以及解决方案的原理可能会模糊不清。在解决这些问题的过程中，我们往往会遇到非常多的概念：像素、分辨率、&lt;code&gt;PPI&lt;/code&gt;、&lt;code&gt;DPI&lt;/code&gt;、&lt;code&gt;DP&lt;/code&gt;、&lt;code&gt;DIP&lt;/code&gt;、&lt;code&gt;DPR&lt;/code&gt;、视口等等，你真的能分清这些概念的意义吗？&lt;/p&gt;
&lt;p&gt;本文将从移动端适配的基础概念出发，探究移动端适配各种问题的解决方案和实现原理。&lt;/p&gt;
&lt;h2 id="一英寸"&gt;一、英寸&lt;/h2&gt;
&lt;p&gt;一般用英寸描述屏幕的物理大小，如电脑显示器的&lt;code&gt;17&lt;/code&gt;、&lt;code&gt;22&lt;/code&gt;，手机显示器的&lt;code&gt;4.8&lt;/code&gt;、&lt;code&gt;5.7&lt;/code&gt;等使用的单位都是英寸。&lt;/p&gt;
&lt;p&gt;需要注意，上面的尺寸都是屏幕对角线的长度：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/css/css-025/image-01.png"&gt;&lt;/p&gt;
&lt;p&gt;英寸(&lt;code&gt;inch&lt;/code&gt;,缩写为&lt;code&gt;in&lt;/code&gt;)在荷兰语中的本意是大拇指，一英寸就是指甲底部普通人拇指的宽度。&lt;/p&gt;
&lt;p&gt;英寸和厘米的换算：&lt;code&gt;1英寸 = 2.54 厘米&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="二分辨率"&gt;二、分辨率&lt;/h2&gt;
&lt;h3 id="21-像素"&gt;2.1 像素&lt;/h3&gt;
&lt;p&gt;像素即一个小方块，它具有特定的位置和颜色。&lt;/p&gt;
&lt;p&gt;图片、电子屏幕（手机、电脑）就是由无数个具有特定颜色和特定位置的小方块拼接而成。&lt;/p&gt;
&lt;p&gt;像素可以作为图片或电子屏幕的最小组成单位。&lt;/p&gt;
&lt;p&gt;下面我们使用&lt;code&gt;sketch&lt;/code&gt;打开一张图片：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/css/css-025/image-02.png"&gt;&lt;/p&gt;
&lt;p&gt;将这些图片放大即可看到这些像素点：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/css/css-025/image-03.png"&gt;&lt;/p&gt;
&lt;p&gt;通常我们所说的分辨率有两种，屏幕分辨率和图像分辨率。&lt;/p&gt;
&lt;h3 id="22-屏幕分辨率"&gt;2.2 屏幕分辨率&lt;/h3&gt;
&lt;p&gt;屏幕分辨率指一个屏幕具体由多少个像素点组成。&lt;/p&gt;
&lt;p&gt;下面是&lt;code&gt;apple&lt;/code&gt;的官网上对手机分辨率的描述：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/css/css-025/image-04.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;iPhone XS Max&lt;/code&gt; 和 &lt;code&gt;iPhone SE&lt;/code&gt;的分辨率分别为&lt;code&gt;2688 x 1242&lt;/code&gt;和&lt;code&gt;1136 x 640&lt;/code&gt;。这表示手机分别在垂直和水平上所具有的像素点数。&lt;/p&gt;
&lt;p&gt;当然分辨率高不代表屏幕就清晰，屏幕的清晰程度还与尺寸有关。&lt;/p&gt;
&lt;h3 id="23-图像分辨率"&gt;2.3 图像分辨率&lt;/h3&gt;
&lt;p&gt;我们通常说的&lt;code&gt;图片分辨率&lt;/code&gt;其实是指图片含有的&lt;code&gt;像素数&lt;/code&gt;，比如一张图片的分辨率为&lt;code&gt;800 x 400&lt;/code&gt;。这表示图片分别在垂直和水平上所具有的像素点数为&lt;code&gt;800&lt;/code&gt;和&lt;code&gt;400&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;同一尺寸的图片，分辨率越高，图片越清晰。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/css/css-025/image-05.png"&gt;&lt;/p&gt;
&lt;h3 id="24-ppi"&gt;2.4 PPI&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;PPI(Pixel Per Inch)&lt;/code&gt;：每英寸包括的像素数。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PPI&lt;/code&gt;可以用于描述屏幕的清晰度以及一张图片的质量。&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;PPI&lt;/code&gt;描述图片时，&lt;code&gt;PPI&lt;/code&gt;越高，图片质量越高，使用&lt;code&gt;PPI&lt;/code&gt;描述屏幕时，&lt;code&gt;PPI&lt;/code&gt;越高，屏幕越清晰。&lt;/p&gt;
&lt;p&gt;在上面描述手机分辨率的图片中，我们可以看到：&lt;code&gt;iPhone XS Max&lt;/code&gt; 和 &lt;code&gt;iPhone SE&lt;/code&gt;的&lt;code&gt;PPI&lt;/code&gt;分别为&lt;code&gt;458&lt;/code&gt;和&lt;code&gt;326&lt;/code&gt;，这足以证明前者的屏幕更清晰。&lt;/p&gt;
&lt;p&gt;由于手机尺寸为手机对角线的长度，我们通常使用如下的方法计算&lt;code&gt;PPI&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/css/css-025/image-06.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;iPhone 6&lt;/code&gt;的&lt;code&gt;PPI&lt;/code&gt;为&lt;/p&gt;</description></item></channel></rss>