vue如何使用媒体查询实现响应式

 更新时间:2022年09月19日 09:01:30   投稿:jingxian  
这篇文章主要介绍了vue如何使用媒体查询实现响应式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用媒体查询实现响应式的两种方式

前提

依赖:

sass,sass-loader

1.在每个组件中为其使用媒体查询

这种方法的有点是减少了重写不同终端同一组件的工作量,缺点是每个组件都要使用媒体查询,当一套页面组件不同时,需要进行组件的显示与隐藏(display:none!important),在不同终端区别不大的情况下建议使用这种方法.

例如:

.styleClassName{
width:200px;
@media only screen and (min-width: 1200px) {
width:100px
}
}

2.写n套页面,在使用这些页面的组件中进行一次媒体查询

这种方法的优点是媒体查询比较方便,缺点是在多终端相似度较高的情况下,要写几套重复页面.

因此,此方式适宜在多终端之间差异较大的情况下使用.

示例:

<template>
    <div>
        <div class="pc">
            <!-- pc端页面-->
        </div>
        <div class="pad">
            <!-- pad端页面-->
        </div>
        <div class="mobile">
            <!-- 移动端页面-->
        </div>
    </div>
</template>
<style lang="scss" scoped>
//pc端
@media only screen and (min-width: 1200px) {
  .pc {
    display: block !important;
  }
  .pad {
    display: none !important;
    touch-action: auto !important;
  }
  .mobile {
    display: none !important;
    touch-action: auto !important;
  }
}
//pad端
@media only screen and (min-width: 768px) and(max-width: 1199px) {
  .pc {
    display: none !important;
  }
  .mobile {
    display: none !important;
    touch-action: auto !important;
  }
  .pad {
    display: block !important;
    touch-action: auto !important;
  }
}
// 手机端
@media only screen and (max-width: 767px) {
  .pc {
    display: none !important;
  }
  .mobile {
    display: block !important;
    touch-action: auto !important;
  }
  .pad {
    display: none !important;
    touch-action: auto !important;
  }
}
</style>

vue中的媒体查询

先说一下 css3 中的媒体查询

媒体查询 (英文:Media queries ),这个特性非常的实用,尤其是需要根据设备的类型或者根据特定的特征和设备参数,来修改网站中的CSS样式。

语法

@media mediatype and|not|only (media feature) {
    CSS-Code;
}

组成:

一个可选的媒体类型,告诉浏览器这段代码是用在什么类型的媒体上的,具体的媒体类型如下:

  • all:适用于所有设备(如果不写默认为all)。
  • print:适用于在打印预览模式下在屏幕上查看的分页材料和文档。
  • screen:主要用于屏幕。
  • speech:主要用于语音合成器。.

一个或者多个媒体特性表达式,是一个被包含的CSS生效所需的规则或者测试,媒体特性数量众多,主要的有如下这么几个:

  • aspect-ratio:用于检测视口的宽高比
  • width:用于检测视口的宽度,可以使用前缀min-width和max-width分别查询最小值和最大值
  • height:用于检测视口的高度,可以使用前缀min-height和max-height分别查询最小值和最大值
  • orientation:用于检测视口的屏幕方向
  • hover:根据用户当前的环境是否允许悬停在元素之上来应用不同的样式(例如电脑就可以进行悬悬停,触摸屏用户就无法进行悬停)

一组CSS规则,会在测试通过且媒体类型正确的时候应用。

下面是一般情况下通过宽度区分媒体途径的方法

//当屏幕最小宽度为992px 
@media screen and (min-width : 992px) {
    body {
        属性: 值
    }
}
//当屏幕宽度 最小为768px 最大为991px时 
@media screen and (min-width:768px) and (max-width:991px) {
    body {
       属性: 值
    }
}
//当屏幕最大宽度为767px 
@media screen and (max-width:767px) {
    body {
       属性: 值 
    }
}

vue 与 css3 中的 媒体查询有点不同

在vue中是不能直接使用@media的,我们必须结合less或者sass来使用它

安装命令

npm install sass-loader node-sass --save-dev
npm install less less-loader --save-dev

可能遇到的问题

lass 或者 sass 版本过高,可以适当降低版本,对应 vue 与 脚手架的版本

使用

方法一:

body{
    background-color:red;
    @media only screen and (max-width: 800px) {
    background-color:green;
  }
}

方法二

写n套页面,在使用这些页面的组件中进行一次媒体查询

但是需要引入 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue-cli的index.html中使用环境变量方式

    vue-cli的index.html中使用环境变量方式

    这篇文章主要介绍了vue-cli的index.html中使用环境变量方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue多种方法实现表头和首列固定的示例代码

    Vue多种方法实现表头和首列固定的示例代码

    本篇文章主要介绍了Vue多种方法实现表头和首列固定的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • VUE微信H5生成二维码海报保存在本地相册的实现

    VUE微信H5生成二维码海报保存在本地相册的实现

    本文主要介绍了VUE微信H5生成二维码海报保存在本地相册的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Vue数据双向绑定原理及简单实现方法

    Vue数据双向绑定原理及简单实现方法

    vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的.本文重点给大家介绍Vue数据双向绑定原理及简单实现方法,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • vue如何清除地址栏参数

    vue如何清除地址栏参数

    这篇文章主要介绍了vue如何清除地址栏参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue全局挂载实现APP全局弹窗的示例代码

    vue全局挂载实现APP全局弹窗的示例代码

    本文主要介绍了vue全局挂载实现APP全局弹窗的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • VUEJS 2.0 子组件访问/调用父组件的实例

    VUEJS 2.0 子组件访问/调用父组件的实例

    下面小编就为大家分享一篇VUEJS 2.0 子组件访问/调用父组件的实例。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • vue项目中用cdn优化的方法

    vue项目中用cdn优化的方法

    本篇文章主要介绍了vue项目中用cdn优化的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • vue使用keep-alive后清除缓存的方法

    vue使用keep-alive后清除缓存的方法

    这篇文章主要给大家介绍了关于vue使用keep-alive后清除缓存的相关资料,这个问题在我们日常工作中经常会用到,本文通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • mint-ui在vue中的使用示例

    mint-ui在vue中的使用示例

    Mint UI 是 由饿了么前端团队推出的 一个基于 Vue.js 的移动端组件库,这篇文章主要介绍了mint-ui在vue中的使用示例,这里整理了详细的代码,有需要的小伙伴可以参考下
    2018-04-04

最新评论