1.0.0 • Published 7 months ago

@winner-fed/plugin-viewport v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

@winner-fed/plugin-viewport

Viewport plugin for WinJS.

底层基于 postcss-mobile-forever 封装。

Usage

Install:

npm add @winner-fed/plugin-viewport -D

Add plugin to your .winrc.ts:

// .winrc.ts
export default {
  plugins: ['@winner-fed/plugin-viewport'],
  // 开启配置
  // 参考 https://github.com/wswmsword/postcss-mobile-forever?tab=readme-ov-file#%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0 
  viewport: {}
};

Options

NameTypeDefaultDesc
viewportWidthnumber|(file: string) => number750应用基于该宽度进行开发,转换后的伸缩视图将会以该宽度的视图作为标准进行比例伸缩;可以传递函数动态生成宽度,例如 file => file.includes("vant") ? 375 : 750 表示在名称包含“vant”的文件内使用 375px 的宽度,而其他文件使用 750px 的宽度
mobileUnitstring"vw"移动端竖屏视口视图,转换成什么伸缩单位?设置为 rem 后激活 rem-mode
maxDisplayWidthnumber/伸缩视图的最大宽度
basicRemWidthnumber/rem-mode 的基准宽度,若不设定,将通过 viewportWidth 获取
enableMediaQuerybooleanfalse打开媒体查询模式,打开后将自动关闭 maxDisplayWidth,激活 mq-mode
desktopWidthnumber600适配到桌面端宽度时,展示的视图宽度
landscapeWidthnumber425适配到移动端横屏宽度时,展示的视图宽度
appSelectorstring/页面最外层选择器,例如“#app”,用于设置在桌面端和移动端横屏时的居中样式,样式文件中至少要包含空的选择器 #app {}
appContainingBlock"calc"|"manual"|"auto""calc"该属性和矫正 fixed 定位元素有关,manual 将不矫正;calc 将通过插件主动计算的方式矫正元素尺寸,是默认行为;auto 将通过 transform: translateZ(0) 强制设置根包含块appSelector,从而自动矫正元素,并且此时需要设置属性 necessarySelectorWhenAuto
necessarySelectorWhenAutostring/appContainingBlock 设为 auto 时,需要指定该属性,该属性指定了 appSelector 往内一层的元素选择器,查看一个关于指定元素作为包含块的实验以了解如何使用该属性,您也可以查看使用这个属性的示例项目以了解如何使用这个属性
borderboolean|stringfalse在页面外层展示边框吗,用于分辨居中的小版心布局和背景,可以设置颜色字符串
disableDesktopbooleanfalse打开则不做桌面端适配,使用该参数前需要打开 enableMediaQuery
disableLandscapebooleanfalse打开则不做移动端横屏适配,使用该参数前需要打开 enableMediaQuery
disableMobilebooleanfalse打开则不做移动端竖屏适配,把 px 转换为视口单位,如 vw
excludeRegExp|RegExp[]/排除文件或文件夹
includeRegExp|RegExp[]/包括文件或文件夹
unitPrecisionnumber3单位精确到小数点后几位?
propListstring[]'*'哪些属性要替换,哪些属性忽略?用法参考 postcss-px-to-viewport 文档
selectorBlackList(string|RegExp)[][]选择器黑名单,名单上的不转换
propertyBlackListpropertyBlackList[]属性黑名单,名单上的不转换,如果要指定选择器内的属性,用对象的键表示选择器名称,具体用法见 vant 的范例代码
valueBlackList(string|RegExp)[][]属性值黑名单,名单上的值不转换
rootContainingBlockSelectorList(string|RegExp)[][]包含块是根元素的选择器列表,效果和标注注释 /* root-containing-block */ 相同
verticalWritingSelectorList(string|RegExp)[][]纵向书写模式的选择器列表,效果和在选择器顶部标注注释 /* vertical-writing-mode */ 相同
minDesktopDisplayWidthnumber/宽度断点,如果不提供这个值,默认使用 desktopWidth 的值,视图大于这个宽度,则页面宽度是桌面端宽度 desktopWidth,“原理和输入输出范例”一节具体介绍了该值的触发情况
maxLandscapeDisplayHeightnumber640高度断点,视图小于这个高度,并满足一定条件,则页面使用移动端横屏宽度,“原理和输入输出范例”一节具体介绍了该值的触发情况
sideany/侧边配置,在桌面端媒体查询中生效,用于利用宽屏的空间,后文将介绍它的若干子属性
commentany/自定义注释,改变注释的名称,后文将介绍它的若干子属性
customLengthPropertyany/用于指定需要添加到桌面端或横屏的自定义变量(css 变量,var(...)),如果不指定,默认所有和长度有关的属性,如果使用了自定义变量,都会被添加入桌面端和横屏,后文将介绍它的若干子属性
experimental.extractbooleanfalse提取桌面端与横屏样式代码,用于生产环境,用于代码分割优化产包,具体查看“注意事项”一节
experimental.minDisplayWidthnumber/限制最小宽度,和 maxDisplayWidth 搭配使用

默认配置参数

{
  "viewportWidth": 750,
  "maxDisplayWidth": null,
  "enableMediaQuery": false,
  "desktopWidth": 600,
  "landscapeWidth": 425,
  "minDesktopDisplayWidth": null,
  "maxLandscapeDisplayHeight": 640,
  "appSelector": "#app",
  "appContainingBlock": "calc",
  "necessarySelectorWhenAuto": null,
  "border": false,
  "disableDesktop": false,
  "disableLandscape": false,
  "disableMobile": false,
  "exclude": null,
  "include": null,
  "unitPrecision": 3,
  "selectorBlackList": [],
  "valueBlackList": [],
  "rootContainingBlockSelectorList": [],
  "verticalWritingSelectorList": [],
  "propList": ["*"],
  "mobileUnit": "vw",
  "side": {
    "width": null,
    "gap": 18,
    "selector1": null,
    "selector2": null,
    "selector3": null,
    "selector4": null,
    "width1": null,
    "width2": null,
    "width3": null,
    "width4": null
  },
  "comment": {
    "applyWithoutConvert": "apply-without-convert",
    "rootContainingBlock": "root-containing-block",
    "notRootContainingBlock": "not-root-containing-block",
    "ignoreNext": "mobile-ignore-next",
    "ignoreLine": "mobile-ignore",
    "verticalWritingMode": "vertical-writing-mode"
  },
  "customLengthProperty": {
    "rootContainingBlockList_LR": [],
    "rootContainingBlockList_NOT_LR": [],
    "ancestorContainingBlockList": [],
    "disableAutoApply": false
  },
  "experimental": {
    "extract": false,
    "minDisplayWidth": null
  }
}

License

MIT.

1.0.0

7 months ago