Bootstrap 4在IE10的Rails应用中表格列网格类失效问题咨询
解决Bootstrap 4.0.0在IE10中表格col-*网格类失效的问题
我之前也碰到过类似的兼容坑,结合你在Rails 5.1.5应用里的场景,给你几个实用的解决方案:
1. 补充IE10所需的Polyfill
Bootstrap 4默认采用Flexbox布局,但IE10对Flexbox的支持不完全,这是col-*类失效的核心原因之一。你可以通过兼容包来修复:
- 首先通过Yarn安装依赖:
yarn add bootstrap-ie10 - 然后在
app/assets/javascripts/application.js中引入://= require bootstrap-ie10 - 同时确保页面
<head>里添加强制IE使用最新渲染模式的meta标签:<meta http-equiv="X-UA-Compatible" content="IE=edge">
2. 改用固定宽度替代col-*类
如果polyfill还是没解决问题,可以直接给表格表头设置内联宽度,对应col-*的比例:
- col-1对应
8.33%,col-4对应33.33%,col-2对应16.66%,以此类推 - 修改你的表格代码:
<table class="table table-hover table-bordered"> <thead> <tr class="table-title-bg"> <th style="width: 8.33%;">COD SAP</th> <th style="width: 33.33%;">DESCRIPCION</th> <th style="width: 16.66%;">REF. FABRICANTE</th> <th style="width: 8.33%;">FABRICANTE</th> <th style="width: 8.33%;">STOCK</th> <th style="width: 8.33%;">PRECIO MEDIO(€)</th> <th style="width: 16.66%;">PLANTA</th> <!-- 其他列 --> </tr> </thead> <!-- 表格主体 --> </table>
这种方式直接绕过了IE10对Flexbox网格的兼容问题,兼容性更稳定。
3. 检查并修复CSS冲突
有时候自定义CSS会覆盖Bootstrap的col-*样式,你可以打开IE10的开发者工具(按F12),选中对应的<th>元素,查看width属性是否被其他样式覆盖。如果有:
- 调整自定义CSS的选择器优先级,比如用更具体的选择器(例如
.table .table-title-bg th.col-1) - 必要时可以临时添加
!important强制生效(尽量少用,避免后续样式维护麻烦)
4. 升级Bootstrap到4.x稳定版本
Bootstrap 4.0.0作为早期版本,存在一些IE10的兼容bug,后续的4.6.x版本修复了不少这类问题。你可以升级Bootstrap:
- 修改Gemfile中的Bootstrap版本:
gem 'bootstrap', '~> 4.6.0' - 执行
bundle install更新依赖 - 重新编译assets:
rails assets:precompile
内容的提问来源于stack exchange,提问作者Ernesto G
相关产品推荐
相关产品推荐

