// 图片默认全屏,即宽或高100%
// 获取div可视宽高(clientHeight,clientWidth)
var largeImageBox = document.getElementById('largeImageBox')
// 默认图片宽/高是全屏
var inner = document.getElementById('largeImage')
if (inner) {
// 防止图片未加载完,宽高取值为0
inner.onload = function () {
// 电脑屏幕高=宽
if (largeImageBox.clientHeight == largeImageBox.clientWidth) {
// 高>=宽,图片高默认为div高度
if (inner.height >= inner.width) {
inner.style.height = largeImageBox.clientHeight + 'px'
} else {
// 高<宽,图片宽默认div宽度
inner.style.width = largeImageBox.clientWidth + 'px'
}
// 电脑屏幕高<宽
} else if (largeImageBox.clientHeight < largeImageBox.clientWidth) {
// 高>=宽,图片高默认为div高度
if (inner.height >= inner.width) {
inner.style.height = largeImageBox.clientHeight + 'px'
} else {
// 确保图片高度不超过100%,超过则取高
const newHeight =
(largeImageBox.clientWidth * inner.height) / inner.width
if (newHeight > largeImageBox.clientHeight) {
inner.style.height = largeImageBox.clientHeight + 'px'
} else {
// 图片宽默认div宽度
inner.style.width = largeImageBox.clientWidth + 'px'
}
}
} else {
// 电脑屏幕高>宽
// 高>=宽,图片宽默认为div宽度
if (inner.height >= inner.width) {
inner.style.width = largeImageBox.clientWidth + 'px'
} else {
// 确保图片宽度不超过100%,超过则取宽
const newWidth =
(largeImageBox.clientHeight * inner.width) / inner.height
if (newWidth > largeImageBox.clientWidth) {
inner.style.width = largeImageBox.clientWidth + 'px'
} else {
// 图片高默认div高度
inner.style.height = largeImageBox.clientHeight + 'px'
}
}
}
}
}
设置图片全屏且不变形(宽/高是div的100%)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、场景描述: 情景1:image尺寸比button大,直接设置AspectFill 情景2:image尺寸比bu...
- 我的简历这个模块,涉及到了生活照的图片的展示,图片的宽高是固定死的:宽度是父控件的33%,高度是105px,在这种...
- 开发过程中经常会遇到如下图的需求,将商品图片或者其他图片变成一组正方形显示,但往往我们拿到的图片并不是正方形的,如...