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' } } ]
相关推荐
拾光拾趣录1 分钟前
从“祖传”构造函数到 `class`
前端·javascript
yvvvy8 分钟前
从“按钮都不会点”到“能撸大厂 UI”:我用 react-vant 踢开组件库的大门!
前端·javascript
安然dn8 分钟前
Cropper.js:JS图像裁剪库
前端·javascript
Hilaku25 分钟前
深入background-image:你可能不知道的几个性能优化与高级技巧
前端·css
睡不着先生34 分钟前
CSS `@scope` 实战指南:开启局部样式隔离新时代
css
Danny_FD41 分钟前
Vue + Element UI 实现模糊搜索自动补全
前端·javascript
gnip1 小时前
闭包实现一个简单Vue3的状态管理
前端·javascript
Enddme1 小时前
《面试必问!JavaScript 中this 全方位避坑指南 (含高频题解析)》
前端·javascript·面试
你怎么知道我是队长1 小时前
python---eval函数
开发语言·javascript·python
用户2519162427111 小时前
Canvas之图像合成
前端·javascript·canvas