【问题标题】:What are some best practices for designing mobile friendly websites? [closed]设计适合移动设备的网站有哪些最佳实践? [关闭]
【发布时间】:2019-03-28 07:04:00
【问题描述】:

我对 Java、Python 和 C 等通用编程语言有丰富的经验。我经常自学,熟悉四人组的设计模式。我最近一直在制作适合移动设备的网站,但纵观我的解决方案,我可以肯定地说我的前端开发技能不是很好,尽管找到了解决方案。我建议我不要实施最佳实践,我想找到一个地方来提高我创建移动响应网站的能力。我阅读了很多 bootstrap4 框架,它对导航栏之类的东西很有帮助,但是某些事情是不可能的。

例如,我的网站最近的一个移动响应组件可以在这张图片中描述

我解决的一般问题是创建一个带有图像、文本和箭头的全角正方形。

对于桌面。按钮的宽度为 30%,img 位于左侧。 对于移动设备,按钮的宽度为 100%,img 在顶部,下面是文本,最后是按钮等...

为了解决这样的问题我用react完成,大致是这样的

let result;

if (desktop){
     result = /* 40 lines of html to create the solution for desktop */ 
} elif (mobile) {
     result = /* Same 40 lines of html, button width change, html reordering 
     to move the image on top */
} else {
     result = ...
}

{result}

如您所知,我基本上将每个案例的代码增加了三倍,这些案例发回给用户。到目前为止,我对移动响应式网站的唯一理解是使用@media 查询添加许多系列 css 条件。

我在通用编程语言方面拥有行业级经验,但到目前为止,我的大部分前端开发都是自学的。

我想找到任何信息来源,以教授创建高效、可读、编写良好的 css/html/js 的最佳实践,这些 css/html/js 用于创建移动友好型网站。

欢迎评论我之前的代码示例以获取建议

【问题讨论】:

标签: javascript html css reactjs design-patterns


【解决方案1】:

我对网站开发知之甚少,但您的一些 UI 渲染问题的一种解决方案是:

视口元标记的使用: 视口因设备而异,在手机上会比在电脑屏幕上小。 视口元标记告诉浏览器使您的页面宽度适合访问者来自的设备类型的屏幕。

您应该在所有网页中包含以下视口元素:

【讨论】:

  • 查看端口是在移动浏览器中查看网站,就像在桌面站点中看到的那样,但是我们无法将网站视为响应式的,我们需要编写媒体查询以使其具有响应性,或者我们可以使用 bootstrap 之类的库链接——getbootstrap.com/docs/4.0/getting-started/introduction
【解决方案2】:

建议 #1:针对不同媒体类型的不同样式表
如果您不熟悉 css 中的媒体查询,您可以为不同的媒体类型创建不同的样式表。

<link rel="stylesheet" media="only screen and (max-width: 400px)" href="mobile.css" />
<link rel="stylesheet" media="only screen and (min-width: 401px)" href="desktop.css" />

建议 #2:使用 javascript 设置类
还不是 css 中媒体查询的朋友吗?您还可以根据视口或用户代理将“mobile”之类的类分配给 html 或 body 标签。 在侦听事件时,您可以动态更改该类。 但是你也会遇到媒体查询使用的问题......

我不是这个解决方案的朋友,它或多或少与媒体查询相同!

建议 #3:使用预处理器
即使你不是媒体查询的朋友,也试试吧! 我个人讨厌媒体查询,因为处理感觉很奇怪。但是使用像 LESS 或 SCSS 这样的预处理器可以解决 css 的许多问题。 您仍然必须使用条件媒体查询,但冗余更少并且更易于维护。

建议 #4:网络服务器配置
您可以根据用户代理配置您的网络服务器以服务不同的网站。但是新版本的部署可能会更难......

结论
我建议使用建议 #3。
对我来说,这是分配媒体查询的最直观的方式,我认为它最适合您的用例。
它还将改进您的样式表。

无论您遇到什么问题,我都建议您使用预处理器。 即使你选择了像 Bootstrap 这样的框架。他们中的大多数都为一个或多个预处理器提供了一个 api,以便更好地集成。

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    相关资源
    最近更新 更多