<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ 移动端 - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ freeCodeCamp 是一个免费学习编程的开发者社区，涵盖 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等，还有活跃的技术论坛和丰富的社区活动，在你学习编程和找工作时为你提供建议和帮助。 ]]>
        </description>
        <link>https://www.freecodecamp.org/chinese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ 移动端 - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/chinese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 24 May 2026 19:37:59 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/chinese/news/tag/mobile/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ freeCodeCamp 移动应用程序——在你的手机上学习编程 ]]>
                </title>
                <description>
                    <![CDATA[ 我很高兴地宣布，freeCodeCamp的移动应用程序终于可以供你下载‍了。🎊 移动开发团队刚刚推送了一个大的更新，有许多有用的改进，包括大家期待已久的 /learn 用户体验。 你现在可以学习响应式网页设计课程，并保存你的进度 - 就在你的手机上。你可以在任何时候从你的桌面无缝转移到你的手机学习 freeCodeCamp。 我们仍在努力上线更多的认证，如 JavaScript 算法和数据结构认证。 /learn 体验有一个内置的代码编辑器，专门为在移动设备上完成挑战而设计。你也可以用它来构建你的认证项目。 下图展示了移动设备上的 /learn 体验： 告诉用户如何完成挑战的说明窗格的视图还可以预览你的挑战和项目。这显示了 Camper Café 项目的预览： 当然，在移动应用程序中还有更多的内容和更多的功能可以探索。但这些都有待你去发现。😉 我们还对 /news、电台和播客组件进行了一些改进，这些组件也可以在应用程序中使用。 如何在你的手机上安装它 你可以访问 Google Play 商店页面 [https://play.google.com/store/app ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/freecodecamp-mobile-app-curriculum-update/</link>
                <guid isPermaLink="false">6381f074206aea0762969c44</guid>
                
                    <category>
                        <![CDATA[ 移动端 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ freeCodeCamp ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Miya Liu ]]>
                </dc:creator>
                <pubDate>Wed, 29 Mar 2023 02:18:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2022/11/michal-soukup-hDOskFirs-c-unsplash.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文：</strong> <a href="https://www.freecodecamp.org/news/freecodecamp-mobile-app-curriculum-update/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The freeCodeCamp Mobile App – Learn to Code Right On Your Phone</a>
      </p><p>我很高兴地宣布，freeCodeCamp的移动应用程序终于可以供你下载‍了。🎊</p><p>移动开发团队刚刚推送了一个大的更新，有许多有用的改进，包括大家期待已久的 /learn 用户体验。</p><p>你现在可以学习响应式网页设计课程，并保存你的进度 - 就在你的手机上。你可以在任何时候从你的桌面无缝转移到你的手机学习 freeCodeCamp。</p><p>我们仍在努力上线更多的认证，如 JavaScript 算法和数据结构认证。</p><p>/learn 体验有一个内置的代码编辑器，专门为在移动设备上完成挑战而设计。你也可以用它来构建你的认证项目。</p><p>下图展示了移动设备上的 /learn 体验：</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://chinese.freecodecamp.org/news/content/images/2023/03/image-10.png" class="kg-image" alt="image-10" srcset="https://chinese.freecodecamp.org/news/content/images/size/w600/2023/03/image-10.png 600w, https://chinese.freecodecamp.org/news/content/images/2023/03/image-10.png 740w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"><figcaption>告诉用户如何完成挑战的说明窗格的视图</figcaption></figure><p>还可以预览你的挑战和项目。这显示了 Camper Café 项目的预览：</p><figure class="kg-card kg-image-card"><img src="https://chinese.freecodecamp.org/news/content/images/2023/03/image-11.png" class="kg-image" alt="image-11" srcset="https://chinese.freecodecamp.org/news/content/images/size/w600/2023/03/image-11.png 600w, https://chinese.freecodecamp.org/news/content/images/2023/03/image-11.png 740w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>当然，在移动应用程序中还有更多的内容和更多的功能可以探索。但这些都有待你去发现。😉</p><p>我们还对 /news、电台和播客组件进行了一些改进，这些组件也可以在应用程序中使用。</p><h2 id="-">如何在你的手机上安装它</h2><p>你可以<a href="https://play.google.com/store/apps/details?id=org.freecodecamp&amp;pli=1">访问 Google Play 商店页面</a>并下载 freeCodeCamp 官方应用程序。</p><p>或者你可以直接从 <a href="https://github.com/freeCodeCamp/mobile/releases/tag/v3.2.1">GitHub</a> 下载最新版本的 .apk 文件。</p><p>许多对该应用程序的评论都是 2021 年的老版本。那时它只是一个简单的网络应用程序版本，有很多 bug。</p><p>这个新版本是 freeCodeCamp 工程团队数千小时的开发成果。我们为这个强大的基于 Flutter 的 Android 应用感到非常自豪。</p><p>因此，在你使用一段时间后，如果你喜欢它并觉得它有帮助，一定要留下五星好评。😉</p><h2 id="--1">如何报名参加开放测试</h2><p>以下是如何注册参加 Android 开放测试。（我们正在努力加快上线 iOS 版本）。</p><p>首先，访问 <a href="https://play.google.com/store/apps/details?id=org.freecodecamp">Google Play Store 页面</a>。</p><p>在页面底部，应该有一条消息说 “Join the beta（加入 beta 测试）”。只要点击加入，应用页面应该很快就会显示一个更新按钮。</p><p>就是这样，你现在已经正式加入了测试计划。🧑‍💻</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/11/image-88.png" class="kg-image" alt="image-88" width="600" height="400" loading="lazy"><figcaption>你可能会在 Google Play 商店看到这个消息</figcaption></figure><p>请注意，你的进度还不会被保存在 freeCodeCamp 的服务器上，它将只存储在你的设备上。这意味着你取得的任何进展都不会被记为完成 freeCodeCamp 网站上的任何项目。但我们正在努力工作，以尽快添加这一功能。</p><p>感谢所有到目前为止帮助开发 freeCodeCamp 移动应用的开源贡献者。我们的旅程刚刚开始。</p><p>如果你有兴趣为移动应用程序做贡献，你可以在帮助社区的同时学到很多关于 Flutter 开发和用户体验的知识。我鼓励你<a href="https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-mobile-app-locally">查看这个指南以开始你的贡献之旅</a>。</p><p>Happy coding. 🙂</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 移动端开发一些常见问题的解决方案 ]]>
                </title>
                <description>
                    <![CDATA[ 本文整理了我在移动开发中遇到的一些问题，并分享解决方案。 1. 获取设备的真实开发分辨率（逻辑分辨率） 最近查了好多关于移动端适配的资料，把人都看懵了，收获了一堆名词： CSS像素、物理分辨率、逻辑分辨率、设备像素比、PPI、DPI、DPR、DIP、Viewport 其实，对于开发来说，只需要了解三个概念。  1. 物理分辨率，就是设备上标称的分辨率。  2. 逻辑分辨率，开发时所用的分辨率。  3. 设备像素比，物理分辨率和逻辑分辨率之比。 例如 iphone 6，它的物理分辨率是 750 x 1334，逻辑分辨率是 375 x 667，设备像素比是 2（750 / 375）。打开 chrome 控制台，切换到 device toolbar， 选择 iphone 6 设备就能看到它的逻辑分辨率。 平时所说的 UI 设计稿 2 倍图、3 倍图。这个倍就是指设备像素比。例如设计稿是 2 倍图，里面的字体是 24 px，那我们用 24 / 2  就可以得出开发要用的像素为 ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/solutions-to-some-mobile-development-issues/</link>
                <guid isPermaLink="false">5fbb6ec739641a0517d510ea</guid>
                
                    <category>
                        <![CDATA[ 移动端 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ 分辨率 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ woai3c ]]>
                </dc:creator>
                <pubDate>Thu, 09 Dec 2021 08:00:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2020/11/WechatIMG2931.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>本文整理了我在移动开发中遇到的一些问题，并分享解决方案。</p><h2 id="1-"><strong><strong>1. 获取设备的真实开发分辨率（逻辑分辨率）</strong></strong></h2><p>最近查了好多关于移动端适配的资料，把人都看懵了，收获了一堆名词：</p><pre><code>CSS像素、物理分辨率、逻辑分辨率、设备像素比、PPI、DPI、DPR、DIP、Viewport
</code></pre><p>其实，对于开发来说，只需要了解三个概念。</p><ol><li>物理分辨率，就是设备上标称的分辨率。</li><li>逻辑分辨率，开发时所用的分辨率。</li><li>设备像素比，物理分辨率和逻辑分辨率之比。</li></ol><p>例如 iphone 6，它的物理分辨率是 <code>750 x 1334</code>，逻辑分辨率是 <code>375 x 667</code>，设备像素比是 2（<code>750 / 375</code>）。打开 chrome 控制台，切换到 device toolbar， 选择 iphone 6 设备就能看到它的逻辑分辨率。</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121110407618.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><p>平时所说的 UI 设计稿 2 倍图、3 倍图。这个倍就是指设备像素比。例如设计稿是 2 倍图，里面的字体是 24 px，那我们用 <code>24 / 2</code> 就可以得出开发要用的像素为 12 px。</p><p>苹果设备大多都能查到它的逻辑分辨率是多少。但安卓设备不是，所以需要使用其他手段。</p><h3 id="-"><strong><strong>知道物理分辨率</strong></strong></h3><p>如果你知道物理分辨率，那可以通过 <code>window.devicePixelRatio</code> 获取设备像素比。然后再通过公式得出逻辑分辨率。</p><pre><code class="language-js">逻辑分辨率 = 物理分辨率 / 设备像素比
</code></pre><p>例如 PC 上的设备像素比就是 1。</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121111155948.png#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><p>开发 PC 页面是很简单的，设计稿上的像素是多少，开发就写多少。</p><h3 id="--1"><strong><strong>什么都不知道</strong></strong></h3><p>即使你连物理分辨率都不知道，那也不要紧，一样有办法能得到设备的逻辑分辨率。</p><p>在页面建立一个刚好铺满全屏的 div 元素，然后获取它的宽高，这个宽高就是该设备的逻辑分辨率。</p><pre><code class="language-css">.test-div {
	position: fixed;
	left: 0;
	top: 0;
	width: 100vw;
	height: 100vh;
	background: red;
}
</code></pre><pre><code class="language-js">document.querySelector('test-div').clientWidth // 宽
document.querySelector('test-div').clientHeight // 高
</code></pre><p>刚好我手上有一个华为 m5 平板和华为 m5pro 平板，大小分别为 10.1 寸和 10.8 寸，用这种方法获取到它们的逻辑分辨率分别为 <code>960 x 600</code>、<code>1024 x 640</code>。</p><p>如图所示（华为 m5）：</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20191213104213298.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><p>为了证明推断是正确的，我拿了一个专门在 m5pro 上使用的 app 放在 chrome 上运行（模拟该设备的逻辑分辨率），完美适配。</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20191213105110800.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><p>为什么不使用 <code>window.screen.width</code> 或 <code>window.screen.height</code> 来获取逻辑分辨率呢？请看 MDN 的解释：</p><p>注意，该属性返回的高度值并不是全部对浏览器窗口可用。小工具（Widgets），如任务栏或其他特殊的程序窗口，可能会减少浏览器窗口和其他应用程序能够利用的空间。</p><p>也就是说，返回来的高度有一部分可能会被其他程序占用。</p><p><strong><strong>PS</strong></strong>：如果 app 在移动设备上不需要全屏展示，那么在 chrome 上模拟设备大小时要减去设备状态栏的高度。</p><h2 id="2-"><strong><strong>2. 页面适配</strong></strong></h2><p>在 css 中有很多相对长度，其中常用的有 em、rem、vw、vh 等，在小程序上还有 rpx。不管是 rem、vw 还是 rpx，都是跟屏幕宽度有关的。用这些计量单位开发的页面，不一定能兼容所有的移动端设备。</p><p>例如完美适配 iphone 6 的页面，在平板上就可能会出现样式问题。</p><p><strong><strong>适配 iphone 的页面</strong></strong>：</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/2020112112523771.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><p><strong><strong>放到平板下就乱了</strong></strong>：</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121125328211.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><p>为此，有些网站做成了具有多套样式的自适应网站。例如用手机、平板、PC 访问的网站样式是不一样的。不过这种网站维护起来工作量很大，也很繁琐。而且现在手机与手机之间的差异也很大，需要写很多 <code>@media</code> 来解决适配的问题。</p><h3 id="--2"><strong><strong>一个可行的解决方案</strong></strong></h3><p>我觉得有一个比较可行的解决方案，对于适配多种移动设备有一定的帮助。</p><p>那就是<strong><strong>整体布局使用 vw、百分比 % 作为计量单位，内容样式上使用 px 作为计量单位</strong></strong>。</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121142827563.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121142851802.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121142931403.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><p>从上面三个图可以看到，用 px 来做内容样式的计量单位，是可以适配多端的。即使为移动端设备写的网站，放到 PC 下也能适配。</p><p>这种解决方案就是简单方便，一劳永逸。目前我所开发过的移动端项目都是用的这种解决方案，暂时还未遇到适配上的问题。</p><p>而且这样写还有一个好处，就是<strong><strong>更大的屏幕可以看到更多的内容，而不是看到更大的内容</strong></strong>。例如在手机端下，一行只能显示 x 个字，要是内容超出屏幕就得用省略号代替。如果换成平板，可能就能把内容完整的显示出来。</p><h3 id="--3"><strong><strong>其他解决方案</strong></strong></h3><p>还有一个解决方案是在这个<a href="https://news.qq.com/zt2020/page/feiyan.htm#/">网站</a>发现的。这个网站整体布局和内容都是使用 vw 作为计量单位，在移动端上没什么问题。但在 PC 端下，它使用了 <code>scale</code> 属性。也就是说，当检测到你的设备是 PC 时，它会使用 <code>scale</code> 将网站进行缩小，最大宽度固定在 <code>750px</code>。这样，即使内容样式使用 vw 作为计量单位，也不会出现样式错乱的问题。</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121152744749.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121152804833.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><h3 id="--4"><strong><strong>栅格化布局</strong></strong></h3><p>在某些情况下，可以使用栅格化布局。例如当页面分辨率较大时，采取三列布局；当页面分辨率较小时，采用两列布局。</p><pre><code class="language-html">&lt;div class="container"&gt;
		&lt;div class="col col-md-4 col-sm-6"&gt;&lt;/div&gt;
		&lt;div class="col col-md-4 col-sm-6"&gt;&lt;/div&gt;
		&lt;div class="col col-md-4 col-sm-12"&gt;&lt;/div&gt;
		&lt;div class="col col-md-3 col-sm-3"&gt;&lt;/div&gt;
		&lt;div class="col col-md-6 col-sm-6"&gt;&lt;/div&gt;
		&lt;div class="col col-md-3 col-sm-3"&gt;&lt;/div&gt;
		&lt;div class="col col-md-1 col-sm-2"&gt;&lt;/div&gt;
		&lt;div class="col col-md-1 col-sm-2"&gt;&lt;/div&gt;
		&lt;div class="col col-md-2 col-sm-8"&gt;&lt;/div&gt;
		&lt;div class="col col-md-2 col-sm-3"&gt;&lt;/div&gt;
		&lt;div class="col col-md-6 col-sm-3"&gt;&lt;/div&gt;
	&lt;/div&gt;	
</code></pre><p><strong><strong>分辨率较大时的页面</strong></strong>：</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121154641400.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><p><strong><strong>分辨率较小时的页面</strong></strong>：</p><figure class="kg-card kg-image-card"><img src="https://img-blog.csdnimg.cn/20201121154707760.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3E0MTEwMjAzODI=,size_16,color_FFFFFF,t_70#pic_center" class="kg-image" alt="在这里插入图片描述" width="600" height="400" loading="lazy"></figure><p><br>如果你对栅格化原理不太了解，建议阅读我的另一篇文章<a href="https://zhuanlan.zhihu.com/p/61401978">栅格化系统的原理以及实现</a>。</p><h3 id="-ui-"><strong><strong>尽量使用移动端专用的 UI 组件库</strong></strong></h3><p>PC 端的 UI 组件库在移动端上会有很多样式问题，如非必要，不要使用。</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
