suchen
HeimWeb-FrontendCSS-TutorialBeherrschen der CSS-BEM-Benennung mit praktischen Beispielen: Pure HTML, Angular und Next.js

Im vorherigen Artikel haben wir die Grundlagen der BEM-Namenskonvention in CSS untersucht und warum sie für die Aufrechterhaltung sauberen und skalierbaren Codes von entscheidender Bedeutung ist.

Dieses Mal werden wir anhand praktischer Beispiele tiefer eintauchen, um zu sehen, wie BEM in verschiedenen Umgebungen funktioniert: Pure HTML, Angular und Next.js.

BEM ist nicht auf grundlegende HTML-Strukturen beschränkt; Es kann effektiv in jedem modernen Frontend-Framework angewendet werden. Am Ende dieses Artikels werden Sie ein klareres Verständnis dafür haben, wie Sie BEM in verschiedenen Entwicklungsumgebungen implementieren.

Beispiel 1: Verwendung von BEM in reinem HTML

In diesem Beispiel erstellen wir eine Benutzerprofilkarte, deren Stil sich je nach Online- oder Offline-Status des Benutzers dynamisch ändert. Dies ist ein häufiger Anwendungsfall in realen Anwendungen, bei denen sich Elemente je nach Zustand oder Zustand ändern müssen.

HTML:

<div class="user-card user-card--offline">
  <img class="user-card__avatar lazy" src="/static/imghwm/default1.png" data-src="profile.jpg" alt="User Avatar">
  <div class="user-card__info">
    <h2 id="John-Doe">John Doe</h2>
    <p class="user-card__status">Offline</p>
  </div>
</div>

CSS:

.user-card {
  display: flex;
  align-items: center;
  padding: 15px;
  border: 1px solid #ddd;
  border-radius: 10px;
  background-color: #f5f5f5;
  max-width: 300px;
}

.user-card__avatar {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  margin-right: 15px;
}

.user-card__info {
  display: flex;
  flex-direction: column;
}

.user-card__name {
  font-size: 18px;
  font-weight: bold;
  margin-bottom: 5px;
}

.user-card__status {
  font-size: 14px;
  color: #888;
}

.user-card--online {
  border-color: #4caf50;
  background-color: #e8f5e9;
}

.user-card--online .user-card__status {
  color: #4caf50;
}

.user-card--offline {
  border-color: #f44336;
  background-color: #ffebee;
}

.user-card--offline .user-card__status {
  color: #f44336;
}

Erklärung:

  • Die Benutzerkarte ist der Block, der die Benutzerprofilkarte darstellt.
  • Modifikatoren wie „Benutzerkarte – online“ und „Benutzerkarte – offline“ ändern das Erscheinungsbild der Karte basierend auf dem Status des Benutzers.
  • user-card__avatar, user-card__name und user-card__status sind Elemente des user-card-Blocks, der jeweils den Avatar, den Namen und den Status darstellt.
  • Durch die Verwendung von BEM wird deutlich, welche Stile für den Block gelten und welche Stile sich je nach Status des Benutzers ändern.

Beispiel 2: Anwenden von BEM in Angular

In diesem Angular-Beispiel erstellen wir eine interaktive Schaltfläche, die beim Klicken einen Ladestatus anzeigt. Dies ist ein häufiger Anwendungsfall in Formularen oder interaktiven Elementen, bei denen sich der Status der Schaltfläche aufgrund von Benutzerinteraktionen oder API-Aufrufen ändert.

Winkelkomponente (button.component.html):

<button class="button" isloading>
  <span>{{ buttonText }}</span>
  <span>Loading...</span>
</button>

Komponentenstile (button.component.css):

