基于 Flexbox 的 CSS 无法在任何 iOS 浏览器上运行
Flexbox-based CSS not functioning on any iOS browser
我正在为我的网站使用 Jade、Stylus 和 Node JS。它在桌面 Chrome、Firefox、IE 和 Edge 上运行良好。它在 Android Chrome 和浏览器上运行良好。它在 iOS Chrome 或 Safari 上无法正常运行,在两者上都显示出类似的故障。它也不适用于桌面上的 Safari。它似乎适用于 iOS9,但不适用于 iOS8 或更低版本。
这是一张屏幕截图,显示 Android 上的移动设备 Chrome 和 iOS 上的移动设备 Chrome 之间的区别。 http://imgur.com/a/kjU23
即使我明确地放置了 -webkit-,并且 nib 正在编译的 CSS 中生成 -webkit- 前缀,为什么它在移动 iOS 浏览器上不起作用?这是我在 Github 上的完整 CSS。 https://github.com/Connorelsea/LSMSA-SGO-Website/tree/master/public/css
用于测试和演示的实时网站在这里:http://www.lsmsaSGO.com
该网站完整的 Stylus 代码有几千行,但示例如下。我的触控笔代码:
.addMore
text-align center
.multButtons
width 100%
display -webkit-flex
display flex
justify-content center
-webkit-justify-content center
align-items center
-webkit-align-items center
flex-direction column
-webkit-flex-direction column
使用 Stylus 和 Nib 编译CSS。
.addMore {
text-align: center;
}
.addMore .multButtons {
width: 100%;
display: -webkit-flex;
display: -webkit-box;
display: -moz-box;
display: -webkit-flex;
display: -ms-flexbox;
display: box;
display: flex;
-webkit-box-pack: center;
-moz-box-pack: center;
-o-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-justify-content: center;
-webkit-box-align: center;
-moz-box-align: center;
-o-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
-webkit-align-items: center;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-o-box-orient: vertical;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
-webkit-flex-direction: column;
}
我猜这可能出于多种原因而发生。但是您知道您可以查看设备生成的 HTML 输出吗?如果不是:在 iphone/ipad 模拟器(不是实际设备)上加载页面。然后,在 mac 上打开 Safari(同样不是在设备上)。在工具栏中转到首选项 > 高级和 select "Show Develop menu in menu bar".
然后 select 开发 > 模拟器和 select 相应的网页。通过一些调查,您应该能够找到为设备生成的确切输出。
我遇到过几次这样的问题,通常我只能使用上述方法调试它们。
更新 1 (iOS9): 实际上。
Here's a link to the generated source code. 这是页面在 iPhone 5 模拟器上的样子:
更新 2 (iOS8):
这是运行osiOS8。 Here's a link to the source
关闭 .issueContainer
上的 flex
似乎可以解决我的问题。
.issueContainer {
/* display: -webkit-flex; */
/* display: flex; */
/* flex-direction: row; */
/* align-items: center; */
}
.issueContainer
不需要 flexbox 来使其子级堆叠,因为这是默认行为。
使用 Autoprefixer CSS online,您将获得 CSS 规则的所有当前供应商前缀。这是您将获得的结果:
.addMore .multButtons {
width: 100%;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
我正在为我的网站使用 Jade、Stylus 和 Node JS。它在桌面 Chrome、Firefox、IE 和 Edge 上运行良好。它在 Android Chrome 和浏览器上运行良好。它在 iOS Chrome 或 Safari 上无法正常运行,在两者上都显示出类似的故障。它也不适用于桌面上的 Safari。它似乎适用于 iOS9,但不适用于 iOS8 或更低版本。
这是一张屏幕截图,显示 Android 上的移动设备 Chrome 和 iOS 上的移动设备 Chrome 之间的区别。 http://imgur.com/a/kjU23
即使我明确地放置了 -webkit-,并且 nib 正在编译的 CSS 中生成 -webkit- 前缀,为什么它在移动 iOS 浏览器上不起作用?这是我在 Github 上的完整 CSS。 https://github.com/Connorelsea/LSMSA-SGO-Website/tree/master/public/css
用于测试和演示的实时网站在这里:http://www.lsmsaSGO.com
该网站完整的 Stylus 代码有几千行,但示例如下。我的触控笔代码:
.addMore
text-align center
.multButtons
width 100%
display -webkit-flex
display flex
justify-content center
-webkit-justify-content center
align-items center
-webkit-align-items center
flex-direction column
-webkit-flex-direction column
使用 Stylus 和 Nib 编译CSS。
.addMore {
text-align: center;
}
.addMore .multButtons {
width: 100%;
display: -webkit-flex;
display: -webkit-box;
display: -moz-box;
display: -webkit-flex;
display: -ms-flexbox;
display: box;
display: flex;
-webkit-box-pack: center;
-moz-box-pack: center;
-o-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-justify-content: center;
-webkit-box-align: center;
-moz-box-align: center;
-o-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
-webkit-align-items: center;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-o-box-orient: vertical;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
-webkit-flex-direction: column;
}
我猜这可能出于多种原因而发生。但是您知道您可以查看设备生成的 HTML 输出吗?如果不是:在 iphone/ipad 模拟器(不是实际设备)上加载页面。然后,在 mac 上打开 Safari(同样不是在设备上)。在工具栏中转到首选项 > 高级和 select "Show Develop menu in menu bar".
然后 select 开发 > 模拟器和 select 相应的网页。通过一些调查,您应该能够找到为设备生成的确切输出。
我遇到过几次这样的问题,通常我只能使用上述方法调试它们。
更新 1 (iOS9): 实际上。 Here's a link to the generated source code. 这是页面在 iPhone 5 模拟器上的样子:
更新 2 (iOS8):
这是运行osiOS8。 Here's a link to the source
关闭 .issueContainer
上的 flex
似乎可以解决我的问题。
.issueContainer {
/* display: -webkit-flex; */
/* display: flex; */
/* flex-direction: row; */
/* align-items: center; */
}
.issueContainer
不需要 flexbox 来使其子级堆叠,因为这是默认行为。
使用 Autoprefixer CSS online,您将获得 CSS 规则的所有当前供应商前缀。这是您将获得的结果:
.addMore .multButtons {
width: 100%;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}