第一个移动网站

3

我开始设计我的第一个移动网站。虽然它很简单,但我有一些问题:

请尽可能回答以下问题!

1)我该如何指定网站只向移动流量提供“styles_mobile.css”样式表?是否有最常用的代码片段?

2)我有一个首页并创建了一个新的移动首页:“/index_mobile.htm”,这样做是否“错误”。移动页面应该是自己的实体(例如/mobile.htm),还是基于现有的首页?我该如何重定向它?如何创建地址“m.mywebsiteaddress.com”?

3)目前我正在我的笔记本电脑上进行编辑,然后上传到我的ISP上看看我在iphone上的编辑效果 - 我该如何直接从我的Mac进行上传?

4)HTML元素方面是否有标准结构?例如,标准文档具有HTML、HEAD和BODY元素。 HTML5现在具有标题(header)、导航(nav)和页脚(footer)元素 - 是否有任何特定于mobi的元素需要我注意?

现在就这些问题,但我可以看出自己在未来几天会继续添加。欢迎任何指针或临时建议。


4
为什么不为每个问题新建一个问题呢? - Ezi
关于问题#4,不会 - 没有HTML元素依赖输出设备。 - Wesley Murch
@Ezi:一般来说我同意你的看法,但在这种情况下,我认为这是合理的。已添加“设计”标签。 - home
你应该调查一下“响应式设计”——这个主题太广泛了,无法在SO上的一个问题中涵盖。http://coding.smashingmagazine.com/2011/01/12/guidelines-for-responsive-web-design/ - shanethehat
4个回答

2

1) 我该如何告诉网站为移动流量提供"styles_mobile.css"样式表?是否有常用的代码片段可用?

您可以使用带有媒体查询的链接样式表:

<link rel="stylesheet" media="only screen and (max-width: 480px)" href="mobile.css">

2) 我有一个索引页面并正在创建一个新的移动页面:“/index_mobile.htm”,这样做是否“错误”。移动页面应该是自己的实体(例如/mobile.htm)还是基于现有的索引页面?如何重定向它?如何创建地址“m.mywebsiteaddress.com”?

另一种选择是提供一个页面(index.html),并在视图区域缩小时开始堆叠浮动元素。在您的桌面和手机上查看http://www.html5rocks.com/en/。或者,如果您的手机此刻不在身边,请调整浏览器大小,观察该网站开始摆脱多列并创建单列视图。他们只提供一个文件(即index.html),而不是将移动用户重定向到移动页面(即mobile.html)。

3) 目前,我正在我的笔记本电脑上进行编辑,然后为了查看它们的效果,必须将它们上传到我的ISP以在我的iPhone上查看我的编辑效果-如何直接从我的Mac完成这项工作?

在您的Mac上安装Apache服务器,在适当的端口上进行端口转发(端口80和8080 IIRC),您将能够在无需不断将文件上传到ISP的情况下在手机上查看页面。 URL将是(http://xx.xxx.xx.xx)或类似的内容。

4) 关于HTML元素,是否有标准结构?例如,标准文档具有html、head和body元素。 HTML5现在具有标题、导航和页脚元素-我应该注意哪些特定于mobi的元素吗?

不,移动浏览器呈现与桌面浏览器相同的HTML标记。您应该考虑做的一件事是使用HTML5 doctype(移动浏览器支持),因为即使在使用viewport meta标记时,当使用XHTML或HTML4 doctype的“移动化”网站在移动浏览器中看起来非常缩小时,我也遇到了很多麻烦。

这是我在移动Web开发方面偶然发现的最好资源。

http://www.html5rocks.com/en/mobile/mobifying/


在#1上,请注意许多设备会忽略媒体查询。移动设备制造商故意选择让他们的浏览器忽略移动站点,因为他们不想被认为是提供任何比完整桌面体验更少的东西。 - Jimmy Breck-McKye
1
这是真的吗?对于大型制造商来说有多大的问题?这取决于平台吗?只要安卓和iOS没问题,那对我来说就足够了。 - Doug Fir
@JimmyBreck-McKye,我没有找到任何支持你说法的信息。 - Jezen Thomas

