vue 实现自适应布局

vue实现BI看板自适应布局

对于自适应的方法有很多种,这里用纯css的方式,配合弹性布局

1、页面部分
<div class="page">
   <div class="auto-col">
     <!-- 第一行 -->
     <div class="static"> </div>
     <!-- 第二行 -->
     <div class="auto auto-row">
       <div class="auto"></div>
       <div class="auto"></div>
     </div>
     <!-- 第三行 -->
     <div class="auto auto-row">
       <div class="auto"></div>
       <div class="auto"></div>
       <div class="auto"></div>
     </div>
   </div>
</div>
2、css部分

$gutter: 10px;
.auto-col {
  flex-direction: column;
}
.auto-row {
  flex-direction: row;
}
.auto-row,
.auto-col {
  width: 100%;
  height: 100%;
  transform-origin: 0% 0%;
  display: flex;
  gap: $gutter;
  .static {
    flex-grow: 0;
    flex-shrink: 0;
  }
  .auto {
    border-radius: 4px;
    overflow: hidden;
    flex: 1;
  }
}

Vue 移动端自适应布局有多种方案,以下为你详细介绍: ### 运用 CSS 布局技术与相对单位 综合运用 Flex/Grid 处理元素排列,通过 rem/vw 和 PostCSS 插件简化适配。结合 Vue3 响应式 API 还能动态调整界面。对于常见问题,如 1px 边框、图片模糊等,可采用特定技巧解决[^1]。 ### 在 vue.config.js 中配置 可在 `vue.config.js` 里配置 CSS 前缀,将 px 转换为 rem。代码如下: ```javascript const { defineConfig } = require("@vue/cli-service"); const autoprefixer = require("autoprefixer"); const pxtorem = require("postcss-pxtorem"); module.exports = defineConfig({ // 配置css前缀,px转rem css: { loaderOptions: { postcss: { postcssOptions: { plugins: [ autoprefixer(), pxtorem({ rootValue: 192, // 根据设计稿宽度/10 propList: ["*"] }) ] } } } } }); ``` 这样配置后,就能自动将样式中的 px 转换为 rem,实现自适应布局[^2]。 ### loader 配置 还可进行 loader 配置,如下: ```javascript { test: /\.vue$/, loader: &#39;vue-loader&#39;, options: { cssModules: { localIdentName: &#39;[path][name]---[local]---[hash:base64:5]&#39;, camelCase: true }, extractCSS: true, loaders: env.production? { css: ExtractTextPlugin.extract({ use: &#39;css-loader!px2rem-loader?remUnit=40&remPrecision=8&#39;, fallback: &#39;vue-style-loader&#39; }), scss: ExtractTextPlugin.extract({ use: &#39;css-loader!px2rem-loader?remUnit=40&remPrecision=8!sass-loader&#39;, fallback: &#39;vue-style-loader&#39; }) } : { css: &#39;vue-style-loader!css-loader!px2rem-loader?remUnit=40&remPrecision=8&#39;, scss: &#39;vue-style-loader!css-loader!px2rem-loader?remUnit=40&remPrecision=8!sass-loader&#39; } } } ``` 该配置可在不同环境下将 px 转换为 rem,实现自适应[^3]。 ### 在 build/util.js 中配置 在 `build/util.js` 中进行如下配置: ```javascript const px2remLoader = { loader: &#39;px2rem-loader&#39;, options: { remUnit: 64 // 设计稿宽度/10 } } // generate loader string to be used with extract text plugin function generateLoaders(loader, loaderOptions) { const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader] if (loader) { loaders.push({ loader: loader + &#39;-loader&#39;, options: Object.assign({}, loaderOptions, { sourceMap: options.sourceMap }) }) } } ``` 这能利用 `px2rem-loader` 把 px 转换为 rem,实现自适应布局[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值