html、css类名命名思路整理

开发页面时,老是遇到起名问题,越想越头疼,严重影响开发进度,都是在想名字,现在做一下梳理,统一一下思想,希望以后能减少这块的痛苦。

命名规则

功能名称\]__\[组成部分名称\]--\[样式名称

思路

  1. 拆分模块,将一个大的模块拆分成小的模块,小模块命名以模块特性命名,小模块命名先不急,主要是确定主模块的框架;
  2. 写布局,剔除掉小模块后剩下的部分,这部分是主体布局,以一下方向性、布局性的单词来命名,如
    main-info模块里面上中下,main-info-item__header 顶部、main-info-item__body 主体、 main-info-item__footer 底部、main-info-item 公共样式使用
    main-info-item__header 内部布局,header-item__left 左侧、header-item__right 右侧
  3. 完善布局样式,填充拆分的小模块,小模块以模块特性命名,与其他部分无关
    总结:有些样式是用来布局的,有些样式是用来划分模块的,区分开这两块后,我在命名时阻碍小了很多,再有思路在完善。

相关代码

设计图展示

第一步:分模块

第二步:写布局

复制代码
    <div class="main-info">
      <div class="main-info-item main-info-item__header">
        <div class="header-item__left">
          <!-- logo 项 -->
        </div>
        <div class="header-item__right">

          <div class="header-title">
          <!-- 标题项 -->
          </div>

          <div class="header-content">
           <!-- 标签组项 -->
          </div>
        </div>
      </div>
      <div class="main-info-item main-info-item__body">
        <div class="info-item">
           <!-- 展示信息项 -->
        </div>
        <div class="info-item"></div>
        <div class="info-item"></div>
      </div>
      <div class="main-info-item main-info-item__footer">
        <div class="phone-section">
          <!-- 电话信息项 -->
        </div>
        <div class="concat-section">
          <!-- 联系信息项 -->
        </div>
      </div>
    </div>

第三步:完善布局样式,填充拆分的小模块

复制代码
    <div class="main-info">
      <div class="main-info-item main-info-item__header">
        <div class="header-item__left">
          <!-- logo 项 -->
          <div class="header-logo"></div>
        </div>
        <div class="header-item__right">
          <!-- 标题项 -->
          <div class="header-title">企业名称</div>
          <!-- 标签组项 -->
          <div class="header-content">
            <span class="header-tag">一级品质</span
            ><span class="header-tag">二级品质</span
            ><span class="header-tag">三级品质</span
            ><span class="header-tag">四级品质</span
            ><span class="header-tag">五级品质</span
            ><span class="header-tag">六级品质</span
            ><span class="header-tag">七级品质</span>
          </div>
        </div>
      </div>
      <div class="main-info-item main-info-item__body">
        <!-- 展示信息项 -->
        <div class="info-item">
          <div class="info-item__label">总体收入</div>
          <div class="info-item__content">123,123,234,123.00</div>
        </div>
        <div class="info-item">
          <div class="info-item__label">总体收入</div>
          <div class="info-item__content">123,123,234,123.00</div>
        </div>
        <div class="info-item">
          <div class="info-item__label">总体收入</div>
          <div class="info-item__content">123,123,234,123.00</div>
        </div>
      </div>
      <div class="main-info-item main-info-item__footer">
        <div class="phone-section">
          <div class="phone-section-item phone-section-item__icon">~</div>
          <div class="phone-section-item phone-section-item__number">
            010-123123
          </div>
          <div class="phone-section-item phone-section-item__total">电话10</div>
        </div>
        <div class="concat-section">
          <div class="concat-section-item active">
            <div class="concat-section-item__icon">#</div>
            <div class="concat-section-item__label">主页</div>
          </div>
          <div class="concat-section-item">
            <div class="concat-section-item__icon">@</div>
            <div class="concat-section-item__label">邮箱</div>
          </div>
          <div class="concat-section-item">
            <div class="concat-section-item__icon">&</div>
            <div class="concat-section-item__label">地址</div>
          </div>
        </div>
      </div>
    </div>

<style>
  /* 主模块 */
  .main-info {
    padding: 8px;
    width: 400px;
    height: 300px;
    border: 1px solid #333;
    background-color: lightblue;
    font-size: 12px;

    /* 子模块公共样式 */
    .main-info-item {
      padding: 8px;
      margin-bottom: 8px;
      border: 1px solid #aaa;
      background-color: antiquewhite;
    }

    /* 头部模块 */
    .main-info-item__header {
      display: flex;
      flex-direction: row;

      /* 头部 左侧 */
      .header-item__left {
        flex: 0 0 50px;
        border: 1px solid lightcoral;

        /* logo */
        .header-logo {
          width: 50px;
          height: 50px;
          background-color: rgb(183, 17, 17);
        }
      }

      /* 头部 右侧 */
      .header-item__right {
        padding-left: 8px;
        flex: 1;

        /* 独立模块 标题 */
        .header-title {
          font-size: 16px;
          font-weight: 500;
          margin-bottom: 8px;
        }

        /* 独立模块 内容 */
        .header-content {
          display: flex;
          flex-wrap: wrap;

          /* 独立模块 标签 */
          .header-tag {
            background-color: rgb(48, 158, 158);
            padding: 2px 4px;
            margin-right: 4px;
            margin-bottom: 4px;
            color: #fff;
            border-radius: 4px;
          }
        }
      }
    }

    /* 主体模块 */
    .main-info-item__body {
      display: flex;
      justify-content: space-between;
      align-items: center;

      /* 重复小模块 */
      .info-item {
        flex: 0 0 26%;
        text-align: center;

        /* 重复小模块 文案*/
        .info-item__lable {
          font-weight: 500;
          margin-bottom: 2px;
        }

        /* 重复小模块 内容 */
        .info-item__content {
          color: #9b9b9b;
          overflow: hidden;
          text-overflow: ellipsis;
          white-space: nowrap;
        }
      }
    }

    /* 底部模块 */
    .main-info-item__footer {
      display: flex;
      justify-content: space-between;
      align-items: center;

      /* 电话信息模块 */
      .phone-section {
        display: flex;

        /* 公共样式 */
        .phone-section-item {
          font-weight: 500;
          margin-right: 4px;
        }

        /* 独立模块 */
        .phone-section-item__icon {
          color: cornflowerblue;
        }

        /* 独立模块 */
        .phone-section-item__number {
          color: cornflowerblue;
        }

        /* 独立模块 */
        .phone-section-item__total {
          color: indianred;
        }
      }
      /* 联系信息模块 */
      .concat-section {
        display: flex;

        /* 公共样式 */
        .concat-section-item {
          display: flex;
          align-items: center;
          padding: 4px 8px;
          background: #eee;
          color: #888;
          border-radius: 4px;
          margin-left: 4px;

          /* 小模块选中状态 */
          &.active {
            color: blue;
          }

          /* 小模块的图标 */
          .concat-section-item__icon {
            margin-right: 4px;
          }

          /* 小模块的文案 */
          .concat-section-item__label {
          }
        }
      }
    }
  }
</style>
相关推荐
恋猫de小郭8 分钟前
为什么跨平台框架可以适配鸿蒙,它们的技术原理是什么?
android·前端·flutter
云浪11 分钟前
元素变形记:CSS 缩放函数全指南
前端·css
明似水27 分钟前
用 Melos 解决 Flutter Monorepo 的依赖冲突:一个真实案例
前端·javascript·flutter
独立开阀者_FwtCoder36 分钟前
stagewise:让AI与代码编辑器无缝连接
前端·javascript·github
清沫38 分钟前
Cursor Rules 开发实践指南
前端·ai编程·cursor
江城开朗的豌豆44 分钟前
JavaScript篇:对象派 vs 过程派:编程江湖的两种武功心法
前端·javascript·面试
不吃糖葫芦31 小时前
App使用webview套壳引入h5(二)—— app内访问h5,顶部被手机顶部菜单遮挡问题,保留顶部安全距离
前端·webview
江城开朗的豌豆1 小时前
JavaScript篇:字母侦探:如何快速统计字符串里谁才是'主角'?
前端·javascript·面试
kite01217 小时前
浏览器工作原理06 [#]渲染流程(下):HTML、CSS和JavaScript是如何变成页面的
javascript·css·html
coding随想10 小时前
JavaScript ES6 解构:优雅提取数据的艺术
前端·javascript·es6