前端使用scale属性结合CSS动态样式实现动态的图片缩放效果
2024-01-08 11:36:12
废话不多说,直接上代码:
示例一,使用css动态样式结合scale进行src图片的缩放。
//结构层,使用动态属性配合计算属性来实现动态样式
<img :src="selectedItem.url" alt="" :style="elementStyle(item)" >
//在计算属性中,使用return(item)来接收从结构层中传递的相关宽高值
computed: {
elementStyle() {
return (item) => {
//注意此处1038以及518是设定的父容器的盒子大小
const scale_x = 1038 / this.selectedItem.width;
const scale_y = 518 / this.selectedItem.height;
const scale = scale_x < scale_y ? scale_x : scale_y;
const rect_width = scale * this.selectedItem.width;
const rect_height = scale * this.selectedItem.height;
// const background_size_x = scale * this.selectedItem.width;
// const background_size_y = scale * this.selectedItem.height;
// const background_position_x = scale * this.selectedItem.width;
// const background_position_y = scale * this.selectedItem.height;
return {
// backgroundSize: `${background_size_x}px ${background_size_y}px`,
// backgroundPosition: `${background_position_x}px ${background_position_y}px`,
width: `${rect_width}px`,
height: `${rect_height}px`
};
}
}
},
示例二,使用css动态样式结合scale进行background背景图图片的缩放。
<!-- 通过背景图方式展示图片 -->
<div :style=getelementStyle(item)></div>
//在计算属性中
getelementStyle() {
return (item) => {
//注意此处188以及108是设定的父容器的盒子大小
const scale_x = 188 / item.width;
const scale_y = 108 / item.height;
const scale = scale_x < scale_y ? scale_x : scale_y;
const rect_width = scale * item.width;
const rect_height = scale * item.height;
const background_size_x = scale * item.width;
const background_size_y = scale * item.height;
const background_position_x = scale * item.width;
const background_position_y = scale * item.height;
return {
backgroundSize: `${background_size_x}px ${background_size_y}px`,
backgroundPosition: `${background_position_x}px ${background_position_y}px`,
width: `${rect_width}px`,
height: `${rect_height}px`,
backgroundImage: `url(${item.url})`
};
};
},
文章来源:https://blog.csdn.net/m0_57005111/article/details/135451354
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!