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日

相关文章

  • div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox

    要实现类似marquee的无缝滚动效果,可以使用div、CSS和JavaScript结合的方式。具体实现步骤如下: HTML结构 先创建一个包含滚动内容的div,再在div内部创建两个包裹滚动内容的div,其中一个用于显示内容,一个用于隐藏内容,两个div的宽度相等,高度与滚动内容相同。如下所示: <div class="scroll-wra…

    css 2023年6月10日
    00
  • 使用CSS3中的calc()属性来以算式表达尺寸数值

    当我们在使用CSS进行布局时,经常需要针对不同的屏幕尺寸设置不同的样式。在使用CSS3时,可以使用 calc() 属性来动态计算元素的尺寸数值,这使得页面布局更加灵活和适应性更强。 使用方法 calc() 属性接受一个算式作为参数,该算式可以包含‘+’,‘-’,‘*’,‘/’ 和 数字。其中,算式中的数字可以设置为长度、百分比、视口单位(vw、vh、vmin…

    css 2023年6月10日
    00
  • 向div元素添加圆角边框的实现方法

    要在网页中向div元素添加圆角边框,我们可以使用CSS的属性border-radius。border-radius属性可以用于设置任意数量的圆角,可以让我们创建各种形状的元素。 以下是实现方法的完整攻略: 步骤1:选择要添加边框的 div元素 首先,我们需要选择要添加边框的div元素。可以通过元素id、class或标签名来选择一个或多个要添加边框的div元素…

    css 2023年6月10日
    00
  • JQuery模拟实现网页中自定义鼠标右键菜单功能

    下面是「JQuery模拟实现网页中自定义鼠标右键菜单功能」的完整攻略: 1. 实现思路 要模拟实现网页中自定义鼠标右键菜单功能,我们需要以下几个步骤: 绑定页面元素的右键菜单事件。 阻止默认的右键菜单事件。 创建自定义的菜单元素。 在页面上显示自定义的菜单元素。 根据用户的点击位置,调整自定义菜单的显示位置。 定义菜单元素的点击事件,实现对应功能。 接下来,…

    css 2023年6月10日
    00
  • 浅谈styled-components的用法

    浅谈styled-components的用法 什么是styled-components styled-components 是 React 应用程序中使用的一种 CSS-in-JS 库。这意味着您可以在组件中编写 CSS,而不是在样式表文件中编写 CSS。这可以防止 CSS 的样式冲突问题,使得代码易于理解和维护。除此之外,styled-components…

    css 2023年6月9日
    00
  • CSS多种方式实现底部对齐的示例代码

    当我们想要实现底部对齐时,通常有多种方式可以实现。在CSS中,一般有以下几种方式: 1. 使用flex布局 通过将容器设置display: flex,同时设置justify-content: space-between,使得子元素可以按照一定的间距分布在容器的两侧,同时使用align-items: flex-end来使子元素底部对齐。示例代码如下: .con…

    css 2023年6月10日
    00
  • CSS3 清除浮动的方法示例

    CSS中使用浮动(float)可以将元素脱离文档流并实现排版效果。但是,浮动元素会对其父元素和兄弟元素产生影响,可能导致布局错乱。因此,我们需要使用清除浮动的方法来避免这种局面。以下是CSS3中清除浮动的几种方法: 1、使用 clear 属性 首先介绍的是 clear 属性。在 CSS 中, clear 属性用于清除浮动。该属性有四个取值:left,righ…

    css 2023年6月10日
    00
  • CSS中的四种定位区别详解

    CSS中的四种定位区别详解 在CSS中,常见的定位方式有四种:静态定位、相对定位、绝对定位和固定定位。这些定位方式的选择取决于布局的需要和效果的要求。 静态定位 静态定位是默认的定位方式,元素总是处于文档流中的正常位置。使用静态定位时,top、right、bottom、left属性将不会起作用,也不支持z-index属性。静态定位可以使用以下方式来设置: p…

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