第六篇【传奇开心果系列】Vant of Vue 开发移动应用示例:深度解析响应式布局支持_van-row van-col 如何设置列宽比例

127 阅读10分钟

background-color: #f2f2f2; height: 200px; display: flex; align-items: center; justify-content: center; font-size: 24px; color: #333; }

/* 媒体查询 */ @media screen and (max-width: 768px) { .box { font-size: 18px; } }

@media screen and (min-width: 769px) and (max-width: 1024px) { .box { font-size: 20px; } }


在这个示例中,我们使用了Vant的`Row``Col`组件来创建一个响应式的布局。其中,`Row`表示行,`Col`表示列,可以根据不同的屏幕尺寸设置列的宽度。


在`Col`组件上,我们使用了`:lg``:md``:sm`属性来设置不同屏幕尺寸下的列宽。对于大屏幕(`lg`),每列占据8份;对于中等屏幕(`md`),每列占据12份;对于小屏幕(`sm`),每列占据24份,即一整行。


在样式部分,我们定义了一个`.box`类,表示每个盒子的样式。通过媒体查询,我们根据不同的屏幕尺寸设置了不同的字体大小。


当屏幕宽度小于等于768px时,字体大小为18px;当屏幕宽度在769px到1024px之间时,字体大小为20px。


这样,无论是在大屏幕、中等屏幕还是小屏幕下,盒子的列宽和字体大小都会自动调整,实现了响应式布局。


通过这个示例,您可以更好地理解如何使用Vant的媒体查询和响应式工具类来实现灵活的响应式布局。您可以根据具体的需求,调整和扩展代码,以满足您的项目要求。


### 三、短点设置实现响应式布局示例代码


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/0996d2fd526d43b58467c6da12099096~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770809143&x-signature=nzPFKjByoKiUmhDPSn5e1hvFJdg%3D)Vant提供了一组预定义的断点,用于根据不同屏幕宽度进行响应式布局。您可以根据自己的需求自定义这些断点设置。以下是一个示例代码,演示了如何使用Vant的断点设置:



import { createApp } from 'vue'; import { createBreakpoint } from 'vant';

// 自定义断点设置 const customBreakpoints = { xs: 320, // 小屏幕设备(手机)上的断点 sm: 576, // 中等屏幕设备(平板电脑)上的断点 md: 768, // 中大屏幕设备上的断点 lg: 992, // 大屏幕设备(电脑)上的断点 xl: 1200 // 超大屏幕设备上的断点 };

// 创建断点实例 const breakpoint = createBreakpoint(customBreakpoints);

// 注册断点实例到Vant createApp(App).use(breakpoint).mount('#app');


在这个示例代码中,我们首先通过`createBreakpoint`函数创建了一个断点实例,并传入了自定义的断点设置对象`customBreakpoints`。然后,将断点实例注册到Vant的Vue应用中。


通过自定义断点设置,您可以根据需要定义不同屏幕尺寸下的断点值。例如,`xs`表示小屏幕设备(手机)上的断点,`sm`表示中等屏幕设备(平板电脑)上的断点,以此类推。您可以根据实际需求调整断点的数值。


### 四、响应式工具类实现响应式布局示例代码


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/8de5b94613e94bef85cd09b9021e1d25~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770809143&x-signature=YWrGH9Y0IaIvgdmGPJtH7UGNG3c%3D)Vant提供了一系列响应式的CSS类,用于控制组件在不同屏幕尺寸下的显示和布局。您可以通过在元素上添加相应的CSS类,实现响应式的样式调整。以下是一些常用的响应式工具类示例代码:


1. 隐藏和显示类:



内容
内容

2. 布局类:



内容
内容
内容

3. 偏移类:



内容
内容

4. 对齐类:



内容
内容

这些是一些常用的响应式工具类示例代码,您可以根据实际需求选择合适的类应用于元素上,以实现在不同屏幕尺寸下的样式调整。


### 五、栅格系统实现响应式布局示例代码


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/9e220e23f4c04f3f933c441b5e50659c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770809143&x-signature=s3L4RIWy4EmxtGcLgo5B88x7pL0%3D)Vant提供了栅格系统,用于实现灵活的响应式布局。您可以将组件放置在栅格中,根据不同的屏幕尺寸设置栅格的列数和宽度,实现自适应的布局效果。以下是一个示例代码,演示了如何使用Vant的栅格系统:




在这个示例代码中,我们使用了`van-row``van-col`组件来创建栅格布局。`van-row`表示一行,包含多个列。`van-col`表示每一列,可以设置不同的列宽。


通过设置`:span`属性值,可以控制每列在不同屏幕尺寸下所占的宽度比例。例如,`:sm="12"`表示在小屏幕设备(如手机)上,该列占据总宽度的一半,`:md="8"`表示在中等屏幕设备(如平板电脑)上,该列占据总宽度的三分之一,`:lg="6"`表示在大屏幕设备(如电脑)上,该列占据总宽度的四分之一。


您可以根据实际需求修改每列的内容,并根据不同屏幕尺寸调整`:span`属性值,以达到您想要的响应式布局效果。


### 六、响应式组件实现响应式布局示例代码


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/0cbdce996cb946a5a40003538e0db3ba~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770809143&x-signature=EEEQbUEP3YRGGcofRe6fth0eUFc%3D)Vant的栅格系统是通过`van-row``van-col`组件来实现的,这两个组件用于创建栅格布局。可以根据不同屏幕尺寸设置每列的宽度,从而实现响应式布局。以下是一个示例代码:



