在下面环节会讲解怎么做pc移动端网页样式适配。

在当下有两种实现样式适配的:JS 适配方案CSS 媒体查询适配。下面会具体讲解一下代码该怎么写。

🙏 希望该文章能帮助到你。

1. JS 适配方案

比如在src/router/index.vue文件中有一个统一的Layout组件包裹,可以在Layout组件内部通过当前界面尺寸监听来判断当前是PC还是移动端。 可以新建一个mixin类文件ResizeHandler.js,内容如下:

const { body } = document
const WIDTH = 992

export default {
  beforeMount() {
    window.addEventListener('resize'this.$_resizeHandler)
  },
  beforeDestroy() {
    window.removeEventListener('resize'this.$_resizeHandler)
  },
  mounted() {
    const isMobile = this.$_isMobile()
    // 做相应的逻辑处理,控制哪些显示哪些不显示?怎么显示?等
  },
  methods: {
    $_isMobile() {
      const rect = body.getBoundingClientRect()
      return rect.width - 1 < WIDTH
    },
    $_resizeHandler() {
      if (!document.hidden) {
        const isMobile = this.$_isMobile()
        store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop')
        // 做相应的逻辑处理,控制哪些显示哪些不显示?怎么显示?等
      }
    }
  }
}

然后在Layout组件中使用:

<script>
import ResizeMixin from './mixin/ResizeHandler'
export default {
  name'xxxxx',
  mixins: [ResizeMixin],
}
</script>

其他界面就可以通过globalStore的方式,从在store里面获取了当前设备是mobile或者desktop了。

2. CSS 媒体查询适配

当前描述的项目使用的是 less
首先,在项目的src/styles中新建文件variables.less。文件内容如下:

@prefix: gycc;
@mobile: ~'only screen and (max-width: 767px)';

然后,在具体的界面文件中导入这个less文件。

<style lang="less" scoped>
@import url("@/styles/variables.less");

.${prefix}-context {
  // 在正常 PC 网页上显示 80% 比例
  width80%;
  
  @media @mobile {
    // 在手机端显示 100% 比例
    width100%;
  }
}
</style>

根据这种情况可以在具体的场景中,去根据不同的尺寸实现样式兼容。

总结

上面就是我开发过程使用的两种适配方式了,如果有其他方式,欢迎在下方评论区讨论,🎉 谢谢!

— 微信公众号:全栈之鬼影重重 —
在这里插入图片描述

Logo

前往低代码交流专区

更多推荐