22

我正在最新版本的 Safari for Windows 7 中测试这个问题。

问题是此代码适用于所有其他浏览器,但 safari:

 <style type="text/css">
    .userImg { height: 100%; width: 100%; }
    .imgContainer { height: auto; width: 150px; }
 </style>

 <div class="imgContainer">
    <img id="img" class="userImg" src="TemplateFiles/Hydrangeas.jpg" alt="" />
 </div>

有谁知道在 Safari 中仅使用 CSS 按比例调整图像大小的技巧?

谢谢!

4

5 回答 5

119

对于那些需要使用自动高度并且图像的父级设置为 display: flex的人,这个技巧会有所帮助。

image { align-self: flex-start; }

如果你的 image 的父级设置了 flex-direction: column,你需要这样做。

image { justify-self: flex-start; }
于 2020-04-13T21:15:26.547 回答
14

只需在图像上设置宽度。浏览器会自动按比例缩放图像。

.userImg { width: 100%; }
.imgContainer { height: auto; width: 150px; }​
于 2012-05-25T19:24:56.773 回答
4
.userImg { width: 100%; height: auto; }
.imgContainer { width: 150px; }​

2019 年。检查也许是父元素

.imgContainer { display: flex; align-items: stretch}  
于 2019-12-20T06:58:49.627 回答
4

对于那些需要使用height auto的人,你也可以试试这个:

.userImg{
    object-fit: contain;
}
于 2020-07-07T09:45:46.520 回答
2

试试这个: 父母有 display:flex 孩子有 align-self:center

@import url('https://fonts.googleapis.com/css?family=Slabo+27px');
body {
  font-family: "Slabo 27px", serif;
}
h2 {
  text-align: center;
}
[data-flex] {
  display: flex;
  width: 80%;
  max-width: 800px;
  font-size: 1.2rem;
  margin: 0 auto;
  line-height: 1.5;
}
[data-flex] > img {
  margin-right: 2rem;
  width: 30%;
}
[data-center] {
  align-items: center;
}
[data-flex] div, [data-flex] p {
  flex: 1;
}
[data-flex] div {
  margin-right: 2rem;
}
[data-flex] div img {
  width: 100%;
}
<base href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/">
<h2>By default, images that are flex-children will be their <em>natural</em> height, regardless of their width:</h2>
<div data-flex>
  <img src="sophie.jpg" alt>
</div>
<h2>This can be avoided by <em>not</em> specifying a width for the image, but that makes it non-responsive:</h2>
<div data-flex>
  <img src="sophie.jpg" alt style="width: auto">
</div>
<h2>Solution 1: apply <code>align-self: center</code> to the image</h2>
<div data-flex>
  <img src="sophie.jpg" alt style="align-self: center">
</div>

<h2>Solution 2: apply <code>align-items: center</code> to the flex container</h2>
<div data-flex data-center>
  <img src="sophie.jpg" alt>
</div>

<h2>Solution 3: Place the image inside another container, and make <em>that</em> the flex-child</h2>

<div data-flex data-center>
  <div>
  <img src="sophie.jpg" alt>
  </div>
</div>

于 2020-12-31T19:59:33.303 回答