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套页面,在使用这些页面的组件中进行一次媒体查询

但是需要引入 

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

相关文章

  • iview实现图片上传功能

    iview实现图片上传功能

    这篇文章主要为大家详细介绍了iview实现图片上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • VUEX采坑之路之获取不到$store的解决方法

    VUEX采坑之路之获取不到$store的解决方法

    今天小编就为大家分享一篇VUEX采坑之路之获取不到$store的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue等两个接口都返回结果再执行下一步的实例

    vue等两个接口都返回结果再执行下一步的实例

    这篇文章主要介绍了vue等两个接口都返回结果再执行下一步的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue实现瀑布流布局的示例代码

    vue实现瀑布流布局的示例代码

    这篇文章主要为大家详细介绍了如何利用vue实现简单的瀑布流布局,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-09-09
  • vue3使用vuedraggable实现拖拽功能

    vue3使用vuedraggable实现拖拽功能

    这篇文章主要为大家详细介绍了vue3使用vuedraggable实现拖拽功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 基于Vant UI框架实现时间段选择器

    基于Vant UI框架实现时间段选择器

    这篇文章主要为大家详细介绍了基于Vant UI框架实现时间段选择器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Vue项目保存代码之后页面自动更新问题

    Vue项目保存代码之后页面自动更新问题

    这篇文章主要介绍了Vue项目保存代码之后页面自动更新问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue3自定义指令实现按钮防抖示例详解

    vue3自定义指令实现按钮防抖示例详解

    这篇文章主要为大家介绍了vue3自定义指令实现按钮防抖示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 在vue中阻止浏览器后退的实例

    在vue中阻止浏览器后退的实例

    今天小编就为大家分享一篇在vue中阻止浏览器后退的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Vue中进行分布式鉴权与认证的过程

    Vue中进行分布式鉴权与认证的过程

    在Vue应用中,我们通常需要实现分布式鉴权和认证,以确保用户的安全性和数据的保密性,本文将介绍在Vue中如何进行分布式鉴权与认证,需要的朋友可以参考下
    2023-06-06

最新评论