使用 HTML 和 CSS 创建横向和纵向布局

Posted

技术标签:

【中文标题】使用 HTML 和 CSS 创建横向和纵向布局【英文标题】:Creating Landscape and Portrait layout using HTML and CSS 【发布时间】:2012-01-06 09:32:10 【问题描述】:

我有一个要求,我需要编写一个 html/CSS,它应该显示横向和纵向,具体取决于 iPad 的方向,即最初我想使用 HTML 和 CSS 编写它,然后再使用它用于 iPad 开发。

我的问题是实现这一目标的最佳方法是什么? 拥有两个不同的 html/css 文件并根据设备的方向加载它们是否有意义,或者是否有任何其他方式来实现这一点。任何有关这方面的信息将不胜感激。

谢谢 拉克斯

【问题讨论】:

标准流体布局是否不适合您? 【参考方案1】:

您想考虑使用响应式网页设计来实现这一目标。您可以根据屏幕大小确定要应用的样式。请记住,纵向视图时屏幕更宽。

您所做的是创建两个不同的样式表。一个用于纵向,第二个用于横向。然后,您使用 CSS3 媒体查询在两者之间切换。

示例代码:

肖像:

<link rel="stylesheet" type="text/css" media="screen and (max-device-width: 768px)" href="portrait.css" />

风景:

<link rel="stylesheet" type="text/css" media="screen and (min-device-width: 1024px)" href="landscape.css" />

如您所见,您正在传递目标媒体并为每个样式表声明目标宽度。仅当屏幕的当前宽度小于或等于 768 像素时,才会应用纵向样式表。相反,仅当屏幕分辨率至少为 1,​​024 像素宽时才会应用第二个样式表。

A simple tutorial describing the technique.

The original A List Apart article describing the technique.

现在,如果 iPad 开发是指本地应用程序,那么这将不起作用。对于原生应用程序,您需要使用 cocoa 框架来确定设备的方向。但是,如果您只是在本机应用程序中使用 webview,那么这将正常工作。

希望这会有所帮助。

【讨论】:

注意,有一个专门的媒体语法来检查屏幕是横向还是纵向 - @media (orientation: landscape) ...

以上是关于使用 HTML 和 CSS 创建横向和纵向布局的主要内容,如果未能解决你的问题,请参考以下文章

在 Objective C 中使用自动布局分离纵向和横向视图

如何在颤动中显示横向和纵向的不同布局

相同的自动布局约束在纵向和横向中表现不同

iPad:纵向和横向模式之间的时间延迟

LinearLayout的横向和纵向布局问题

Flutter 基础控件之 Row 横向布局 Column 纵向布局