javascript - 根据设备方向重新排列 html 形式的单选按钮

标签 javascript jquery html device-orientation

我对 HTML 和 jQuery 还很陌生。

我现在正在制作一个 html 表单,我将在多个平板电脑上使用它。我想要的是,例如,当平板电脑为纵向时,可用选项应显示在两行上,如下所示: question portrait

但是当平板电脑处于横向位置时,可用选项应显示在四行上,如下所示: landscape1

或者像这样如果最后一个单选按钮后面有一个“文本输入”字段(例如“其他:”“| |”) landscape2

遗憾的是,我在寻找答案的过程中并没有成功。如果有人能向我展示如何做到这一点(或者甚至给出一个带有代码的示例),我将非常感激。

非常感谢!

最佳答案

对于初学者来说,要创建看起来像布局设计中那样的按钮,您不能轻松地使用 radio输入类型。

这样做的原因是,您无法像按钮输入类型那样将单选按钮设置为在其中包含文本值。所以在我的 fiddle example ,我选择使用按钮输入类型,但您可以选择使用任何允许您将文本换行的 html 标签

<!-- Your design requires html elements that can wrap text inside -->
<input type="button" class="answer" value="CSS or JS" />


接下来,要使您的按钮和问题具有响应能力:

您可以简单地使用 css media-queries为了达成这个。首先,设置默认宽度,然后使用 css media-queries更改相对于屏幕尺寸的任何页面元素:

/* the default width */
.question input { width: 100px; }

/* the width when the screen is >= 700px */
@media (min-width: 700px) {
    .question input { width:350px; }    
}

使用媒体查询,您可以完全控制页面在您想要定位的每个屏幕尺寸上的显示方式。

/* You can get more granular control with orientation targets: */
@media (min-width: 700px) and (orientation: landscape) {
    .question input { }    
}

<强> See this link 有关使用媒体查询的更多信息。

媒体查询是处理表单响应性所需的全部内容。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~

奖励:用 Javascript/jQuery 处理表单数据

您的布局设计要求您能够以特殊方式设置按钮样式(即元素中间的文本看起来像按钮),但您不能将单选按钮设置为看起来像它们的样式在你的设计中这样做,所以你必须“伪造”它,通过使用将常规 html 元素转换为交互式元素的常用技术(例如:通过分配可点击行为将常规 <div><span> 转换为按钮到它)。这是开发人员使用 CSS 和 Javascript 来使应用程序的行为与应用程序的设计保持一致的流行技术。

解决您的问题的一个明显的解决方案(不需要任何 JavaScript,但会迫使您更改设计)是重新设计您的表单以仅使用常规 <form>元素,在这种情况下,您可以使用 <form>它是像平常一样的提交按钮。

因此,为了支持像您这样的自定义设计,您必须跳出框框思考,并找到一种方法来使样式化的 html 元素“看起来像一个按钮”和“像一个按钮”......这在 JavaScript 和 CSS 中非常简单。

由于这个主题与您的问题并不完全相关(您的问题更适合响应式设计),我将简要提及您可以使用 jQuery 完成设计的技术,然后向您展示一个工作示例。

首先,由于您的按钮不再是真正的表单元素,因此您必须找到一种方法来在应用程序中存储或记录用户的选择(以便您可以处理或验证它们)。一种简单的方法是使用 jQuery,并附加 click()处理程序到每个按钮,这将允许您分配(或取消分配)您想要为“选定”按钮提供的外观,并且还捕获按钮答案的值并将该值存储在某处,例如在 JavaScript 对象上,例如)。然后,当用户单击“提交”时,您可以访问此存储的表单数据并执行应用程序需要执行的任何操作...

You can see a working demo of these ideas in action here

希望这可以帮助您走上正确的道路!

关于javascript - 根据设备方向重新排列 html 形式的单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27828379/

相关文章:

javascript - 稍后如何访问 promise 结果?

javascript - 独立于 id 的 jQuery 操作

html - 如何在CSS中的每个第n个元素之后选择一组元素?

javascript - 无法点击动态元素

javascript - 如何命名 jQuery 函数以使浏览器的后退按钮起作用?

javascript - slideToggle() 导致第一个 li a 在点击时跳转

jquery - 双击打开 Bootstrap 模式

html - 从同一 servlet 中的文本字段上传图像和信息

java - 我无法将 css 文件链接到我的元素

javascript - 如何在浏览器解释后使用 curl 扫描页面