Advertisement

Vue 中实现 REM 或 VW 布局的技巧

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本文介绍了在 Vue 项目中采用 REM 和 VW 单位进行自适应布局的方法和技巧,帮助开发者轻松实现响应式设计。 在移动设备开发过程中,适配不同屏幕尺寸是一项关键任务。`rem` 和 `vw` 单位常被用于创建响应式布局,在 Vue.js 这样的流行前端框架中,实现这两种布局策略有多种方法。 ### 一、使用 `rem` 布局 #### 方法一:手动设置 HTML 字体大小 在项目根目录的 JavaScript 文件(如 `main.js`)里添加如下代码: ```javascript const setHtmlFontSize = () => { let deviceWidth = document.documentElement.clientWidth || document.body.clientWidth; if (deviceWidth >= 750) { deviceWidth = 750; // 设定最大宽度,例如设计稿中的1rem为75px } if (deviceWidth <= 320) { deviceWidth = 320; // 设定最小宽度 } document.documentElement.style.fontSize = `${deviceWidth / 7.5}px`; // 设置字体大小,假设1rem=100px } window.onresize = setHtmlFontSize; setHtmlFontSize(); ``` 然后在 CSS 文件中使用 `rem` 单位定义元素尺寸。 #### 方法二:利用 `lib-flexible` 和转换插件 首先安装这两个库: - 安装命令为 `npm install lib-flexible --save` - 或者,对于转换插件如 `px2rem-loader`, 使用命令是 `npm install px2rem-loader --save-dev` 接着,在项目配置文件(例如 `vue.config.js`)中进行如下设置: ```javascript module.exports = { chainWebpack: config => { config.module .rule(css) .test(/\.css$/) .oneOf(vue) .resourceQuery(/\?vue/) .use(px2rem-loader, () => ({ loader: px2rem-loader, options: { remUnit: 75 }, // 设置转换基数 })); }, }; ``` ### 二、使用 `vw` 布局 在 CSS 文件中直接应用 `vw` 单位,例如: ```css width: 10vw; height: calc(100vh - 20px); /* 使用 vw 和 vh 结合 */ ``` 这种方法适用于元素尺寸需要与视口宽度成比例变化的情况。 ### 如何选择:使用 `rem` 还是 `vw` - 如果你需要更精确地控制不同分辨率下的布局,推荐采用 `rem` 单位。 - 对于那些依赖于相对单位的响应式设计和对视觉效果有特殊要求的应用场景,则更适合用到 `vw`。 在实际开发中可以根据具体需求灵活选择或结合使用这两种方法。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Vue REM VW
    优质
    本文介绍了在 Vue 项目中采用 REM 和 VW 单位进行自适应布局的方法和技巧,帮助开发者轻松实现响应式设计。 在移动设备开发过程中,适配不同屏幕尺寸是一项关键任务。`rem` 和 `vw` 单位常被用于创建响应式布局,在 Vue.js 这样的流行前端框架中,实现这两种布局策略有多种方法。 ### 一、使用 `rem` 布局 #### 方法一:手动设置 HTML 字体大小 在项目根目录的 JavaScript 文件(如 `main.js`)里添加如下代码: ```javascript const setHtmlFontSize = () => { let deviceWidth = document.documentElement.clientWidth || document.body.clientWidth; if (deviceWidth >= 750) { deviceWidth = 750; // 设定最大宽度,例如设计稿中的1rem为75px } if (deviceWidth <= 320) { deviceWidth = 320; // 设定最小宽度 } document.documentElement.style.fontSize = `${deviceWidth / 7.5}px`; // 设置字体大小,假设1rem=100px } window.onresize = setHtmlFontSize; setHtmlFontSize(); ``` 然后在 CSS 文件中使用 `rem` 单位定义元素尺寸。 #### 方法二:利用 `lib-flexible` 和转换插件 首先安装这两个库: - 安装命令为 `npm install lib-flexible --save` - 或者,对于转换插件如 `px2rem-loader`, 使用命令是 `npm install px2rem-loader --save-dev` 接着,在项目配置文件(例如 `vue.config.js`)中进行如下设置: ```javascript module.exports = { chainWebpack: config => { config.module .rule(css) .test(/\.css$/) .oneOf(vue) .resourceQuery(/\?vue/) .use(px2rem-loader, () => ({ loader: px2rem-loader, options: { remUnit: 75 }, // 设置转换基数 })); }, }; ``` ### 二、使用 `vw` 布局 在 CSS 文件中直接应用 `vw` 单位,例如: ```css width: 10vw; height: calc(100vh - 20px); /* 使用 vw 和 vh 结合 */ ``` 这种方法适用于元素尺寸需要与视口宽度成比例变化的情况。 ### 如何选择:使用 `rem` 还是 `vw` - 如果你需要更精确地控制不同分辨率下的布局,推荐采用 `rem` 单位。 - 对于那些依赖于相对单位的响应式设计和对视觉效果有特殊要求的应用场景,则更适合用到 `vw`。 在实际开发中可以根据具体需求灵活选择或结合使用这两种方法。
  • VueREM代码解析
    优质
    本文详细解析了在Vue框架下如何通过JavaScript动态设置REM值以实现响应式布局,并提供了具体的代码示例。 要在项目中使用amfe-flexible进行rem布局,请按照以下步骤操作: 1. 安装amfe-flexible: ``` npm i amfe-flexible ``` 2. 在项目的入口文件或者需要使用的组件中引入`amfe-flexible`: ```javascript import amfe-flexible; ``` 3. 接下来,安装postcss-px2rem插件: ``` npm i postcss-px2rem ``` 4. 配置`package.json`以使用该插件。在文件中添加或修改如下配置: ```json postcss: { plugins: { autoprefixer: {}, postcss-px2rem: { remUnit: 26.7 } } } ``` 通过以上步骤,您可以在Vue项目中实现基于屏幕宽度的动态调整布局效果。使用`rem`单位可以确保在不同分辨率下页面显示良好,适应移动端开发的需求。
  • 如何在移动端使用vwrem
    优质
    本文介绍在移动端布局中如何运用vw和rem单位进行灵活且响应式的网页设计,帮助开发者轻松实现适配各种屏幕尺寸的需求。 在移动端网页设计中,【vw+rem布局】是一种优化方案,旨在解决不同设备屏幕尺寸下的适配问题。传统的rem布局依赖于JavaScript代码动态调整根元素`html`的`font-size`值,从而实现按比例缩放所有页面元素大小。然而,这种做法存在两个主要缺点:一是与根元素字体大小强耦合的问题,在系统字体放大或缩小的情况下会导致布局混乱;二是需要在HTML头部插入一段压缩过的JavaScript代码来动态设置字体大小。 【vw单位】(Viewport Width)是CSS3引入的一种基于视口宽度的相对长度单位,1vw等于视口宽度的1%。使用这种方法,开发者可以直接根据屏幕尺寸定义元素尺寸,而无需通过JavaScript调整根元素字体大小。例如,在设计稿中一个元素宽为120px,则在移动端可以将其转换成`width: 3.75vw;`(假设设计稿基于iPhone6/7/8的宽度375px)。这种方式简化了代码,并且不受父级元素的影响。 【百分比与vw的区别】:百分比单位是根据其直接父容器来计算大小,而vw始终以整个视口的宽度为基准。当页面出现滚动条时使用100%会导致超出实际可视区宽高(不包括滚动条),从而产生水平或垂直滚动条;相反,使用100vw则会精确匹配屏幕尺寸。 【其他视口单位】除了vw外还有vh (Viewport Height),vmin和vmax。这些单位提供更多的灵活性以适应不同比例的设备屏幕,并允许基于高度或者宽度中较小/较大的值进行布局设计。 【兼容性】尽管vw等视口单位在现代浏览器得到了广泛支持,但在一些老旧或非主流浏览器上可能存在不完全兼容的问题。因此,在开发过程中需要考虑使用媒体查询或其他条件注释来为这些情况提供替代方案。 通过结合标签设置页面的缩放行为和初始尺寸以及合理利用vw+rem布局方法,可以有效解决移动端网页适配问题,并提高代码可读性和维护性。随着现代浏览器日益普及,这种技术已成为移动优先设计中的首选策略之一。
  • CSS3在移动端使用vwrem响应式无需JS方法
    优质
    本文介绍如何利用CSS3中的vw和rem单位在移动设备上创建响应式的网页布局,整个过程无需借助JavaScript,帮助开发者简化代码并提高性能。 在使用之前,我们先简单了解一下vw和rem及其作用。 1. **vw/vh介绍**:vw是CSS3引入的一个新单位,“view width”的缩写,定义为将当前屏幕宽度分成一百份,即1vw等于屏幕宽度的1%;vh与此类似,代表“view height”,表示把高度分成一百份,因此1vh等于屏幕高度的1%,通常我们使用vw来实现响应式布局。 2. **rem介绍**:rem是相对长度单位。它相对于根元素(通常是html)字体大小的比例值计算而来。例如,在HTML中设置`font-size: 20px;`时,则页面中的1rem等同于20px的尺寸。
  • 利用Rem自适应
    优质
    本文章介绍如何使用REM布局技术,使网页内容能够灵活响应不同设备屏幕尺寸,提升用户体验。 自适应设计在移动端页面开发中的重要性不容忽视。以一个常见的例子来说:设计师提供的视觉稿画布宽度为750像素,其中有一个黄色区块的尺寸是702 x 300,并且这个区块在画板中居于中心位置。 为了确保该页面能够在各种设备上保持一致的比例和布局效果,我们需要让移动端页面根据不同的屏幕大小进行等比例缩放。通常做法是在代码里设置布局视口宽度等于设备的实际宽度:`` 然而,不同手机的屏幕尺寸各不相同,这就意味着每种设备上的布局视口宽度也会有所不同。例如,在iPhone上,由于其特有的屏幕尺寸和分辨率特性,页面内容会根据该设定自动调整到适合当前设备的最佳展示状态。
  • 多种 RecyclerView
    优质
    本文将介绍如何使用RecyclerView在Android应用中实现复杂的、多样的布局,提供实用技巧和最佳实践。 编写了一个Demo,使用RecyclerView实现不同布局的示例,在上半部分是Gridview,下半部分是ListView。目前还没有添加点击事件监听器回调功能,请大家自行添加。
  • 利用CSS响应式
    优质
    本文介绍了如何运用CSS技术创建适应不同设备屏幕大小的响应式网页设计,分享了一些实用技巧和最佳实践。 响应式布局看似复杂高端,但实际上仅使用CSS就能实现。关键在于利用CSS中的媒体查询功能。 以下是三种应用`@media`的方法: 1. 直接在CSS文件中使用: ```css @media 类型 and (条件1) and (条件二){ css样式 } ``` 例如,当屏幕宽度小于或等于1024像素时改变背景颜色: ```css @media screen and (max-width:1024px) { body{ background-color: red; } } ``` 2. 使用`@import`导入: 在需要的样式表中引入另一个CSS文件,同时设置媒体查询条件。例如: ```css @import url(路径/至/cssmoxie.css) all and (max-width:900px); ``` 请注意,上述示例仅用于展示如何使用`@media`和`@import`进行响应式设计,并未包含任何联系信息或网址。
  • Ionic3战教程:随机
    优质
    本教程详细讲解了如何使用Ionic3框架创建随机布局瀑布流效果的技术细节和实现步骤。 最近一段时间由于项目需要接触到了Ionic3,发现它真是一个非常有用的工具!Ionic项目提供了一套丰富的图标库,在Ionic3中也进行了升级。公司的一个项目中需要用到瀑布流的特效,找了半天却没有找到相关的资源,最后只能自己动手实现。 让我们先看图: 相信看过图片的同学都明白是什么意思了吧——没错,就是瀑布流! 但是今天我们要讲的是一个特别的瀑布流效果:自动排版。 我们的目标是做出一种随机凌乱的感觉。为此我们需要设计一套机制来选择最佳排列方式展示图片,以确保每张图片与其相邻图片的比例最为合适。 为了实现这种特殊的布局,我们使用了Angular4框架。希望这个效果能够满足大家的需求!
  • 基于REM自适应
    优质
    基于REM的自适应布局是指利用CSS中的REM单位实现网页布局在不同设备屏幕尺寸下的自动调整,确保网站界面美观且用户体验良好。 自适应布局可以通过使用rem单位来实现宽度和高度的自动调整。百分比布局虽然可以达到宽度上的自适应效果,但在处理高度方面存在局限性。 REM(Root EM)是一种相对长度单位,其大小取决于根元素字体尺寸,默认情况下HTML文档中的字体大小为16px,因此1rem等于16px,而10rem则相当于160px。通过调整浏览器的默认字体设置或使用JavaScript动态改变html标签的font-size属性值,可以实现页面布局在不同屏幕尺寸下的自适应效果。 例如,在一个设计稿宽度为750像素的情况下: ```javascript function resize() { var DesignWidth = 750; var DesignFontSize = 200; } ``` 这段代码中定义了设计稿的宽度和字体大小,可以根据这些参数调整页面元素的实际尺寸以实现自适应布局。
  • FlutterCenter、Padding和Align
    优质
    本篇文章主要讲解了在Flutter开发中如何使用Center、Padding和Align等布局组件来优化界面元素的位置与排布,帮助开发者快速掌握常用布局技巧。 文章目录 - Center(居中布局) - Padding(填充布局) - Align(对齐布局) Center(居中布局)在Center布局中,子元素处于水平和垂直方向的中间位置。 代码如下: ```dart void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: ``` 注意:此处代码示例未完成,`title:` 后面没有添加具体的字符串。