.button {
  padding: 12px 24px;
  background-color: #333;
  color: #fff;
  border-radius: 4px;
  border: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.button--primary {
  background-color: #007BFF;
}

.button--loading {
  background-color: #666;
  cursor: not-allowed;
}

.button--loading span {
  font-size: 14px;
}

Komponentenlogik (button.component.ts):

import { Component, Input } from '@angular/core';

@Component({
  selector: 'app-button',
  templateUrl: './button.component.html',
  styleUrls: ['./button.component.css']
})
export class ButtonComponent {
  @Input() buttonText: string = 'Submit';
  isLoading: boolean = false;

  handleClick() {
    this.isLoading = true;

    setTimeout(() => {
      this.isLoading = false;
    }, 2000);
  }
}

Erklärung:

  • Der Tastenblock stellt die Basistaste dar.
  • Die [ngClass]-Direktive fügt dynamisch „button--loading“ hinzu, wenn sich die Schaltfläche in einem Ladezustand befindet, und „button--primary“, wenn sie sich im Standardzustand befindet.
  • Der Text der Schaltfläche ändert sich basierend auf dem isLoading-Status.
  • Die handleClick-Methode simuliert einen Ladezustand und setzt ihn nach 2 Sekunden zurück, was ein typisches API-Aufrufszenario darstellt.

Beispiel 3: Implementierung von BEM in Next.js

In diesem Next.js-Beispiel erstellen wir ein Navigationsmenü, das die aktive Seite dynamisch hervorhebt. Dies ist ein häufiges Szenario in Webanwendungen, bei denen die aktuelle Seite in der Navigation visuell angezeigt werden muss.

Next.js-Komponente (components/NavBar.js):

import { useRouter } from 'next/router';

export default function NavBar() {
  const router = useRouter();

  return (
    <nav classname="nav">
      <ul classname="nav__list">
        <li classname="{`nav__item" :>
          <a href="/" classname="nav__link">Home</a>
        </li>
        <li classname="{`nav__item" :>
          <a href="/about" classname="nav__link">About</a>
        </li>
        <li classname="{`nav__item" :>
          <a href="/contact" classname="nav__link">Contact</a>
        </li>
      </ul>
    </nav>
  );
}

Next.js-Stile (styles/NavBar.module.css):

.nav {
  background-color: #333;
  padding: 10px;
}

.nav__list {
  list-style: none;
  display: flex;
  gap: 20px;
}

.nav__item {
  margin: 0;
}

.nav__link {
  color: white;
  text-decoration: none;
}

.nav__item--active .nav__link {
  font-weight: bold;
  color: #007BFF;
}

Erklärung:

  • Der useRouter-Hook von Next.js wird verwendet, um die aktuelle Route (router.pathname) abzurufen.
  • Der Modifikator nav__item--active wird dynamisch angewendet, je nachdem, ob die aktuelle Seite mit dem Menüelement übereinstimmt.
  • Die aktive Seite wird hervorgehoben, indem die Textfarbe geändert und die Schriftart fett formatiert wird.
  • Der nav__link ist ein Element innerhalb des nav__item-Blocks.

Abschluss

Durch die Verwendung von BEM in Ihrem Projekt können Sie die Konsistenz und Skalierbarkeit Ihres CSS aufrechterhalten, selbst wenn Sie mit dynamischen Komponenten und sich ändernden Zuständen arbeiten. Durch die Nutzung von BEM für die Zustandsverwaltung, dynamische Klassenänderungen und bedingte Gestaltung können Sie Ihren Code strukturiert, modular und leicht zu warten halten.

Diese detaillierten Beispiele verdeutlichen, wie BEM in realen Anwendungen angewendet werden kann, wodurch die Verwaltung komplexer UI-Komponenten über verschiedene Frameworks hinweg vereinfacht wird.

Folgen Sie mir für weitere Updates!

Ich hoffe, dieser Artikel hat dazu beigetragen, Ihr Verständnis für die Verwendung von CSS BEM auf verschiedenen Plattformen zu vertiefen. Wenn Sie an weiteren Artikeln, praktischen Tipps und Einblicken in die Webentwicklung interessiert sind, folgen Sie mir für regelmäßige Updates. Zögern Sie nicht, mich zu kontaktieren, wenn Sie Fragen oder Feedback haben – ich würde mich gerne mit Ihnen in Verbindung setzen und von Ihnen hören!

Das obige ist der detaillierte Inhalt vonBeherrschen der CSS-BEM-Benennung mit praktischen Beispielen: Pure HTML, Angular und Next.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Entmystifizierende Bildschirmleser: Zugrunde Formen und Best PracticesEntmystifizierende Bildschirmleser: Zugrunde Formen und Best PracticesMar 08, 2025 am 09:45 AM

Dies ist der 3. Beitrag in einer kleinen Serie, die wir in Form von Barrierefreiheit gemacht haben. Wenn Sie den zweiten Beitrag verpasst haben, lesen Sie "Verwalten des Benutzerfokus mit: Fokus-Sichtbar". In

Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms FrameworkErstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms FrameworkMar 07, 2025 am 11:33 AM

Dieses Tutorial zeigt, dass professionelle JavaScript-Formulare mithilfe des Frameworks Smart Forms erstellt werden (Hinweis: Nicht mehr verfügbar). Während der Rahmen selbst nicht verfügbar ist, bleiben die Prinzipien und Techniken für andere Formbauer relevant.

Hinzufügen von Kastenschatten zu WordPress -Blöcken und -ElementenHinzufügen von Kastenschatten zu WordPress -Blöcken und -ElementenMar 09, 2025 pm 12:53 PM

Die CSS-Box-Shadow- und Umrisseigenschaften haben Thema gewonnen. JSON-Unterstützung in WordPress 6.1. Sei ein paar Beispiele für die Funktionsweise in realen Themen und welche Optionen wir diese Stile auf WordPress -Blöcke und Elemente anwenden müssen.

Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte)Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte)Mar 04, 2025 am 10:22 AM

In diesem Artikel werden die auf dem Envato -Markt verfügbaren Top -Skripte für PHP -Formulierungen untersucht und deren Funktionen, Flexibilität und Design verglichen. Lassen Sie uns vor dem Tauchen in bestimmte Optionen verstehen, was ein PHP -Formular Builder ist und warum Sie einen verwenden würden. Eine PHP -Form

Arbeiten mit GraphQL CachingArbeiten mit GraphQL CachingMar 19, 2025 am 09:36 AM

Wenn Sie kürzlich mit GraphQL gearbeitet oder seine Vor- und Nachteile überprüft haben, haben Sie zweifellos Dinge wie "GraphQL nicht unterstützen Caching" oder gehört

Machen Sie Ihren ersten Seltsamen -Sufle -ÜbergangMachen Sie Ihren ersten Seltsamen -Sufle -ÜbergangMar 15, 2025 am 11:08 AM

Die Sufelte Transition -API bietet eine Möglichkeit, Komponenten zu beleben, wenn sie das Dokument eingeben oder verlassen, einschließlich benutzerdefinierter Svelte -Übergänge.

Show, Don ' TellShow, Don ' TellMar 16, 2025 am 11:49 AM

Wie viel Zeit damit, die Inhaltspräsentation für Ihre Websites zu entwerfen? Wenn Sie einen neuen Blog -Beitrag schreiben oder eine neue Seite erstellen, denken Sie darüber nach

Edle und coole CSS -Scrollbars: Ein SchaufensterEdle und coole CSS -Scrollbars: Ein SchaufensterMar 10, 2025 am 11:37 AM

In diesem Artikel werden wir in die Welt der Scrollbars eintauchen. Ich weiß, es klingt nicht zu glamourös, aber vertrau mir, eine gut gestaltete Seite geht Hand in Hand

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung