Vue中页面自适应缩放

px自动转化为rem(使用pxtorem)

在写项目的时候经常会有因为屏幕尺寸不同导致的页面混乱,而px转化为rem可以让页面按照相同的比例进行缩放,使页面效果保持一致。

注意:该插件在行内样式中不生效!!!

  1. 下载第三方包
npm i amfe-flexible // 用于设置 rem 基准值
npm install postcss-pxtorem -D // 是一款 postcss 插件,用于将px单位转化为 rem
  1. 在main.js中引入 ‘amfe-flexible’
import 'amfe-flexible';
  1. 新建一个和src平级的.eslintrc.js文件,并进行配置
 module.exports = {
    // 配置要使用的 PostCSS 插件
    plugins: {
    autoprefixer: {
      browsers: ['Android >= 4.0', 'iOS >= 7', 'ie >= 10'],//配置要兼容到的环境信息
    },
    'postcss-pxtorem': {
      rootValue:16,//通常情况下,我们会将 rootValue 设置为设计稿中根元素的字体大小(例如,如果设计稿中根元素的字体大小是 16px,那么我们可以将 rootValue 设置为 16,这样 1rem 就等于 16px。)
      propList: ['*'], //属性的选择器,*表示通用
      selectorBlackList: [], //忽略的选择器
    },
  },
}

其他

但是因为此时项目要求(看下图),pxtorem已经不符合要求了

   function setScale() {
      let designWidth = 1920; //设计稿的宽度,根据实际项目调整
      let designHeight = 1080; //设计稿的高度,根据实际项目调整
      let dom = document.querySelector('.app');//获取页面的容器
      //元素存在,则会根据当前屏幕尺寸计算缩放比例,并将缩放和尺寸样式应用到容器元素上
      if (dom) {
      //样式用于进行缩放变换
        dom.style.transform = `scale(${document.documentElement.clientWidth / designWidth}, ${document.documentElement.clientHeight / designHeight})`;
      	// transformOrigin 样式用于设置缩放变换的原点,默认是中心点,这里设置为左上角。
        dom.style.transformOrigin = 'left top';
        // width 和 height 样式用于设置容器元素的固定宽度和高度,以保持设计稿的尺寸。
        dom.style.width = '1920px';
        dom.style.height = '1080px';
      } else {
      // 元素不存在,则延迟 500 毫秒后再次调用
        setTimeout(() => {
          setScale();
        }, 500);
      }
    }

css中设置

// 也可以使用absolute
position: fixed;
完整代码
<template>
  <div class="app">
    <router-view />
  </div>
</template>
<script>
export default {
  name: "",
  props: {},
  components: {},
  data() {
    return {};
  },
  computed: {},
  watch: {},
  created() {},
  methods: {},
  mounted() {
    window.onresize = () => {
      return (() => {
        this.$nextTick(() => {
          setScale();
        });
      })();
    };
    function setScale() {
      let designWidth = 1920; //设计稿的宽度,根据实际项目调整
      let designHeight = 1080; //设计稿的高度,根据实际项目调整
      let dom = document.querySelector(".app");
      if (dom) {
        dom.style.transform = `scale(${
          document.documentElement.clientWidth / designWidth
        }, ${document.documentElement.clientHeight / designHeight})`;
        dom.style.transformOrigin = "left top";
        dom.style.width = "1920px";
        dom.style.height = "1080px";
      } else {
        setTimeout(() => {
          setScale();
        }, 500);
      }
    }
    setScale();
  },
};
</script>

<style scoped lang="less">
*{
  padding: 0;
  margin: 0;
}
.app {
    background: linear-gradient(
    to right,
    #dec2a2,
    #dfbbc9
  ); /* 从左到右渐变,颜色可以根据需要调整 */
  background-size: 100% 100%;
  position: fixed;
}
</style>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使Vue页面自适应屏幕,您可以使用CSS的媒体查询和Flexbox布局来实现响应式设计。下面是一些步骤: 1. 在Vue组件的样式部分添加媒体查询,以根据不同的屏幕尺寸应用不同的样式。媒体查询可以根据屏幕宽度或设备特性进行条件判断。例如,以下媒体查询将在屏幕宽度小于等于768px时应用样式: ```css @media (max-width: 768px) { /* 样式规则 */ } ``` 2. 使用Flexbox布局来实现页面自适应。Flexbox可以使元素在容器自动填充可用空间,并根据需要进行换行或缩放。在Vue组件的模板部分,使用Flexbox属性来控制元素的布局。例如,以下代码将在父容器使用Flexbox布局,并使子元素平均分布在水平方向: ```html <div class="container"> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div> ``` ```css .container { display: flex; justify-content: space-between; } ``` 3. 使用CSS单位来调整元素的尺寸和间距。相对单位(如百分比)可以根据屏幕尺寸进行自适应调整。另外,可以使用CSS的`@media`规则和`min-width`、`max-width`属性来定义不同屏幕尺寸下的样式。例如,以下代码将在屏幕宽度小于等于768px时将元素宽度设置为100%: ```css @media (max-width: 768px) { .item { width: 100%; } } ``` 通过结合媒体查询、Flexbox布局和CSS单位,您可以实现Vue页面自适应屏幕效果。根据项目需求和设计要求,您可以调整和定制这些样式规则。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值