我使用transform
根据EXIF数据旋转图像,然后,我想通过将其适配到其父div来“全屏”显示它。
问题是,max-width
/max-height
和所有其他大小调整指令“忽略”旋转(这是正常的,根据transform
规范,元素的转换在流中被“忽略”)。
小提琴:http://jsfiddle.net/puddjm4y/2/
div.top {
position: fixed;
width: 100%;
height: 100%;
border: 1px solid blue;
}
img {
transform: rotate(90deg);
max-width: 100%;
max-height: 100%;
}
<div class="top">
<img src="http://www.androidpolice.com/wp-content/uploads/2014/02/nexusae0_wm_DSC02232.jpg">
</div>
有没有办法做到这一点?
9条答案
按热度按时间ruyhziif1#
对于全屏显示,最简单的解决方案是使用视口单位指定图像的宽度和高度:
使用CSS转换可以将图像移到中间。下面是一个例子,它使用了比视口大和小的两个图像:
cidc1ykv2#
使元素的高度等于宽度,反之亦然,这是一个Javascript的事情,因为它可以检索这些值并将其设置回来。
在CSS中,没有办法做到这一点,动态维度也不可能做到,我们不知道
100%
到底等于什么,即使我们知道,我们也不能使用它们,因为没有对它们的引用。但是,如果您使用固定值,可以通过媒体查询进行操作,那么为什么不使用变量,这样我们就有了值和对它的引用。
不过,这也只是一个想法。
wbgh16ku3#
我可能会选择这样的东西(使用视口大小调整交换最大宽度/高度)
shstlldc4#
您可以在JavaScript中通过检查容器高度并将图像的
maxWidth
设置为容器的高度来完成此操作。g2ieeal75#
我终于找到了我需要这个问题的答案,也许它会帮助别人。我有一个Flex的父母和孩子,我需要旋转的基础上EXIF。我需要图像方向:从图像;
t9eec4r06#
这里有一个需要手动同步宽度/高度的尝试,对于那些愿意使用JS的人来说,这应该是相当容易同步的。
这就是:
定位变得笨拙。然而,我希望有人能从这里分支出来,变出一个更好的解决方案。
t2a7ltrp7#
如果你可以忽略变换部分,因为这是一个纵横比的问题,没有答案,但是显示图像到父元素的100%是可能的,并且将不需要任何媒体查询到它。100%是相对于父元素的,并且对于图像来说,它是控制尺寸的纵横比。我们可以拉伸它,但是那将不起作用。希望下面的css能在某些方面对你有所帮助。
ss2ws0br8#
我使用图像的自然宽度和高度来计算变换比例,如我在以下位置所记录的:
https://stackoverflow.com/a/61620946/7037600
sq1bmfud9#
对于exif部分,你不能用css来做,因为css无法准备好exif数据。
对于CSS部分,你需要使用
transform-origin
,而不仅仅是transform
,还需要使用宽度100%和高度自动保持比例。下面是一个例子:http://jsfiddle.net/yxqgt2d1/1/