postcss-mobile-forever
Version:
PostCSS 伸缩视图转换插件。To adapt different displays by one mobile viewport.
161 lines • 6.28 kB
JavaScript
module.exports = {
PLUGIN_NAME: "postcss-mobile-forever",
width: w => ({
prop: 'width',
value: `${w}px`,
}),
marginL: {
prop: 'margin-left',
value: 'auto',
important: true,
},
marginR: {
prop: 'margin-right',
value: 'auto',
important: true,
},
left: {
prop: 'left',
value: '0',
important: true,
},
right: {
prop: 'right',
value: '0',
important: true,
},
maxWidth: w => ({
prop: 'max-width',
value: `${w}px`,
important: true,
}),
minWidth: w => ({
prop: 'min-width',
value: `${w}px`,
important: true,
}),
minFullHeight: {
prop: 'min-height',
value: '100vh',
},
minDFullHeight: {
prop: 'min-height',
value: '100dvh',
},
dFullHeight: {
prop: 'height',
value: '100dvh',
},
autoHeight: {
prop: 'height',
value: 'auto',
important: true,
},
shadowBorder: c => ({
prop: "box-shadow",
value: `0 0 0 1px ${c}`,
}),
fixedPos: {
prop: "position",
value: "fixed",
},
autoDir: dir => ({
prop: dir,
value: "auto",
}),
sideL: (vwidth, gap, width) => ({
prop: "left",
value: `calc(50% - ${vwidth / 2 + gap + width}px)`,
}),
sideR: (vwidth, gap, width) => ({
prop: "right",
value: `calc(50% - ${vwidth / 2 + gap + width}px)`
}),
top: t => ({
prop: "top",
value: `${t}px`,
}),
bottom: b => ({
prop: "bottom",
value: `${b}px`,
}),
layoutContain: {
prop: "contain",
value: "layout"
},
fullW: {
prop: "width",
value: "100%",
important: true,
},
fullH: {
prop: "height",
value: "100%",
important: true,
},
fullHVh: {
prop: "height",
value: "100vh",
},
autoOverflow: {
prop: "overflow",
value: "auto",
important: true,
},
demoModeSelector: ".DEMO_MODE::before",
ignoreNextComment: "mobile-ignore-next",
ignorePrevComment: "mobile-ignore",
notRootCBComment: "not-root-containing-block",
rootCBComment: "root-containing-block",
applyComment: "apply-without-convert",
verticalComment: "vertical-writing-mode",
/** position fixed 时依赖屏幕宽度的属性,https://jameshfisher.com/2019/12/29/what-are-css-percentages/ */
containingBlockWidthProps: [
"left", "right",
"margin", "margin-bottom", "margin-left", "margin-right", "margin-top",
"max-width", "min-width",
"padding", "padding-bottom", "padding-left", "padding-right", "padding-top",
"shape-margin",
"text-indent",
"width"
],
/** 涉及到长度的属性 */
lengthProps: ["word-spacing", "width", "translate", "transform", "transform-origin", "top",
"text-decoration-thickness", "text-indent", "text-underline-offset",
"tab-size", "shape-margin", "shape-outside",
"scroll-margin", "scroll-margin-block", "scroll-margin-block-end", "scroll-margin-block-start", "scroll-margin-bottom",
"scroll-margin-inline", "scroll-margin-inline-end", "scroll-margin-inline-start", "scroll-margin-left", "scroll-margin-right",
"scroll-margin-top", "scroll-padding", "scroll-padding-block", "scroll-padding-block-end", "scroll-padding-block-start",
"scroll-padding-bottom", "scroll-padding-inline", "scroll-padding-inline-end", "scroll-padding-inline-start",
"scroll-padding-left", "scroll-padding-right", "scroll-padding-top",
"row-gap", "right", "perspective",
"padding", "padding-block", "padding-block-end", "padding-block-start", "padding-bottom", "padding-inline",
"padding-inline-end", "padding-inline-start", "padding-left", "padding-right", "padding-top",
"overflow-clip-margin", "outline", "outline-offset", "outline-width", "offset", "offset-distance",
"object-position", "min-block-size", "min-height", "min-inline-size", "min-width",
"max-block-size", "max-height", "max-inline-size", "max-width", "mask", "mask-border", "mask-border-outset",
"mask-border-width", "mask-position", "mask-size", "margin", "margin-block", "margin-block-end", "margin-block-start",
"margin-bottom", "margin-inline", "margin-inline-end", "margin-inline-start", "margin-left", "margin-right", "margin-top",
"line-height", "letter-spacing", "left", "inset", "inset-block", "inset-block-end", "inset-block-start", "inset-inline",
"inset-inline-end", "inset-inline-start", "inline-size", "height",
"grid", "grid-auto-columns", "grid-auto-rows", "grid-template", "grid-template-columns", "grid-template-rows", "gap",
"font", "font-size", "flex", "flex-basis", "contain-intrinsic-block-size", "contain-intrinsic-height", "contain-intrinsic-inline-size",
"contain-intrinsic-size", "contain-intrinsic-width", "columns", "column-gap", "column-rule", "column-rule-width", "column-width",
"clip-path", "box-shadow", "bottom", "border", "border-block", "border-block-end", "border-block-end-width", "border-block-start",
"border-block-start-width", "border-block-width", "border-bottom", "border-bottom-left-radius", "border-bottom-right-radius",
"border-bottom-width", "border-end-end-radius", "border-end-start-radius", "border-image-outset", "border-image-width",
"border-inline", "border-inline-end", "border-inline-end-width", "border-inline-start", "border-inline-start-width",
"border-inline-width", "border-left", "border-left-width", "border-radius", "border-right", "border-right-width", "border-spacing",
"border-start-end-radius", "border-start-start-radius", "border-top", "border-top-left-radius", "border-top-right-radius",
"border-width", "block-size", "background", "background-position", "background-position-x", "background-position-y", "background-size",
"backdrop-filter",
],
/** 书写模式为横向时,百分比可能取根包含块的逻辑属性 */
horisontalContainingBlockLogicalProps: ["inline-size", "max-inline-size", "min-inline-size",
"padding-inline", "padding-inline-end", "padding-inline-start",
"inset-inline", "inset-inline-end", "inset-inline-start"],
/** 书写模式为纵向时,百分比可能取根包含块的逻辑属性 */
verticleContainingBlockLogicalProps: ["block-size", "max-block-size", "min-block-size",
"padding-block", "padding-block-end", "padding-block-start",
"inset-block", "inset-block", "inset-block-start"],
}