2
我的移动端经验是,你需要将其视为完全不同的网站。不同的 HTML,不同的 CSS,不同的 JavaScript。许多实现方式只是将其标记为地址 m.site.com 或者 www.site.com/m/。关键要素在于将它们视为两个分开的网站。
关于你的问题:
1. 有各种框架可以帮助区分流量,具体取决于设备。识别浏览器发送的用户代理进行区分即可。根据用户代理,您将流量发送到您创建的这两个网站中的每一个。Spring 拥有一些基本功能来实现这一点 spring-mobile
2. 这与我回答的第一部分有关。我通常会创建一个名为 /m 的目录,并在其中包含 htmlcssjs 文件。可以使用基于用户代理的 http 重定向 将流量发送到每个网站。至于创建 m.site.com,这取决于您的设置和是否可以创建子域。
3. 取决于您使用的软件,您可以直接在 Mac 上发布。在 Mac 上,您可以转到系统偏好设置/共享并启用 Web 共享。这实际上会在您的 Mac 上激活一个 Apache 服务器。如果您将文件放在 /Users/yourid/Sites/project 中,则可以通过访问 http://yourlocalip/~yourid/project 来访问该文件。我是凭记忆写的,所以可能有出入。
4. 我建议您查看 jQuery + jQuery Mobile 来创建您的移动站点。这将在过程中消除很多烦恼。

1
肯定会感激一些关于负投票的解释。 - Ricardo Marimon
我“点赞”你有两个原因:一是弥补那些负评,二是表明你的回答是另一个很好的选择。 - Minja
2
这只是一个选项,如果您想为移动设备提供不同的内容。如果您只是改变内容的外观,则不应该将其分割。 - shanethehat
我发现网站的完整版和移动版在布局方面有很大的差异,有时甚至在内容方面也不同。随着时间的推移,它们往往会分化。内容的分裂是一个巨大的问题,但随着网站的发展,你可能会发现自己需要这两个版本。 - Ricardo Marimon
感谢您的出色回答。当涉及到创建类似于m.site.com的域时,我该怎么做?如果我只是在根文件夹中创建一个名为“m”的子目录文件,那么它不会被反转成site.com/m/page.htm吗?我该如何创建前者m.site.com? - Doug Fir

1

之前的两个回答很好,但我不完全同意它们。它们太复杂了。

  1. 使用CSS媒体查询为不同的屏幕宽度和/或方向设置不同的样式。
  2. 别麻烦了。为了可维护性,你应该创建一个站点,并用媒体查询对其进行不同的样式设置。
  3. 同样是媒体查询。与其针对移动设备使用 (max-device-width: 480px) ,你可以使用 (max-width) 并直接在浏览器中开发/调试。否则,如果你在使用OS X,则附带Xcode的iOS模拟器效果不错(包括iPad!)
  4. 不是的。它只是一个普通的网页。

顺便说一句,我认为你不应该采纳为移动设备加载另一个样式表的建议。加载另一个样式表意味着多发起一个HTTP请求。你可以将所有的媒体查询样式都保留在主样式表中。


感谢您的反馈和指导。您能否澄清一下您最后一句话的意思 - 为什么不使用另一个样式表?如果我使用同一个样式表,它会按照桌面端预期的方式对元素进行样式设置,否则就不会了,对吗?而单独的样式表将提供一个整洁、清晰的区分。我理解得对吗? - Doug Fir
请查看下面的响应以了解如何在桌面样式表中使用媒体查询。 - Minja
加载另一个样式表意味着额外的 HTTP 请求。这并非必要。 - Jezen Thomas

0

要在“常规”样式表(即桌面样式表)中使用媒体查询,请执行以下操作:

/* desktop */
body { background: #FFFFFF; }
header { width: 100%; }

/* queries for devices with a max viewing area of 480px */
@media only screen and (max-width: 480px) {
  body { background: #444444; }
}

以上的CSS可以在桌面浏览器中进行测试。例如,将上述样式放入样式标签中,并在宽度大于480px的浏览器中查看页面(最大化窗口即可)。然后,调整窗口宽度,直到您看到背景变成深色(一旦窗口宽度小于480px就会发生这种情况)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接