Generated by GPT-5-mini| BEM (methodology) | |
|---|---|
| Name | BEM |
| Full name | Block Element Modifier |
| Developer | Yandex |
| Introduced | 2007 |
| Genre | CSS methodology |
| License | Proprietary-origin |
BEM (methodology) BEM is a front-end Yandex-originated CSS naming methodology that structures user interface code for maintainability and reuse; it emphasizes predictable class naming, componentization, and separation of concerns across projects such as Yahoo!, GitHub, Twitter, Facebook, and Google influenced tooling and practices. It emerged in the late 2000s alongside initiatives at Yandex, Mozilla, Opera Software, W3C, and Microsoft to tame growing CSS complexity in applications like Gmail, YouTube, VK, and Dropbox. BEM is often taught in curricula from institutions like Harvard University, MIT, Stanford University, and employed by companies including Spotify, Airbnb, Uber, and LinkedIn.
BEM organizes interface code into independent reusable components—called blocks—mirroring approaches seen in Model–View–Controller, React, AngularJS, Vue.js, and Web Components workflows; this modularity supports teams at Amazon, Alibaba Group, eBay, IBM, and Oracle. Originated at Yandex, BEM influences patterns used in Bootstrap, Foundation (front-end framework), Semantic UI, Material Design, and Ant Design implementations for projects such as WordPress, Drupal, Joomla!, Magento, and Shopify. The methodology is applicable across content platforms like BBC, CNN, The New York Times, The Guardian (daily newspaper), and The Washington Post web presences.
BEM prescribes three primary concepts—block, element, modifier—similar in intent to conventions promoted by Douglas Crockford, Steve Jobs, Brendan Eich, Tim Berners-Lee, and Linus Torvalds in software engineering culture. Naming uses predictable separators (commonly double underscores and double hyphens) paralleling conventions in projects at GitLab, Bitbucket, Atlassian, Red Hat, and Canonical Ltd. to avoid selector specificity issues found in large codebases like Adobe Systems, Autodesk, Siemens, and GE. Teams at SAP SE, Siemens AG, Bosch, Volkswagen, and Toyota favor BEM-like naming to ensure scalability in multinational product suites.
A block represents an autonomous component (examples: header, menu, button) used across applications such as Facebook Messenger, WhatsApp, Signal, Telegram, and WeChat; elements are dependent parts (icon, label, control) akin to subcomponents in Reactand Angular libraries used by Netflix, Hulu, Disney+, and HBO Max. Modifiers encode variations (size, theme, state) comparable to style variants in Material-UI and Chakra UI adopted by teams at Pinterest, Tinder, Grubhub, and DoorDash. The syntactic pattern—block__element--modifier—parallels component naming in toolchains from Babel, Webpack, Parcel, Rollup, and Vite for bundling and transformation.
Advocates at Yandex, Google Developers, Mozilla Developer Network, A List Apart, and Smashing Magazine cite predictable scopes, reduced CSS specificity conflicts, and easier refactoring for products like Gmail, Google Drive, Docs (Google), Sheets (Google), and Slides (Google). Critics appearing in discussions hosted by Stack Overflow, Hacker News, Reddit, Medium (website), and Dev.to argue verbosity, cognitive overhead, and verbosity in HTML class attributes affect readability in projects like LibreOffice, OpenOffice, Notepad++, Visual Studio Code, and Sublime Text. Performance debates reference rendering costs in browsers from Google Chrome, Mozilla Firefox, Apple Safari, Microsoft Edge, and Brave and contrast BEM with alternatives used by Adobe XD, Figma, Sketch (software), InVision, and Framer.
Tooling ecosystems integrate BEM with preprocessors and build tools maintained by organizations like Sass (stylesheet language), Less (stylesheet language), PostCSS, Autoprefixer, Babel, and ESLint; large companies such as Netflix, Spotify, Microsoft, Amazon Web Services, and Google Cloud Platform provide CI/CD examples demonstrating linters, styleguides, and automated class generation. Component libraries for React, Vue.js, Angular, Stencil (web component compiler), and LitElement often include BEM-friendly conventions used at Salesforce, Zendesk, Shopify, Squarespace, and Etsy to facilitate design-system integration. IDE plugins and extensions from JetBrains, Microsoft, Eclipse Foundation, NetBeans, and Sublime HQ can enforce naming rules and offer autocompletion.
Related methodologies and patterns include Atomic Design, OOCSS, SMACSS, ITCSS, SUIT CSS and are referenced in work by Brad Frost, Nicole Sullivan, Harry Roberts, Nicholas Gallagher, and Jonathan Snook; variations adapt separators, scoping, and nesting rules for ecosystems used by Gatsby (web framework), Next.js, Nuxt.js, Sapper, and Eleventy. Teams at Zalando, Booking.com, Expedia Group, Tripadvisor, and Airbnb combine BEM-like systems with component-driven development from Storybook, Bit (bit.dev), Fractal, Pattern Lab, and Zeroheight to maintain cohesive design systems across distributed organizations.
Category:Web development