【问题标题】:HTML/CSS list box on mobile移动设备上的 HTML/CSS 列表框
【发布时间】:2015-08-07 21:57:23
【问题描述】:

以下simple fiddle shows a list box with the set of country names。在 PC 上,height 属性告诉页面呈现一个列表框而不是下拉列表,因此 n 个项目是可见的。在移动设备(iPad/iPhone)上,height 属性似乎告诉页面下拉控件应该有多高(它看起来很荒谬)。

我的 CSS 类如下所示:

.sliderlist {
    width: 240px;
    height: 620px;
    font-size: 12px;
    font-family: "Verdana", Geneva, sans-serif;
}

我想要页面上的列表框,PC 或移动设备,而不是下拉列表。如何使用 HTML/CSS 做到这一点?

为了澄清我的意思,下面是我 iPad 上的一张照片,显示了列表的样子(它只是一个下拉列表,其高度由 height 属性给出):

在具有相同代码的 PC 上,我们有一个列表框,而不是下拉列表。我也想要后者在移动设备上:

【问题讨论】:

  • height: auto 为什么不呢?
  • 我不想要一个下拉列表,我想要一个包含 n 项可见的列表框。这是 Chrome 在 PC 上的行为。这不是 iPad 和 iPhone 上 Safari 中的行为。
  • 是的,我知道,将<select> 标记变为列表框的原因是size 属性的使用。根本不需要 height 属性,尝试:auto0,根本没有高度,vh 单位就像答案中提出的那样。
  • 如果您想要某种列表框而不是经典的下拉菜单,您是否考虑过使用引导程序? getbootstrap.com/components/#dropdowns(不过需要 JS)

标签: javascript css html-lists


【解决方案1】:

这里有一些东西会给你带来你所期望的结果jsbin。由于某些未知的原因,safari 并不关心 select 选项的 size 参数,因此我们使用 jquery 来完成它。这是我在 Iphone 4 上得到的结果。

此外,要获得适当的缩放级别,您必须在页面的标题部分中包含以下代码。

尝试在页面的 head 部分包含以下代码行。更多信息here

<meta name="viewport" content="width=device-width, height=device-height initial-scale=1">

【讨论】:

    【解决方案2】:

    您可以使用媒体查询为移动设备和桌面设备编写单独的类。

    /*适用于笔记本电脑屏幕*/

     @media screen 
          and (min-device-width: 1200px) 
          and (max-device-width: 1600px) 
          and (-webkit-min-device-pixel-ratio: 1) {
            .sliderlist {
              width: 240px;
              height: 300px;
              font-size: 12px;
              font-family: "Verdana", Geneva, sans-serif;
            }
        }
    
    /* Portrait and Landscape */
    @media only screen 
      and (min-device-width: 375px) 
      and (max-device-width: 667px) 
      and (-webkit-min-device-pixel-ratio: 2) { 
        .sliderlist {
          width: 150px;
          height: 100px;
          font-size: 12px;
          font-family: "Verdana", Geneva, sans-serif;
        }
    
    }
    
    /* Portrait */
    @media only screen 
      and (min-device-width: 375px) 
      and (max-device-width: 667px) 
      and (-webkit-min-device-pixel-ratio: 2)
      and (orientation: portrait) { 
        .sliderlist {
          width: 240px;
          height: 300px;
          font-size: 12px;
          font-family: "Verdana", Geneva, sans-serif;
        }
    
    }
    

    【讨论】:

      【解决方案3】:

      试试这样:Demo

      .sliderlist {
          width: 240px;   
          height:94vh; /* newly added*/
          font-size: 12px;
          font-family: "Verdana", Geneva, sans-serif;
      }
      

      【讨论】:

      • 不。这只是移动设备上的一个很长的下拉菜单。
      • 你的预期输出是什么?
      • 我希望移动输出看起来像 PC 输出。也就是说,一个列表box,有n 个可见项。在 PC 上有一个滚动条。在移动设备上不需要滚动条,因为您可以滑动我认为的列表。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      相关资源
      最近更新 更多