内容简介:首先BEM是什么意思?BEM的意思就是块(block)、元素(element)、修饰符(modifier),是由Yandex团队提出的一种前端命名方法论,是一种 CSS命名规范B(blcok):也就是块的概念,也可以叫做组件,模块。
首先BEM是什么意思?
BEM的意思就是块(block)、元素(element)、修饰符(modifier),是由Yandex团队提出的一种前端命名方法论,是一种 CSS命名规范
zfbui-tabbar__item
从这个名字我们能够解读出 支付宝界面 标签栏 项
然后还能读取出他们的之间相应的结构
- 在命名中就赋予他们更多的意义,并且体现了他们的关系。
----->这恰恰就让你的代码更为友好,更加容易维护。 - 此外,命名变长后,他的命名同时也就变得更加的特殊,在上下文中更加稳定,不会干扰其他组件的样式 也就是提高了组件的独立性。
- 而且在写CSS样式时能够直接找到类名。
B(blcok):也就是块的概念,也可以叫做组件,模块。
页面是由多个组件一起拼接而成,他们相互独立,互不干扰。在现代开发中
项目中大部分都是由通用组件构成。
E(element):元素
他在块中承担的职责(唯一性的名字),并不是简单的父子关系
如:zfbui-tabbar__item_on 这里要注意是两个下划线__M(modifier):修饰符
也就是状态的修改。它不能单独使用,一定要依赖于块或元素
如: __item_on (一个下划线)
下面我们来分析支付宝界面的TarBar
很显然这个tabbar是一个块,很明显的区分了5个项,能够发现每个项他都是由三个元素组成。
这样我们就可以先给他们取好独立的名字:
项 item
图标 icon
标签 label
小红点 badge
那我们命名完成了,那我们再来梳理一下他们的结构
在上图中我们可以很清晰的看到他们的结构 于是我们可以构建出BEM树状图:
这个时候用BEM把他们规范后:
zfbui-tabbar__item
zfbui-tabbar__icon
zfbui-tabbar__label
zfbui-badge(由于这个badge在页面的其他组件没有使用且比较特殊故可简化)
- 在一个item被选中时我们发现他是蓝色的与其他item不同,在BEM规范中,对于元素状态的修改我们可以用 zfbui-tabbar__item_on 来修饰,这是使用Modifier的一个真实场景。
在用BEM构建出他们的框架和命名后,想必你的脑海中也对支付宝的tabbar结构有一个清晰的认识了吧
Nice 接下来我们就开始自己动手做一个tabbar组件吧
- 首先我们先把HTML结构完成。
<!-- BEM命名规范 --> <!-- tabbar模块 Block tabbar__item子元素两个下划线 --> <div class="zfbui-tabbar"> <a href="#" class="zfbui-tabbar__item zfbui-tabbar__item_on"> <span> <svg class="zfbui-tabbar__icon" aria-hidden="true"> <use xlink:href="#icon-rectangle390"></use> </svg> <span class="zfbui-badge">8</span> </span> <p class="zfbui-tabbar__label">首页</p> </a> <a href="#" class="zfbui-tabbar__item"> <span> <svg class="zfbui-tabbar__icon" aria-hidden="true"> <use xlink:href="#icon-yiban"></use> </svg> <span class="zfbui-badge">-</span> </span> <p class="zfbui-tabbar__label">财富</p> </a> <a href="#" class="zfbui-tabbar__item"> <span> <svg class="zfbui-tabbar__icon" aria-hidden="true"> <use xlink:href="#icon-tansuoa"></use> </svg> <span class="zfbui-badge">-</span> </span> <p class="zfbui-tabbar__label">口碑</p> </a> <a href="#" class="zfbui-tabbar__item"> <span> <svg class="zfbui-tabbar__icon" aria-hidden="true"> <use xlink:href="#icon-shejiao"></use> </svg> <span class="zfbui-badge">-</span> </span> <p class="zfbui-tabbar__label">朋友</p> </a> <a href="#" class="zfbui-tabbar__item"> <span> <svg class="zfbui-tabbar__icon" aria-hidden="true"> <use xlink:href="#icon-wode"></use> </svg> <span class="zfbui-badge">-</span> </span> <p class="zfbui-tabbar__label">我的</p> </a> </div> 复制代码
- 把长度、颜色量好注意这里的所有长度真实使用时需要减半!
3. 再把CSS结构补充
*{ margin: 0; padding: 0; } a:link { color: #a2a2a2; } a:vistied{ color: #a2a2a2; } a:hover { color: #509ff1; } a:active { color: #509ff1; } .zfbui-tabbar { display: flex; position: absolute; bottom: 0; width: 100%; z-index: 500; background-color: #ffffff; border-top: 1px solid #dddddd; } .zfbui-tabbar__item { flex: 1; /*子元素flex设置为等比例1:1:1*/ text-align: center; /*快速让水平内容居中*/ padding: 8.5px 6px 6px ; /*顺时针,上右下左,缺少一个即 上 左右 下*/ font-size: 0; color: #a2a2a2; text-decoration: none; } .zfbui-tabbar__item > span { display: inline-block; position: relative; /*方便badge进行绝对定位*/ } .zfbui-tabbar__icon { display: inline-block; /*行内元素是不能设置宽高 设置为inline-block以便设置宽高*/ width: 22px; height: 22px; fill: currentColor; overflow: hidden; margin-bottom: 3.5px; } .zfbui-badge { position: absolute; top: -2px; right: -13px; min-width: 8px; display: inline-block; padding: .15em .4em; /* 上下.15 左右.4*/ font-size: 12px; line-height: 12px; background-color: #F43539; border-radius: 18px; /*盒子圆角,超出盒子长宽的的话,就会变成圆形*/ color: white; } .zfbui-tabbar__label { font-size: 10px; text-align: center; line-height: 10px; } 复制代码
- 最后结果:
补充:上面的图标来自阿里图标库: www.iconfont.cn/
方式为 symbol引用:
是更值得推荐的用法,支持多色图标,不再受单色限制。
通过一些技巧,支持像字体那样,通过font-size,color来调整样式。
以上所述就是小编给大家介绍的《从支付宝tabbar看BEM》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- IJPay 0.5 让支付触手可及,已完成微信支付,支付宝支付
- 支付宝支付参数获取
- PHP 支付类库 PaySDK v1.0.9 新增支付宝 APP 支付
- ThinkPHP之银联支付(网页支付)
- YunGouOS 个人支付接口 2.0.5 版本发布,个人支付宝 H5、APP 支付上线
- ThinkPHP之微信支付(扫码支付)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据分析技术白皮书
伍海凤、刘鹏、杨佳静、马师慧Sara、李博、Shirley Song、Zinc、李晓艳 / 2016-8-11 / 0
关于数据分析技术白皮书(Analytics Book 中文版),主要内容围绕: 1. 分析(Analytics):网站分析 & APP分析 2. 谷歌分析工具的原理、部署与使用 3. 开源网站分析工具的原理、部署与使用 4. Log日志分析原理 5. 网站分析的维度与指标定义 6. 如何炼成为一个互联网数据分析师 请访问书的数据分析技术白皮书官网“免费”阅......一起来看看 《数据分析技术白皮书》 这本书的介绍吧!