我们怎样才能让网站像亚马逊一样响应迅速?

How can we make websites as responsive as Amazon?

我正在用 ReactJs 中的小项目挑战自己,Tachyons 制作一个像 Amazon 一样响应迅速的网站(仅 front-end)。

这里有一个亚马逊可以做到而我没能做到的例子。

这是全宽的亚马逊页面

半宽的亚马逊页面。在这里我们可以看到亚马逊响应并改变了搜索栏的大小。

Amazon 的最小浏览器大小的网站。**此处的网站保持**与半宽时相同的大小。

如果您想尝试使用网络浏览器,access Amazon

我也试过,但试了很多都不成功,所以我在这里寻求帮助。

目前我正在使用 React-Device-Detect 来检测设备类型。我没有让网站响应,而是连续两次做同样的工作(一次针对网站,一次针对不同尺寸的手机,等等)我想同样的事情是由亚马逊完成的? (在您的 phone、您的 PC 上检查 Amazon,然后在您的 PC 上使用最小宽度检查 Amazon,看看它与您的 phone 不同)

现在我遇到的问题如下图:

整页网站

网站最小页面。我们可以观察到一切都调整了大小,蓝色条的高度降低了,5 列看起来很糟糕

我应该使用 Bootstrap 吗?这是我唯一的解决方案吗? Amazon 使用 Bootstrap 还是他们有自己的 'css framework'?

您可以使用一些 css 移动友好的框架(首先),它们都是响应式设计的。 Bootstrap 是一个非常受欢迎的。

根据您的目标,针对您的问题提供多种解决方案。

  1. CSS media-queries

  2. 一个CSS框架(例如Bootstrap

  3. 一个 React 组件库(例如 React Material UI

我的第一个个人建议是 Material UI Grid 组件。它真的很容易实现,而且效果很好!完全推荐给 React 初学者开发人员。

第二个选项是 CSS 媒体查询和样式组件。这是一种更高级的技术,但它会产生更干净的代码。

提示:您还可以检查muuri UI 库。

从表面上看,Amazon 的网站并不是完全响应式的。我永远不必水平滚动。但是,您可以通过多种方式实现这一点。

Bootstrap 或基金会:响应式库

您可以将 Bootstrap 或 Foundation 安装到您的项目中。这些库为您完成所有响应式工作(大多数情况下,这里和那里有一些例外情况,您可以使用媒体查询解决这些问题)。

这两个库的文档都很棒,你可以单独通过文档来学习每个库。但是,有很多免费资源可以学习它们(尤其是 Bootstrap)。我也不会花钱学习。

我在下面列出了 Bootstrap 的一些资源(这是我一直使用和喜欢的,所以我对它了解更多)。

Bootstrap 资源:这里只是 Bootstrap

的一些资源
  1. Bootstrap 的网站:https://getbootstrap.com/
  2. w3 学校网站:https://www.w3schools.com/bootstrap4/bootstrap_ref_all_classes.asp 您可以浏览他们的 Bootstrap 教程。 link 是一个 table,它包含所有 bootstrap 类 和每个的演示。
  3. Youtube:您可以在youtube 上查找教程。我不会推荐任何特定的视频,但您可以找到最适合您的视频。

我建议只使用 HTML、CSS 和 Bootstrap(你的 React 站点的模板)来完成一个前端网页,以获得 Bootstrap第一。

要与 ReactJS 合并,您只需安装 bootstrap 即可:npm i bootstrap 但您不会获得下拉菜单、弹出窗口、工具提示等功能。这就是 react-bootstrapreactstrap 等包的用武之地。它们为您提供功能和响应能力。

CSS 媒体查询

您可以为特定的页面宽度或屏幕尺寸设置媒体查询。这是一项非常繁琐的任务,如果您尝试将其应用于网站的每个元素,您将需要编写和管理大量 CSS 代码。

示例:这是说,对于任何宽度为 720 像素或更小的屏幕,将此背景应用于网站正文。

@media only screen and (max-width: 720px) {
  body {
    background-color: #ddd;
  }
}

显然,这会变得更加复杂。您可以在 @media 大括号内放置任何 CSS 和目标任何类名。所以,你不必只输入 body.

希望这对您有所帮助。

更新:

Instead of making the website responsive, I do the same job twice in a row (once for the website and once for the mobile with different sizes, etc.) I suppose that the same thing is done by Amazon?

此外,我不确定您到底想要什么移动设备,但您不必为移动设备单独创建任何东西。这就是响应的意义所在。当今世界的一切都是响应式的,实际上,很多事情都是 "mobile first"(尽管围绕这一点有很多争论)所以你真的应该响应式。使用响应式库或查询将为您完成所有这些工作。所以你不需要 React Device Detect。这些库已经为几乎每个屏幕尺寸设置了媒体查询(对 4k 的支持很少或不存在)。这意味着当您在单元格 phone 上访问您的网站时,它会自动调整。

如果您想要移动应用程序,那就完全不同了。亚马逊也有。您可以为此使用 React Native,并可能为该移动应用调整您的大部分 Web 应用源代码。

希望已经清楚了。