通过设置backgroundsize控制背景图的自动缩放

18 篇文章 0 订阅
4 篇文章 1 订阅
该博客主要讨论如何通过设置CSS的`background-size`属性实现图片在不同设备和屏幕尺寸下的自适应显示。作者在父组件和子组件之间传递屏幕宽高,并在子组件中监听宽度和高度变化,但最终发现只需简单地设置`background-size: 100% 100%;`即可使图片铺满容器,实现了自适应效果。
摘要由CSDN通过智能技术生成

更新:

是我太nt了,其实吧设置一下background-size就完事…

.pic1{
 background: url('../assets/imgs/wall_index/pic1.png');
  background-size: 100% 100%;
}
 

原文:


父组件:

<template>
  <div class="home">
    <index-page :Width="windowWidth" :Height="windowHeight" />
  </div>
</template>

<script>

import indexPage from "../components/indexPage";

export default {
  name: "Home",
  components: {
    "index-page": indexPage,
  },
  data() {
    return {
      windowWidth: document.documentElement.clientWidth, //实时屏幕宽度
      windowHeight: document.documentElement.clientHeight, //实时屏幕高度
    };
  },
  // <!--在watch中监听实时宽高-->
  watch: {
    windowHeight(val) {
      let that = this;
      console.log("实时屏幕高度:", val, that.windowHeight);
    },
    windowWidth(val) {
      let that = this;
      console.log("实时屏幕宽度:", val, that.windowHeight);
    },
  },
  mounted() {
    var that = this;
    // 传入初始高度
    window.onload = () => {
      return (() => {
        that.windowHeight = document.documentElement.clientHeight; // 高
        that.windowWidth = document.documentElement.clientWidth; // 宽
      })();
    };
    // 传入调整高度
    // <!--把window.onresize事件挂在到mounted函数上-->
    window.onresize = () => {
      return (() => {
        that.windowHeight = document.documentElement.clientHeight; // 高
        that.windowWidth = document.documentElement.clientWidth; // 宽
      })();
    };
  },
  methods: {
  
  },
};
</script>

子组件:

<template id="index">
  <div>
    <div class="back" id="picture1">
      <img src="../assets/imgs/indexBackground.png" id="img" />
    </div>
  </div>
</template>

<script>
export default {
  name: "indexPage",
  props: {
    Width: Number,
    Height: Number,
  },
  created() {},
  data() {
    return {
    // 开始时获取并自适应
      width: document.documentElement.clientWidth,
      height: document.documentElement.clientHeight,
      props: ["Width", "Height"],
    };
  },
  mounted() {
    this.change()
  },
  // 实时监听页面宽高
  watch: {
    // eslint-disable-next-line no-unused-vars
    Width(newWidth, oldWidth) {
      this.width = newWidth;
      // console.log(newWidth);
      this.change();
    },
    // eslint-disable-next-line no-unused-vars
    Height(newHeight, oldHeight) {
      this.height = newHeight;
      // console.log(newHeight);
      this.change();
    },
  },
  methods: {
    change() {
      var pic = document.getElementById("img");
      pic.width = this.width;
      pic.height = this.height;
    },
  },
};
</script>

<style scoped>
.back {
  z-index: 1;
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
}
</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值