BEM:大厂都在用的命名规范

在微信生态中进行CSS开发,特别是针对小程序或公众号页面,是一项既充满挑战又富有创意的工作。随着微信成为人们日常生活中不可或缺的社交平台,其生态系统内的应用和页面设计质量直接影响到用户体验。因此,掌握高效、规范的CSS开发方法至关重要。本文将从基础概念出发,逐步深入,帮助初学者快速上手微信生态的CSS开发。

入门篇:了解基础工具与概念

1. WeUI - 微信官方UI库

WeUI是微信团队为微信Web服务量身定制的一套同质化UI库,它提供了丰富的基础样式和组件,如按钮、对话框、加载提示等,能够帮助开发者快速构建出符合微信风格的界面。使用WeUI,你可以减少从零开始设计的时间,直接应用经过微信官方优化的样式,保证了界面的一致性和用户体验。

2. HTML标签与组件思维

  • 标签 :HTML页面由各种标签构成,比如<p>表示段落,<div>用于定义一个区块。选择正确的标签有助于提升页面的语义化,使内容结构更加清晰,同时有利于SEO和无障碍访问。
  • 组件化思维:现代前端开发倡导组件化,即将页面拆分为可复用的组件,如按钮、卡片等。这种思想提高了代码的可维护性和开发效率。在微信生态中,理解并应用组件化开发模式,能让你的项目更加灵活高效。

进阶篇:遵循规范与技巧

3. BEM命名方法

BEM(Block Element Modifier)是一种CSS命名约定,它通过明确的命名规则来组织CSS类,提高代码的可读性和可维护性。具体来说:

  • Block :代表一个独立的、可复用的组件,如.page
  • Element :属于某个Block的子元素,通过双下划线__连接,如.page__header
  • Modifier :用来描述Block或Element的状态、外观变化,通过双下划线后跟下划线连接,如.page__active。这种方法能有效避免类名冲突,让CSS更易于理解和维护。

4. HTML语义化的重要性

语义化标签,如使用<article>表示文章内容,<section>划分文档区域,不仅有助于搜索引擎理解页面结构,还使得页面在没有CSS的情况下也能保持基本的可读性。这对于提升网页的可访问性和SEO优化都极为重要。

实战篇:编写高效美观的代码

接下来咱们来写一点代码以实现下面图片的效果

首先咱们先将主要模块写完,主要将其分为两大块,一个是含有Button 按钮的上半部分,和装有三个其他按钮的下半部分,咱们使用BEM命名法命名。

js 复制代码
<body>
    <div class="page">
        <div class="page__hd">
            <div class="page__title">
            Button
            </div>
            <p class="page__desc">
            按钮
            </p>
        </div>
        <div class="page__bd">
            <div class="button-sp-area">
                <a href="#" class="weui-btn weui-btn_primary">主要操作</a>
                <a href="#" class="weui-btn weui-btn_default">次要操作</a>
                <a href="#" class="weui-btn weui-btn_warn">警告</a>
            </div>
        </div>
    </div>
</body>

这边附上css样式:

js 复制代码
<style>
    /* css reset  默认样式重置,对所有浏览器都公平
    * {
        margin: 0;
        padding: 0;
        outline: 0; /*轮廓 不同的浏览器不一样*/
    }
    /* css inherit 继承 */
    body, html {
        height: 100%;
        /* 按上去的高亮颜色  透明*/
        -webkit-tap-highlight-color: transparent;
    }

    body {
        /*为苹果用户优化 支持苹果特殊字体*/
        font-family: system-ui,-apple-system, sans-serif;

    }
    .page, body {
        background-color: #ededed;
    }

    .page {
       position: absolute;
       top: 0;
       left: 0;
       right: 0;
       bottom: 0;
       overflow-y: auto;/*page 一屏高度,用滚动条*/
       -webkit-overflow-scrolling: touch;/*滚动如丝般顺滑*/
       overflow-scrolling: touch;
    }
    .page__hd {
        padding: 40px;
    }
    .page__title {
        text-align: left;
        font-size: 20px; /*16*/
        margin-bottom: 15px;
        font-weight: 400;
    }
    .page__desc {
        margin-top: 4px;
        text-align: left;
        font-size: 14px;
        color:rgba(0,0,0,0.55);
    }

    .button-sp-area {
        /*顺时针*/
        margin: 15px auto;
        padding: 15px;
        text-align: center;
    }
    /*weui 项目前缀  .tb .tm 通用.page?  .dy */
    .weui-btn {
        display: block; /*inline -> block */
        width: 184px;
        margin: 0 auto;
        padding: 12px 24px;
        font-weight: 500;
        font-size: 17px;
        text-align: center;
        text-decoration: none;
        color: #fff;
        line-height: 1.4118;
        border-radius: 8px;
        /*webkit 代表android chrome, apple等内核 
            user-select 是比较新的属性,
            实验属性 -webkit-user-select 支持 有的新手机上能运行 
        */
        -webkit-user-select:none;
        user-select:none;/* 防止长按 select 用户会误解*/

    }
    .weui-btn_primary {
        background-color: #07c160;
    }
    .weui-btn_default {
        color: rgba(0,0,0,0.9);
        background-color: rgba(0,0,0,0.5);
    }
    .weui-btn_warn {
        background: #cb1c1c;
    }
    /* css高级选择器 兄弟选择器 */
    .weui-btn+.weui-btn {
        margin-top: 16px;
    }

    </style>

结语

微信生态的CSS开发不仅仅是技术的堆砌,更是对用户体验、代码质量和开发效率的综合考量。通过学习和实践WeUI、掌握BEM命名法、坚持HTML语义化以及灵活运用组件化思维,你将能更高效地开发出既美观又实用的微信页面。记住,实战是最好的老师,不断尝试和迭代你的代码,逐步提升自己的技能水平。

相关推荐
互联网搬砖老肖15 分钟前
React组件(一):生命周期
前端·javascript·react.js
HCl+NaOH=NaCl+H_2O43 分钟前
Quasar组件 Carousel走马灯
javascript·vue.js·ecmascript
℘团子এ1 小时前
vue3中预览Excel文件
前端·javascript
shmily麻瓜小菜鸡1 小时前
在 Angular 中, `if...else if...else`
前端·javascript·angular.js
OK_boom3 小时前
React-useRef
javascript·react.js·ecmascript
未来之窗软件服务3 小时前
solidwors插件 开发————仙盟创梦IDE
前端·javascript·数据库·ide·仙盟创梦ide
小白学大数据3 小时前
基于Scrapy-Redis的分布式景点数据爬取与热力图生成
javascript·redis·分布式·scrapy
Minyy114 小时前
Vue3指令(二)--v-text、v-html数据渲染,计算属性
前端·javascript·vue.js·前端框架·vue·html
个人开发-胡涂涂4 小时前
ECMAScript标准:JavaScript的核心
前端·javascript·ecmascript
Mryan20054 小时前
Angular | 利用 `ChangeDetectorRef` 解决 Angular 动态显示输入框的聚焦问题
前端·javascript·angular.js