JS【实战】CSS 样式相关的处理

CSS 样式键转换

如 fontSize -> font-size

js 复制代码
// 函数封装 -- CSS样式键转换,如 fontSize -> font-size
function CSSformatKey(oldKey) {
  // 查找所有大写字母,转换为 "-小写"
  const newKey = oldKey.replace(/[A-Z]/g, (c) => `-${c.toLocaleLowerCase()}`);
  return newKey;
}
let oldKey = 'fontSize';
let result = CSSformatKey(oldKey);
console.log(result);

CSS 样式单位转换

px 转 vw

js 复制代码
// 函数封装 -- CSS样式单位转换,如 375px -> 100vw
function px2vw(components = []) {
  // 正则匹配 '10px' '9.5px',并对数值分组
  const reg = /^(\d+(\.\d+)?)px$/;
  components.forEach((component) => {
    const props = component.props || {};
    // 遍历组件的属性
    Object.keys(props).forEach((key) => {
      const val = props[key];

      // 非字符串无需转换;
      if (typeof val !== 'string') {
        return;
      }
      // 无px则无需转换
      if (reg.test(val) === false) {
        return;
      }
      // 取得匹配的分组,第1项为匹配的所有内容,如375px,第2项为匹配到的px前的数值,如375
      const arr = val.match(reg) || [];
      // 提取出数值部分
      const numStr = arr[1];
      // 将字符串数值转换为数字
      const num = parseFloat(numStr);
      // 因UI图的画布宽度是 375px,即100vw = 375px 则px 转 vw 的公式为  100vw = 375px/375*100
      const vwNum = (num / 375) * 100;
      // 避免无法除尽,保留两位小数
      props[key] = `${vwNum.toFixed(2)}vw`;
    });
  });
}

let components = [
  {
    props: {
      height: '100px',
    },
  },
  {
    props: {
      height: '140px',
    },
  },
];
px2vw(components);
console.log(components);

结果为:

js 复制代码
[ { props: { height: '26.67vw' } }, { props: { height: '37.33vw' } } ]
相关推荐
她说可以呀4 小时前
Vue插槽
前端·javascript·vue.js
qq_448011164 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
FRing036 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
兰亭妙微UI设计公司9 小时前
兰亭妙微ui设计公司分享:B端组件命名如何支持团队协作
前端·javascript·vue.js
小大宇9 小时前
Vue知识点-ElementPlus-03提示框+询问+通知
前端·javascript·vue.js
前端技术官10 小时前
前端的技术判断力是怎么练出来的?
javascript·web前端·localstorage·debounce·弱网处理
程序员大阳12 小时前
副队长JavaScript教程(60)-BOM 初识:window 对象与浏览器模型
javascript·bom·window对象·浏览器模型
web打印社区12 小时前
Chrome-kiosk-printing能上生产吗
开发语言·前端·javascript·chrome·websocket
志尊宝12 小时前
AI原生前端开发(041):AI辅助的状态管理(Zustand/Pinia)
前端·javascript·ai-native
Geoffwo12 小时前
DSH-SKILL基础
javascript