Bootstrap 卡片图像在 Internet Explorer 中失真
Bootstrap card image distorted in Internet Explorer
我在我的布局中使用 bootstrap v4 卡片,不幸的是,图像在 Internet Explorer 11 中失真。IE 似乎完全忽略了 [=13] 给出的 height: auto
属性=] class。是否有必要对卡片图像应用自定义高度?但是,卡片在 Chrome 和 Firefox 中呈现完美。有趣的是,如果我将引擎更改为 IE 10(在 F12 控制台中),问题就消失了。
class img-fluid
没有被卡片包裹的图片按照原始比例显示,我认为问题与卡片布局有关。
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="card">
<img class="card-img-top img-fluid" src="img/1.jpg" alt="Step 1" width="600" height="400" />
<div class="card-block">
<h3 class="card-title">Step 1</h3>
<p class="card-text">Text 1</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<img class="card-img-top img-fluid" src="img/2.jpg" alt="Step 2" width="600" height="400" />
<div class="card-block">
<h3 class="card-title">Step 2</h3>
<p class="card-text">Text 2</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<img class="card-img-top img-fluid" src="img/3.jpg" alt="Step 3" width="600" height="400" />
<div class="card-block">
<h3 class="card-title">Step 3</h3>
<p class="card-text">Text 3</p>
</div>
</div>
</div>
</div>
</div>
Bootstrap 4 仍处于 alpha 阶段,因此您应该会遇到各种问题。
IE 11 中的图像高度问题已经确定,您可以在此处进行跟踪:
我有同样的问题,但是当我将卡片的内容包裹在 <a>
标签中以使其可点击并自行修复时,但是卡片的高度在 IE11 中是错误的,我修复了通过将 height: 100%
添加到 <a>
标签:
<div class="col-md-4">
<div class="card h-100">
<a href="/document" style="height:100%;">
<img class="card-img-top img-fluid" src="foo.jpg">
<div class="card-block">
<h4>doc number 4</h4>
<p class="card-text">yada yada</p>
</div>
</a>
</div>
</div>
如果您不想让您的卡片可点击,您可以将 <a>
替换为 <div>
(我没有测试过)。
我遇到了同样的问题。刚刚添加了常规的老派 class "img-responsive" & 现在似乎在 Chrome 中工作正常。
<img class="card-img-top img-responsive" src="images/your-image.jpg" alt="Description">
更新BS版本4:
img-responsive
现在是
img-fluid
对外部容器使用overflow: hidden
行内样式有魔力...
例如:style="height: 100%; overflow: hidden;"
这是一个已知问题。您可以通过添加 width: 100%;
来解决此问题
根据文档:
SVG images and IE 10 In Internet Explorer 10, SVG images with
.img-fluid are disproportionately sized. To fix this, add width: 100%
; where necessary. This fix improperly sizes other image formats, so
Bootstrap doesn’t apply it automatically.
您可以查看此 link 中的文档:https://getbootstrap.com/docs/4.3/content/images/
添加height:100%;也可以这样做:
.card img{
height:100%;
}
如果您不想添加另一个 class 等来修复资源管理器中的问题。
解决方案是将 d-block
(display:block) 添加到父级 div:
<div class="card d-block">
<img class="card-img-top" src="someimage.jpg">
</div>
根据 issue tracker 中的评论,在 IE11 中唯一对我有用的是在卡片图像中添加 height: 0.01px
。
为了使其特定于 IE,我添加了以下规则:
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* IE10, IE11 */
.card-img-top {
min-height: 0.01px;
}
}
在我的例子中,我还有一个 .card-footer
无法在 IE11 中正确呈现所有以前的答案。我正在使用 Bootstrap 4.1.3.
对我来说最好的解决方案是只修改 IE。
原来是 card-body
文本引起的问题最多,因为它没有正确换行。
card
元素确实也需要 display:block;
但同样,仅在 IE 上。
不需要为其他浏览器添加块,因为它会影响使用mt-auto
class或其他实用程序。
完整的解决方案如下:
<div class="card ie-block">
<img src="https://picsum.photos/500/300" class="card-img-top" />
<div class="card-body">
<div class="ie-wrapper"><h5 class="card-title ie-inner">Card title</h5></div>
<div class="ie-wrapper"><p class="card-text ie-inner">Some quick example text to build on the card title and make up the bulk of the card's content.</p></div>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
然后,仅添加以下IE10+ CSS:
/* IE10+ specific styles go here */
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
.ie-block {
display: block;
}
.ie-wrapper {
display: flex;
}
.ie-inner {
flex-basis: 100%;
}
}
我在我的布局中使用 bootstrap v4 卡片,不幸的是,图像在 Internet Explorer 11 中失真。IE 似乎完全忽略了 [=13] 给出的 height: auto
属性=] class。是否有必要对卡片图像应用自定义高度?但是,卡片在 Chrome 和 Firefox 中呈现完美。有趣的是,如果我将引擎更改为 IE 10(在 F12 控制台中),问题就消失了。
class img-fluid
没有被卡片包裹的图片按照原始比例显示,我认为问题与卡片布局有关。
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="card">
<img class="card-img-top img-fluid" src="img/1.jpg" alt="Step 1" width="600" height="400" />
<div class="card-block">
<h3 class="card-title">Step 1</h3>
<p class="card-text">Text 1</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<img class="card-img-top img-fluid" src="img/2.jpg" alt="Step 2" width="600" height="400" />
<div class="card-block">
<h3 class="card-title">Step 2</h3>
<p class="card-text">Text 2</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<img class="card-img-top img-fluid" src="img/3.jpg" alt="Step 3" width="600" height="400" />
<div class="card-block">
<h3 class="card-title">Step 3</h3>
<p class="card-text">Text 3</p>
</div>
</div>
</div>
</div>
</div>
Bootstrap 4 仍处于 alpha 阶段,因此您应该会遇到各种问题。
IE 11 中的图像高度问题已经确定,您可以在此处进行跟踪:
我有同样的问题,但是当我将卡片的内容包裹在 <a>
标签中以使其可点击并自行修复时,但是卡片的高度在 IE11 中是错误的,我修复了通过将 height: 100%
添加到 <a>
标签:
<div class="col-md-4">
<div class="card h-100">
<a href="/document" style="height:100%;">
<img class="card-img-top img-fluid" src="foo.jpg">
<div class="card-block">
<h4>doc number 4</h4>
<p class="card-text">yada yada</p>
</div>
</a>
</div>
</div>
如果您不想让您的卡片可点击,您可以将 <a>
替换为 <div>
(我没有测试过)。
我遇到了同样的问题。刚刚添加了常规的老派 class "img-responsive" & 现在似乎在 Chrome 中工作正常。
<img class="card-img-top img-responsive" src="images/your-image.jpg" alt="Description">
更新BS版本4:
img-responsive
现在是
img-fluid
对外部容器使用overflow: hidden
行内样式有魔力...
例如:style="height: 100%; overflow: hidden;"
这是一个已知问题。您可以通过添加 width: 100%;
根据文档:
SVG images and IE 10 In Internet Explorer 10, SVG images with .img-fluid are disproportionately sized. To fix this, add width: 100% ; where necessary. This fix improperly sizes other image formats, so Bootstrap doesn’t apply it automatically.
您可以查看此 link 中的文档:https://getbootstrap.com/docs/4.3/content/images/
添加height:100%;也可以这样做:
.card img{
height:100%;
}
如果您不想添加另一个 class 等来修复资源管理器中的问题。
解决方案是将 d-block
(display:block) 添加到父级 div:
<div class="card d-block">
<img class="card-img-top" src="someimage.jpg">
</div>
根据 issue tracker 中的评论,在 IE11 中唯一对我有用的是在卡片图像中添加 height: 0.01px
。
为了使其特定于 IE,我添加了以下规则:
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* IE10, IE11 */
.card-img-top {
min-height: 0.01px;
}
}
在我的例子中,我还有一个 .card-footer
无法在 IE11 中正确呈现所有以前的答案。我正在使用 Bootstrap 4.1.3.
对我来说最好的解决方案是只修改 IE。
原来是 card-body
文本引起的问题最多,因为它没有正确换行。
card
元素确实也需要 display:block;
但同样,仅在 IE 上。
不需要为其他浏览器添加块,因为它会影响使用mt-auto
class或其他实用程序。
完整的解决方案如下:
<div class="card ie-block">
<img src="https://picsum.photos/500/300" class="card-img-top" />
<div class="card-body">
<div class="ie-wrapper"><h5 class="card-title ie-inner">Card title</h5></div>
<div class="ie-wrapper"><p class="card-text ie-inner">Some quick example text to build on the card title and make up the bulk of the card's content.</p></div>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
然后,仅添加以下IE10+ CSS:
/* IE10+ specific styles go here */
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
.ie-block {
display: block;
}
.ie-wrapper {
display: flex;
}
.ie-inner {
flex-basis: 100%;
}
}