跳转到内容
返回

动态设置背景图容器大小

起因

最近在做一个官网的效果的时候,出现了背景图过大,导致不同显示器显示的图片大小不一样,和影响下面内容的布局问题。所以记录一下这个坑。

用到的知识

css3

background-position:指定背景图像位置 background-size:指定背景图像的大小

js

onresize:当窗口大小发生变化时触发某一段代码

分析

问题

解决

代码演示

CSS

/* 设置背景容器样式 */
.banner {
  width: 100vw;
  /* 最大宽度为图片本身宽度 */
  max-height: 520px;
  /* 最大高度为图片最大高度 */
  max-width: 1920px;
  background: url("./banner1.png") no-repeat;
  /* 设置图片位置 为容器 居中 顶部 */
  background-position: center top;
  /* 设置图片一直以合适的比例在容器中显示 */
  background-size: contain;
}

HTML

<div class="banner" id="banner"></div>

JS

let changeH = function () {
  let banner = document.querySelector("#banner");
  // 获取banner的宽度
  let width = banner.clientWidth;
  // 计算图片宽高比例
  let prop = parseInt(1920 / 520);
  // 获取当前宽度下合适的高度
  let height = parseInt(width / prop);
  // 设置容器高度
  banner.style.height = height + "px";
};
// 初始化容器高度
let init = function () {
  changeH();
};
init();
// 监听窗口大小变化 一旦变化就触发内部的函数
window.onresize = function () {
  changeH();
};

在Vue中使用

可以在组件的mounted中使用onresize事件,在通过this.$refs来获取到你的容器,然后操作就是一样了



上一篇
浮动功能栏
下一篇
高效利用GITHUB
×