命名空间
import BEM, { component } from '@zhengxs/bem' // 默认以 c 开头 component('button') // c-button // 修改默认配置 BEM.namespace.component = 'md' // 只有在修改配置后面的才生效 component('button') // md-button // 不会影响自定义的命名空间 component('button', 'ux') // ux-button
修饰符
import BEM, { element } from '@zhengxs/bem' element('button', 'icon') // button__icon // 修改全局命名空间 BEM.separator.element = '-' // 读取全局配置 element('button', 'icon') // button-icon
import BEM, { modifier } from '@zhengxs/bem' modifier('button', 'large') // button--large // 修改全局命名空间 BEM.separator.modifier = '-' // 读取全局配置 modifier('button', 'large') // button-large
import BEM, { state, is, has } from '@zhengxs/bem' state('is', 'loading') // is-loading // 修改全局命名空间 BEM.separator.state = '--' state('is', 'loading') // is--loading is('loading') // is--loading has('error') // has--error
组件
component('button') // -> "c-button" component('button', 'md') // -> "md-button"
名称
前缀
CSS类名
创建命名空间
const bem = createBEM() const button = bem('button') console.log(button.component()) // -> 'c-button' console.log(button.element('icon')) // -> 'c-button__icon' console.log(button.elem('icon')) // alias for element // -> 'c-button__icon' console.log(button.modifier('default')) // -> 'c-button--default' console.log(button.mod('default')) // alias for modifier // -> 'c-button--default' console.log(button.state('is', 'default')) // -> 'is-default' console.log(button.is('loading')) // -> 'is-loading' console.log(button.has('error')) // -> 'has-error' // 不管调用几次,拿到的都是同一个对象 console.log(button === bem('icon')) // -> true // 不同名称拿到的是不同的对象 console.log(button === bem('icon')) // -> false // 不同的 create,即使是相同的名称拿到的也不一样的 console.log(button === createBEM()('button')) // -> false
const options = { namespace: { component: 'ux' } } const bem = createBEM(options) const button = bem('button') console.log(button.component()) //-> 'ux-button' console.log(button.element('icon')) //-> 'ux-button__icon' console.log(button.modifier('default')) //-> 'ux-button--default' // 修改命名空间 options['namespace']['component'] = 'md' console.log(button.component()) //-> 'md-button' console.log(button.element('icon')) //-> 'md-button__icon' console.log(button.modifier('default')) //-> 'md-button--default' // 再次修改命名空间 options['namespace']['component'] = 'c' console.log(button.component()) //-> 'c-button' console.log(button.element('icon')) //-> 'c-button__icon' console.log(button.modifier('default')) //-> 'c-button--default' // 直接重置对象 options['namespace'] = { 'component': 'ux' } console.log(button.component()) //-> 'ux-button' console.log(button.element('icon')) //-> 'ux-button__icon' console.log(button.modifier('default')) //-> 'ux-button--default'
const options = { separator: { element: '-', modifier: '-', state: '#', } } console.log(button.element('icon')) //-> 'c-button-icon' console.log(button.modifier('default')) //-> 'c-button-default' console.log(button.state('is', 'default')) //-> 'is#default' console.log(button.is('loading')) //-> 'is#loading' console.log(button.has('error')) //-> 'has#error' // 修改单个修饰符 options['separator']['element'] = '__' console.log(button.element('icon')) //-> 'c-button__icon' // 重置配置 options['separator'] = { element: '__', modifier: '--', state: '-', } console.log(button.element('icon')) //-> 'c-button__icon' console.log(button.modifier('default')) //-> 'c-button--default' console.log(button.state('is', 'loading')) //-> 'is-loading' console.log(button.is('loading')) //-> 'is-loading' console.log(button.has('error')) //-> 'has-error'
可选配置
节点
element('button', 'icon') // -> "button__icon" element('button', ['icon', 'text']) // -> ["button__icon", "button__text"] element('button',{ icon: true, text: false }) // -> ["button__icon"]
element('button', { icon: true, text: false }, 'demo', [['doc']], null, undefined, false) // -> ["button__icon", "button__demo", "button__doc"]
CSS类名列表
状态别名
has('success') // -> "has-success" has(['success', 'error']) // -> ["has-success", "has-error"] has({ success: true, error: false }) // -> ["has-success"]
has({ success: true, error: false }, 'demo', [['doc']], null, undefined, false) // -> ["has-success", "has-demo", "has-doc"]
is('loading') // -> "is-loading" is(['loading', 'disabled']) // -> ["is-loading", "is-disabled"] is({ loading: true, disabled: false }) // -> ["is-loading"]
is({ loading: true, disabled: false }, 'demo', [['doc']], null, undefined, false) // -> ["is-loading", "is-demo", "is-doc"]
modifier('button', 'default') // -> "button--default" modifier('button', ['default', 'primary']) // -> ["button--default", "button--primary"] modifier('button',{ default: true, primary: false }) // -> ["button--default"]
modifier('button', { default: true, primary: false }, 'demo', [['doc']], null, undefined, false) // -> ["button--default", "button--demo", "button--doc"]
状态
state('is', 'loading') // -> "is-loading" state('is', ['loading', 'disabled']) // -> ["is-loading", "is-disabled"] state('is', { loading: true, disabled: false }) // -> ["is-loading"]
state('is', { loading: true, disabled: false }, 'demo', [['doc']], null, undefined, false) // -> ["is-loading", "is-demo", "is-doc"]
Generated using TypeDoc
命名空间