vue中关于@media媒体查询的使用

当我们在使用 Vue 开发 Web 应用程序时,经常需要针对不同的屏幕尺寸进行布局和样式的调整。媒体查询(Media Queries)是一种很好的解决方案,它可以根据设备的屏幕尺寸自适应调整样式表的规则。在 Vue 中使用媒体查询也非常简单。

使用方式

在 Vue 中使用媒体查询,我们可以使用 @media 规则。这个规则可用于 CSS 样式表中,也可用于 Vue 模板中。具体用法如下:

CSS 样式表中使用

在 CSS 样式表中,我们可以直接使用 @media 规则,例如:

@media screen and (max-width: 720px) {
  .container{
    width: 100%;
  }
}

上面代码表示:当屏幕宽度小于等于 720 像素时,.container 元素的宽度将设置为 100%。我们可以通过 min-widthmax-widthmin-heightmax-height 等不同的参数来设置媒体查询的规则。

Vue 模板中使用

在 Vue 模板中,我们可以使用 style 标签内的 @media 规则,例如:

<template>
  <div class="container" :class="{'full-width': isMobile}">
    <p>Hello, world!</p>
  </div>
</template>

<style scoped>
.container {
  width: 720px;
}

@media screen and (max-width: 720px) {
  .container {
    width: 100%;
  }
  .full-width {
    width: 100%;
  }
}
</style>

<script>
export default {
  data() {
    return {
      isMobile: false
    }
  },
  mounted() {
    window.addEventListener('resize', this.handleResize)
    this.handleResize()
  },
  beforeDestroy() {
    window.removeEventListener('resize', this.handleResize)
  },
  methods: {
    handleResize() {
      if (window.innerWidth <= 720) {
        this.isMobile = true
      } else {
        this.isMobile = false
      }
    }
  }
}
</script>

上面代码中,我们引入了一个 isMobile 数据,用于判断屏幕是否为移动设备。在 mounted 钩子中,我们添加了 resize 事件监听,用于监测窗口尺寸的变化。在 handleResize() 方法中,当窗口宽度小于等于 720 像素时,我们将 isMobile 数据设置为 true,当窗口宽度大于 720 像素时,我们将 isMobile 数据设置为 false。然后在模板中,我们根据 isMobile 的值来添加一个 full-width 类,用于使 .container 元素宽度设置为 100%,从而达到适配移动设备屏幕的效果。

示例说明

示例一:Header 自适应

<template>
  <header class="header" :class="{'fixed': isFixed}">
    <!-- Header 内容 -->
  </header>
</template>

<style scoped>
.header {
  height: 60px;
  line-height: 60px;
  background-color: #fff;
  box-shadow: 0 1px 5px rgba(0, 0, 0, .1);
}

.fixed {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
}
@media screen and (max-width: 768px) {
  .header {
    height: 40px;
    line-height: 40px;
  }
}
</style>

上面代码中,我们创建了一个 Header 组件,并为其添加了一个 .header 类用于设置 Header 的样式。当屏幕宽度小于等于 768 像素时,我们使用媒体查询将 Header 的高度设置为 40px,从而达到适配移动设备屏幕的效果。另外,当使用者滚动屏幕时,我们使用添加一个 .fixed 类,将 Header 固定在页面顶部。

示例二:表格自适应

<template>
  <table>
    <thead>
      <tr>
        <th>Name</th>
        <th>Age</th>
        <th>Address</th>
        <th>Phone</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(user, index) in users" :key="index">
        <td>{{ user.name }}</td>
        <td>{{ user.age }}</td>
        <td>{{ user.address }}</td>
        <td>{{ user.phone }}</td>
      </tr>
    </tbody>
  </table>
</template>

<style scoped>
table {
  width: 100%;
  border-collapse: collapse;
}
th, td {
  padding: 8px;
  text-align: left;
  border-bottom: 1px solid #ddd;
}
@media screen and (max-width: 768px) {
  th, td {
    padding: 4px;
  }
}
</style>

<script>
export default {
  data() {
    return {
      users: [
        { name: 'Alice', age: 20, address: 'New York', phone: '123456' },
        { name: 'Bob', age: 22, address: 'Los Angeles', phone: '456789' },
        { name: 'Charlie', age: 24, address: 'Chicago', phone: '789012' },
        { name: 'Dave', age: 26, address: 'Houston', phone: '345678' }
      ]
    }
  }
}
</script>

