【问题标题】:Flexbox not switching from Row to Column on mobile deviceFlexbox 没有在移动设备上从行切换到列
【发布时间】:2019-03-24 20:54:55
【问题描述】:

我正在尝试让 Flexbox 在移动设备上工作,特别是 iPhone 5。我的目标是让 3 个项目在更大的屏幕(如 iPad 和计算机显示器)上的页面上以及在移动设备上的列中。我使用了用户 Cimmanon 生成的代码:3 Column Responsive CSS (Ordering Contents Positions) 尽可能接近。我是一名经验丰富的开发人员(主要从事数据库工作),但对 Web 开发相对来说是新手,我对自己的失败感到沮丧。

我正在使用 Dreamweaver CC 进行编码。当我使用下面的 CSS 时,我的页面显示为我认为应该的那样,当我在 Chrome、IE 和 Firefox 中上传和测试时,我得到了我期望的结果:当浏览器窗口较宽时跨越 3 个项目,当窗口较窄时有一列包含 3 个项目。但是,当我使用 iPhone 时,当我想要获得的是列时,我会继续获得包含 3 个项目的行。

我现在已经在这方面花费了很多时间,如果有人能提供任何帮助,我将不胜感激。提前致谢。

/*** FLEXBOX ***************************************/
/*  SECTIONS  */
.section {
  clear: both;
  padding-top:50px;
  margin: 0px;
}

.a {
    background-color: #fff;
    text-align: center;
    padding-top: 20px;
}

.b {
  background-color: #fff;
  text-align:center;
  padding-top:20px;
}

.c {
  background-color: #fff;
  text-align:center;
  padding-top:20px;

}

/*  GRID OF THREE           ============================================================================= */
@media only screen and (min-width: 640px) {
  .span_3_of_3 {
    width: 100%;
  }

  .span_2_of_3 {
    width: 66.1%;
  }

  .span_1_of_3 {
    width: 32.2%;
  }

  /*  COLUMN SETUP  */
  .col {
    display: block;
    float: left;
    margin: 1% 0 1% 1.6%;
  }

  .col:first-child {
    margin-left: 0;
  }
}
@media only screen and (max-width: 640px) {


  .section {

    display: -webkit-box;
    display: -moz-box;
    display: -webkit-flexbox;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    width: 100%; /* fix for Firefox */
    -webkit-box-orient: vertical;
    -moz-box-orient: vertical;
-webkit-box-direction: normal;
-moz-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
text-align: center;
left: 0px;
right: 0px;
padding-left: 0px;
  }

  .a {
    -webkit-box-ordinal-group: 1;
    -moz-box-ordinal-group: 1;
    -webkit-flex-order: 1;
    -ms-flex-order: 1;
    -webkit-order: 1;
    order: 1;
  }

  .b {
    -webkit-box-ordinal-group: 2;
    -moz-box-ordinal-group: 2;
    -webkit-flex-order: 2;
    -ms-flex-order: 2;
    -webkit-order: 2;
    order: 2;
  }

  .c {
    -webkit-box-ordinal-group: 3;
    -moz-box-ordinal-group: 3;
    -webkit-flex-order: 3;
    -ms-flex-order: 3;
    -webkit-order: 3;
    order: 3;
  }  
}

【问题讨论】:

  • 您是否也在使用视口标签(进入 head 元素内部)? <meta name="viewport" content="width=device-width, initial-scale=1.0">
  • 还应该提到IE Mobile支持@viewport rules带ms前缀而不是viewport标签。
  • 太棒了。我希望当我将 Cimmanon Bat Signal 照射在云层上时,你会看到它并接听电话。我已经添加了您在第一条评论中的代码行,现在一切都很好。它现在可以在我的 iPhone 5 上的 Safari 和 Chrome 中运行。但是,我没有要测试的 MS Mobile 设备。我在 CSS @-ms-viewport {width: device-width;} @-o-viewport {width: device-width;} @-viewport {width: device-width;} 中添加了以下行 Opera 的新 CSS 代码正在正确测试。非常感谢西马农!

标签: html css responsive-design flexbox


【解决方案1】:

其他很多博客都写过,像 iOS 这样的移动操作系统还不支持 flex 方向:

https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html

【讨论】:

  • 你错了。自 Safari 3.0 和 iOS 1.0 起,每个 webkit-box/-webkit-flexbox/flex 规范都支持 Flex 方向。它写在您发布的实际链接中。
猜你喜欢
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 2017-08-22
  • 1970-01-01
  • 2015-08-22
  • 2016-11-09
相关资源
最近更新 更多