WebPage-postcss-px-to-viewport前端适配

1.前言

postcss-px-to-viewport是用于将像素单位(px)转换为视口单位(vw vh vmin vmax)的PostCss插件。创建在不同显示设备上具有响应式的web界面。

2.安装与配置

使用npm进行安装

css 复制代码
npm install postcss-px-to-viewport --save-dev

在项目根目录下创建配置文件postcss.config.js

javascript 复制代码
module.exports = {
  plugins: {
    'postcss-px-to-viewport': {
      unitToConvert: 'px', // 需要转换的单位,默认为"px"
      viewportWidth: 1920, // 设计稿的视口宽度
      unitPrecision: 5, // 单位转换后保留的精度
      propList: ['*'], // 能转化为vw的属性列表
      viewportUnit: 'vw', // 希望使用的视口单位
      fontViewportUnit: 'vw', // 字体使用的视口单位
      selectorBlackList: [], // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。
      minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换
      mediaQuery: false, // 媒体查询里的单位是否需要转换单位
      replace: true, //  是否直接更换属性值,而不添加备用属性
      exclude: undefined, // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
      include: undefined, // 如果设置了include,那将只有匹配到的文件才会被转换
      landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
      landscapeUnit: 'vw', // 横屏时使用的单位
      landscapeWidth: 1920 // 横屏时使用的视口宽度
    }
  }
}

3.实际项目

仅做参考宽高设定 尽量使用calc计算后 按照ui进行设定间距与宽高,主要应用场景:可视化大屏,多端适配转换.

html 复制代码
<template>
  <div class="management-body">
    <el-divider />
    <div class="search">
        <el-input
          class="input"
          placeholder="请输入姓名关键词查询"
          clearable
        />

      <div class="btn-container">
        <div
          class="common-system-btn"
        >
        <img src="#" alt="" class="eidt-icon">
          新建
        </div>
        
      </div>
    </div>

    <!-- 表格 -->
    <div class="list-table">
      
    </div>
  </div>
</template>

<script setup lang="tsx">

</script>

<style lang="scss" scoped>

$spacing-md: vh(12);

@function vh($px) {
  @return calc($px / 1080) * 100vh;
}

@mixin text-style($size, $family: var(--el-font-family-normal), $color: var(--el-text-color-primary)) {
  font-family: $family;
  font-size: $size;
  color: $color;
}

.common-system-btn {
  @include panel;

  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 72px;
  height: vh(32);
  line-height: vh(32);
  text-align: center;
  cursor: pointer;
  border: 1px solid #409eff !important;

  @include text-style(var(--font-14), var(--el-font-family-regular), #fff);

  &.disabled {
    pointer-events: none;
    cursor: not-allowed;
    opacity: 0.5;
  }

  &:hover {
    color: #fff;
    background-color: rgb(79 172 254 / 20%);
    border-color: #4facfe;
  }

  .eidt-icon {
    height: vh(14);
    margin-right: 4px;
  }
}

.management-body {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}

.search {
  display: flex;
  justify-content: space-between;
  margin-bottom: $spacing-md;

  .btn-container {
    display: flex;
  }
}

:deep(.flood__select) {
  width: 150px;
  margin-right: $spacing-md;
}

.input {
  height: vh(32);

  :deep(.el-input__icon) {
    margin-top: vh(3);
  }
}

.list-table {
  height: vh(560);
}
</style>
相关推荐
CharlesYu0120 小时前
前端性能优化的第一性原理,是不断缩短“用户发起意图 → 获得可用结果”之间的时间
前端
平头哥技术团队20 小时前
Day 21 _ 页内锚点_给每段起个 id,目录写 href=_#id_,点一下页面就滚到那一段
前端·html·html5
子兮曰21 小时前
Bun v1.4.1 深度解析:从 Zig 到 Rust,一场 11 天、64 个 AI 代理的语言迁徙
前端·后端·bun
人民广场吃泡面1 天前
什么是AI Agent?它又能给前端带来哪些效率提升?
前端·人工智能
中科三方1 天前
两家域名注册商资质被ICANN终止:企业域名资产安全再受关注
前端·网络·安全·域名
bug总结1 天前
uniapp vue3全局方法注册使用
前端·javascript·uni-app
华无丽言1 天前
如何在宜搭中实现获取子表中的字段值赋值到父表中?
前端·javascript·低代码
IT_陈寒1 天前
Vue的computed属性竟然坑了我一把
前端·人工智能·后端
威斯软科的老司机1 天前
通俗讲解 CNN 图像识别、向量 Embedding、Softmax 概率计算这三块的简化原理
前端·人工智能·ui·数字孪生
2601_962382431 天前
剑指大前端全栈工程师(全2册)主要情节
javascript·实战案例·全栈工程师·剑指大前端·html5+css3