目前,使用STYLE,我可以使用width: 100%和auto on height(反之亦然),但我仍然不能将图像约束到特定的位置,要么太宽,要么太高,分别。
什么好主意吗?
目前,使用STYLE,我可以使用width: 100%和auto on height(反之亦然),但我仍然不能将图像约束到特定的位置,要么太宽,要么太高,分别。
什么好主意吗?
当前回答
我不是想翻旧账,但是…
#container img {
max-width:100%;
height:auto !important;
}
即使这是不合适的,因为你使用!重要的覆盖高度,如果你使用CMS,如WordPress,为你设置高度和宽度,这工作得很好。
其他回答
简单优雅的工作解决方案:
img {
width: 600px; /*width of parent container*/
height: 350px; /*height of parent container*/
object-fit: contain;
position: relative;
top: 50%;
transform: translateY(-50%);
}
其中一个答案包括background-size: contains css语句,我很喜欢这个语句,因为它直接说明了你想做什么,浏览器就会完成它。
不幸的是,迟早你会需要应用一个阴影,不幸的是,它不会很好地与背景图像解决方案。
假设你有一个响应性很强的容器,但是它对最小和最大宽度和高度有很好的定义。
.photo {
max-width: 150px;
min-width: 75px;
max-height: 150px;
min-height: 75px;
}
容器有一个img,它必须知道容器高度的像素,以避免得到一个非常高的图像,溢出或裁剪。
img还应该定义一个max-width为100%,首先是为了允许更小的宽度被渲染,其次是基于百分比的,这使得它成为参数。
.photo > img {
max-width: 100%;
max-height: 150px;
-webkit-box-shadow: 0 0 13px 3px rgba(0,0,0,1);
-moz-box-shadow: 0 0 13px 3px rgba(0,0,0,1);
box-shadow: 0 0 13px 3px rgba(0,0,0,1);
}
注意,它有一个漂亮的阴影;)
享受一个活生生的例子在这小提琴:http://jsfiddle.net/pligor/gx8qthqL/2/
使用JQuery,因为CSS是一个普遍的误解(这里关于简单设计目标的无数问题和讨论表明了这一点)。
用CSS做你想做的事情是不可能的:图像的宽度应该是100%,但如果这个宽度导致高度太大,max-height应该应用-当然正确的比例应该被保留。
最好在应该尊重纵横比的尺寸上使用auto。如果你没有将另一个属性设置为auto,现在大多数浏览器会假设你想要尊重纵横比例,但不是所有的浏览器都这样(例如,windows phone 8上的IE10就不这样)。
width: 100%;
height: auto;
如果你只在一个图像上定义一个维度,图像的纵横比将始终保持。
问题是图像比你喜欢的更大/更高吗?
你可以把它放在一个DIV中,这个DIV被设置为你想要的图像的最大高度/宽度,然后设置overflow:hidden。那样会把你想要的东西都剪掉。
如果图像的宽度和高度都是100%,而你认为它太高了,这是因为保留了纵横比。您需要裁剪或更改纵横比。
请提供一些关于你具体想要完成的事情的更多信息,我会尽量帮助更多!
——根据反馈进行编辑——
你熟悉最大宽度和最大高度属性吗?你可以设置这些。如果你没有设置任何最小值,你设置了最大高度和宽度,那么你的图像将不会失真(纵横比将被保留),它将不会比最长的维度大。