我知道用CSS实际修改图像是不可能的,这就是我把作物放在引号中的原因。
我想做的是拍摄矩形图像并使用CSS使它们显得方正而不会扭曲图像。
我基本上想转此:
进入这个:
答案 0 :(得分:326)
纯CSS解决方案,没有包装器stack test
或其他无用的代码:
Progress: 1/2Database.HSparql.Connection tests:
selectQuery: [OK]
askQuery: [OK]
constructQuery: [OK]
describeQuery: [OK]
Test Cases Total
Passed 4 4
Failed 0 0
Total 4 4
答案 1 :(得分:70)
假设他们不必在IMG标签中......
<强> HTML:强>
<div class="thumb1">
</div>
<强> CSS:强>
.thumb1 {
background: url(blah.jpg) 50% 50% no-repeat; /* 50% 50% centers image in div */
width: 250px;
height: 250px;
}
.thumb1:hover { YOUR HOVER STYLES HERE }
编辑:如果div需要在某处链接,只需调整HTML和样式:
HTML:
<div class="thumb1">
<a href="#">Link</a>
</div>
<强> CSS:强>
.thumb1 {
background: url(blah.jpg) 50% 50% no-repeat; /* 50% 50% centers image in div */
width: 250px;
height: 250px;
}
.thumb1 a {
display: block;
width: 250px;
height: 250px;
}
.thumb1 a:hover { YOUR HOVER STYLES HERE }
请注意,这也可以修改为具有响应性,例如%宽度和高度等。
答案 2 :(得分:51)
overflow:hidden
)。例如:
<div style="width:200px;height:200px;overflow:hidden">
<img src="foo.png" />
</div>
答案 3 :(得分:30)
使用背景大小:封面 - http://codepen.io/anon/pen/RNyKzB
CSS:
.image-container {
background-image: url('http://i.stack.imgur.com/GA6bB.png');
background-size:cover;
background-repeat:no-repeat;
width:250px;
height:250px;
}
标记:
<div class="image-container"></div>
答案 4 :(得分:14)
我最近遇到了同样的问题,结果却采用了稍微不同的方法(我无法使用背景图像)。它确实需要一点点jQuery来确定图像的方向(我确定你可以使用普通的JS)。
如果您对更多解释感兴趣,我写了blog post about it,但代码非常简单:
HTML:
<ul class="cropped-images">
<li><img src="http://fredparke.com/sites/default/files/cat-portrait.jpg" /></li>
<li><img src="http://fredparke.com/sites/default/files/cat-landscape.jpg" /></li>
</ul>
CSS:
li {
width: 150px; // Or whatever you want.
height: 150px; // Or whatever you want.
overflow: hidden;
margin: 10px;
display: inline-block;
vertical-align: top;
}
li img {
max-width: 100%;
height: auto;
width: auto;
}
li img.landscape {
max-width: none;
max-height: 100%;
}
jQuery的:
$( document ).ready(function() {
$('.cropped-images img').each(function() {
if ($(this).width() > $(this).height()) {
$(this).addClass('landscape');
}
});
});
答案 5 :(得分:3)
object-fit: cover
将完全满足您的需求。
但是它可能不适用于IE / Edge。按照如下所示操作,使用 just CSS 对其进行修复,以在所有浏览器上运行。
我采取的方法是使用绝对将图像放置在容器内,然后使用以下组合将其放置在中间位置:
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
一旦它居中,我就给图片
// For vertical blocks (i.e., where height is greater than width)
height: 100%;
width: auto;
// For Horizontal blocks (i.e., where width is greater than height)
height: auto;
width: 100%;
这使图像获得Object-fit:cover的效果。
https://jsfiddle.net/furqan_694/s3xLe1gp/
此逻辑适用于所有浏览器。
答案 6 :(得分:2)
我有类似的问题,无法与背景图片“妥协”。 我想出了这个。
<div class="container">
<img src="http://lorempixel.com/800x600/nature">
</div>
.container {
position: relative;
width: 25%; /* whatever width you want. I was implementing this in a 4 tile grid pattern. I used javascript to set height equal to width */
border: 2px solid #fff; /* just to separate the images */
overflow: hidden; /* "crop" the image */
background: #000; /* incase the image is wider than tall/taller than wide */
}
.container img {
position: absolute;
display: block;
height: 100%; /* all images at least fill the height */
top: 50%; /* top, left, transform trick to vertically and horizontally center image */
left: 50%;
transform: translate3d(-50%,-50%,0);
}
//assuming you're using jQuery
var h = $('.container').outerWidth();
$('.container').css({height: h + 'px'});
希望这有帮助!
答案 7 :(得分:1)
使用CSS:overflow:
.thumb {
width:230px;
height:230px;
overflow:hidden
}
答案 8 :(得分:1)
使用方形尺寸的div和里面带有.testimg类的图像:
.test {
width: 307px;
height: 307px;
overflow:hidden
}
.testimg {
margin-left: -76px
}
或带有图像背景的方形div。
.test2 {
width: 307px;
height: 307px;
background: url(http://i.stack.imgur.com/GA6bB.png) 50% 50%
}
以下是一些示例:http://jsfiddle.net/QqCLC/1/
更新了图片中心
.test {
width: 307px;
height: 307px;
overflow: hidden
}
.testimg {
margin-left: -76px
}
.test2 {
width: 307px;
height: 307px;
background: url(http://i.stack.imgur.com/GA6bB.png) 50% 50%
}
<div class="test"><img src="http://i.stack.imgur.com/GA6bB.png" width="460" height="307" class="testimg" /></div>
<div class="test2"></div>
答案 9 :(得分:1)
查看 CSS aspect-ratio
https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio
.square-image{
width: 50%;
background-image: url('https://picsum.photos/id/0/367/267');
background-size: cover;
background-position: center;
aspect-ratio: 1/1;
}
<div class="square-image"></div>
注意:尚不支持 MOZILLA Firefox(截至 2021 年 4 月 13 日)
答案 10 :(得分:0)
如果图像位于具有响应宽度的容器中:
HTML
<div class="img-container">
<img src="" alt="">
</div>
CSS
.img-container {
position: relative;
&::after {
content: "";
display: block;
padding-bottom: 100%;
}
img {
position: absolute;
width: 100%;
height: 100%;
object-fit: cover;
}
}