/* 样式代码 */

在这个示例代码中,我们使用了`van-row``van-col`组件来创建栅格布局。通过设置`:span`属性值,可以控制每列在不同屏幕尺寸下所占的宽度比例。例如,`:sm="12"`表示在小屏幕设备(如手机)上,该列占据总宽度的一半,`:md="8"`表示在中等屏幕设备(如平板电脑)上,该列占据总宽度的三分之一,`:lg="6"`表示在大屏幕设备(如电脑)上,该列占据总宽度的四分之一。


您可以根据实际需求修改每列的内容,并根据不同屏幕尺寸调整`:span`属性值,以达到您想要的响应式布局效果。


### 七、内置的媒体查询工具类来设置样式实现响应式布局示例代码


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/022e603e61d44682ad233ab936415057~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770809143&x-signature=aQN0gJPFJ%2FAn1T8D0XJX8gjFAd4%3D)以下是使用Vant内置的媒体查询工具类来设置样式的示例代码:



.van-xs { /\* 样式针对 extra small 屏幕尺寸 \*/ } .van-sm { /\* 样式针对 small 屏幕尺寸 \*/ } .van-md { /\* 样式针对 medium 屏幕尺寸 \*/ } .van-lg { /\* 样式针对 large 屏幕尺寸 \*/ } .van-xl { /\* 样式针对 extra large 屏幕尺寸 \*/ }

在上面的示例中,我们使用了`.van-xs``.van-sm``.van-md``.van-lg``.van-xl`这些类名来分别针对不同的屏幕尺寸设置样式。你可以根据需要在对应的类名下编写样式规则,以实现在不同屏幕尺寸下的样式适配。


### 八、自定义断点设置实现响应式布局示例代码


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/62979f28b2b748008c2e627b3e1eb488~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770809143&x-signature=2H1gATF35oUBk7J1MRBqcGB4wW8%3D)要自定义断点并配置Vant的断点设置,可以按照以下示例代码进行操作:



// 在项目的入口文件中引入 Vant import { createApp } from 'vue'; import { vant } from 'vant'; import 'vant/lib/index.css';

const app = createApp(App); app.use(vant); app.mount('#app');



// 创建一个自定义的 Vant 断点配置文件(例如 breakpoints.js) export default { xs: 480, // extra small sm: 576, // small md: 768, // medium lg: 992, // large xl: 1200, // extra large };



// 在项目中的需要的地方引入自定义的断点配置文件 import breakpoints from './breakpoints';

// 在使用 Vant 之前,修改 Vant 的默认断点配置 import { use } from 'vant';

use({ install(app) { app.config.globalProperties.vant = { ...app.config.globalProperties.vant, ...breakpoints, }; }, });


通过上述代码,我们在项目中引入了 Vant,并创建了一个自定义的断点配置文件 `breakpoints.js`。在该文件中,我们定义了自己的断点尺寸,例如 `xs``sm``md``lg``xl`。


然后,在项目中需要使用 Vant 的地方,我们引入了自定义的断点配置文件,并通过 Vant 的 `use` 方法修改了默认断点配置。这样,Vant 将使用我们自定义的断点配置来进行布局和样式的适配。


请注意,以上示例中的代码是基于 Vue 3.x 和 Vant 3.x 的。如果你使用的是其他版本的 Vue 或 Vant,请根据相应的版本文档进行适配。


### 九、Flex实现响应式布局示例代码


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/ad38fc2ac14d426d96c91536573da474~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770809143&x-signature=wsTLXT8EsTzb%2BCob%2FNif2BkrAkQ%3D)Vant广泛使用Flexbox弹性布局模型来设计和布局组件,以实现在不同屏幕尺寸下的自适应和排列。以下是一个使用Vant Flex布局的示例代码:



.container { width: 100%; height: 300px; } .flex-container { display: flex; flex-wrap: wrap; } .flex-item { flex: 1 0 33.33%; padding: 10px; box-sizing: border-box; }

在上面的示例中,我们创建了一个容器 `.container`,并在其中使用了Flex布局。`.flex-container` 是一个Flex容器,它的子元素 `.flex-item` 会根据剩余空间自动排列。


通过设置 `.flex-item``flex` 属性,我们指定了子元素的弹性,其中 `flex: 1 0 33.33%` 表示子元素的弹性比例为1,不允许缩小,初始宽度为33.33%。这样,无论容器的宽度如何变化,子元素都会平均占据一行的三分之一空间。


你可以根据需要在Flex容器和子元素上应用不同的样式,并根据项目要求进行调整。这样,Vant的Flex布局能够帮助你实现在不同屏幕尺寸下的自适应和排列效果。  
 ![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/6798803ef1b44cb5ba1888c2e6678d40~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770809143&x-signature=ZIK2e6Q7jRSUlyanCNi517OEg%2FU%3D)下面是一个更复杂的示例代码,展示了如何在Vant中使用Flex布局,并结合其他组件进行更丰富的布局和排列:



.container { width: 100%; height: 300px; } .box { height: 100%; display: flex; align-items: center; justify-content: center; background-color: #f5f5f5; border: 1px solid #ccc; }

前端资料汇总

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。 找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。 最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。

开源分享:docs.qq.com/doc/DSmRnRG…