上面代码中,我们演示了一种表格布局的自适应方法,即在保持表格宽度为 100% 的前提下,根据屏幕尺寸调整表格的单元格(thtd)的内边距(padding),从而达到自适应的效果。当屏幕宽度小于等于 768 像素时,我们使用媒体查询将表格单元格的内边距设置为 4px。这样,在不同的屏幕尺寸下,我们都可以看到舒适的表格布局。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue中关于@media媒体查询的使用 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 从console.log说起(console.log详细介绍)

    从console.log说起,它是JavaScript中最基础的调试工具之一,常用于输出变量或调试信息。下面就来详细介绍一下。 什么是console.log console.log是JavaScript中一个用来输出信息的函数,其使用方式为console.log(输出内容),输出内容可以是字符串、数字、布尔值、数组、对象等等。控制台可以输出该函数所传递的参数…

    css 2023年6月10日
    00
  • Canvas和SVG的区别小结

    Canvas是HTML5新增的一个元素,它可以通过JavaScript实现动态绘制和渲染2D图形,常用于游戏、数据可视化和动画等领域。而SVG则是一种基于XML语言的图形标记语言,与HTML类似,它也可以通过DOM进行操作。 下面将从绘制方式、可访问性、性能等方面对Canvas和SVG进行比较,更好地理解它们的区别。 绘制方式 Canvas的绘制方式基于像素…

    css 2023年6月11日
    00
  • robots.txt详细介绍

    下面是对“Robots.txt详细介绍”的完整攻略。 什么是Robots.txt Robots.txt是一个文本文件,它告诉搜索引擎Bots(爬虫程序)哪些页面可以被访问,哪些页面不可以被访问。搜索引擎在访问站点时,先查看站点中是否包含robots.txt文件,如果存在,搜索引擎会按照文件中的规则进行爬取和索引,若没有找到此文件,则默认访问所有可访问的页面和…

    css 2023年6月9日
    00
  • HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法

    HTML5带来了许多新的标签,其中form标签也得到了增强。在HTML5中,form标签不仅仅是个容器,而且在处理表单的交互上,这个标签与其他的标签和JavaScript API一起,提供了一些有力的辅助。 1. 表单验证 HTML5的form标签支持更容易、更强大的表单验证。通过添加属性和值来控制表单验证行为。 必填属性 HTML5新增了required属…

    css 2023年6月10日
    00
  • 什么情况下使用table 什么情况下使用css(经验分享)

    当我们需要呈现一些表格数据时,通常可以使用 HTML 的 table 标签来实现。table 标签可以创建包含行和列的表格,每个单元格可以包含文本、图片或其他 HTML 元素。例如,我们可以使用以下 HTML 代码创建一个简单的表格: <table> <tr> <th>姓名</th> <th>年龄&…

    css 2023年6月10日
    00
  • Jquery css函数用法(判断标签是否拥有某属性)

    下面我将详细讲解“Jquery css函数用法(判断标签是否拥有某属性)”的完整攻略: 什么是Jquery css函数? Jquery css 函数用于设置或返回选定元素的一个或多个样式属性。 如何使用Jquery css函数判断标签是否拥有某属性? 使用 css() 函数可以获取或设置元素的样式,也可以判断指定元素是否拥有指定的样式属性。具体的语法格式如下…

    css 2023年6月9日
    00
  • Vue运用transition实现过渡动画

    下面是“Vue运用transition实现过渡动画”的完整攻略。 一、transition基本概念 在Vue中使用<transition>组件可以优雅地实现过渡动画效果。<transition>组件是Vue内置的过渡动画组件。它可以在元素显示、隐藏、插入和删除时,根据设置的动画属性进行动画过渡。 <transition>组…

    css 2023年6月10日
    00
  • IE7下父元素及子元素的隐藏顺序不当带来的display:none出现BUG

    在IE7浏览器中,当父元素使用display:none属性隐藏,子元素也使用display:none属性隐藏且先于父元素隐藏,再显示的时候会出现BUG,即子元素无法显示。要解决这个问题,可以执行以下步骤: 使用visibility:hidden代替display:none 在IE7浏览器下,使用visibility:hidden代替display:none能…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部