Rumah >hujung hadapan web >tutorial css >Bem dan smacss: nasihat dari pemaju yang ' telah berada di sana

Bem dan smacss: nasihat dari pemaju yang ' telah berada di sana

Jennifer Aniston
Jennifer Anistonasal
2025-02-25 19:32:10534semak imbas

Bem dan smacss: nasihat dari pemaju yang ' telah berada di sana

Metodologi CSS boleh menjadi minda yang membingungkan dan sukar untuk diputuskan. Mari kita pertimbangkan dua pilihan yang paling terkenal: BEM dan SMACSS.

Sekiranya anda memilih salah satu daripada ini untuk projek anda yang seterusnya? Apa yang paling sesuai untuk mereka? Apa yang mungkin salah? Jika anda sudah bekerja dengan satu - adakah anda menggunakannya seperti yang dimaksudkan? Kepada potensi sepenuhnya? Bagaimana anda tahu jika anda melakukannya dengan betul? Saya fikir saya akan senang bertanya kepada orang yang sudah melalui soalan -soalan itu dalam projek mereka sendiri dan belajar dari pengalaman mereka.

Saya bertanya kepada pemaju yang telah bekerja dengan Bem dan/atau Smacss untuk kisah kejayaan mereka, cerita seram, nasihat, dan kata -kata berhati -hati. Saya memberi beberapa pemaju senarai keseluruhan soalan dan yang lain hanya membentuk pemikiran mereka kepada saya. Saya telah mengumpulkan hasilnya ke dalam apa yang saya harap akan bacaan berharga bagi mereka yang mempertimbangkan untuk mengoptimumkan CSS mereka.

Tonton Menjadi Wira CSS Pejabat Anda dengan Senibina CSS CSS berstruktur, diselenggarakan dan berskala

Tonton kursus ini Tonton kursus ini Bem dan smacss: nasihat dari pemaju yang ' telah berada di sana Bagi mereka yang baru kepada BEM dan SMACSS, saya akan mulakan dengan memberikan gambaran keseluruhan yang sangat tinggi tentang apa yang BEM dan SMACSS.

Kunci Takeaways

bem bermaksud

pengubah elemen blok

dan berasal dari Yandex. Ia menyediakan cara yang agak ketat untuk mengatur kelas CSS anda ke dalam modul bebas. Terdapat beberapa variasi idea tetapi yang paling biasa kelihatan seperti ini:

Blok mewakili objek di laman web anda. Contohnya:

  • seseorang
  • Borang log masuk
  • menu
  • Borang carian

elemen adalah komponen dalam blok yang melaksanakan fungsi tertentu. Ia hanya masuk akal dalam konteks bloknya. Contohnya:

    tangan
  • Butang masuk
  • item menu
  • medan input carian
Pengubahsuaian adalah bagaimana kita mewakili variasi blok. Contohnya:

    orang yang tinggi/pendek
  • Borang log masuk pekat (mis. Kami menyembunyikan label dalam satu versi)
  • menu diubahsuai untuk kelihatan berbeza untuk footer atau sitemap
  • medan input carian dengan gaya butang tertentu
Dalam contoh menu kami, nama kelas boleh kelihatan seperti ini:

<span><span>.block</span> {}
</span><span><span>.block__element</span> {}
</span><span><span>.block--modifier</span> {}
</span><span><span>.block__element--modifier</span> {}</span>
Terdapat prinsip -prinsip dan alat seni bina yang lain untuk BEM di laman web BEM.info, bagaimanapun, apabila pemaju membincangkan BEM, mereka sering memberi tumpuan terutamanya kepada konvensyen penamaan di atas dan itu benar mengenai majoriti perbincangan di bawah.

Apa itu smacss?

SMACSS adalah kerangka CSS oleh Jonathan Snook. Di laman web SMACSS, dia mengatakan ia lebih seperti "panduan gaya" daripada kerangka CSS yang tegar. Ia memberi tumpuan kepada lima kategori untuk peraturannya:

Pangkalan digunakan untuk lalai seperti HTML, Body, A, A: Hover. Ini termasuk reset CSS anda dan selalunya berada di fail CSS asasnya sendiri atau pada permulaan CSS utama anda.

Layout membahagikan halaman ke bahagian dengan unsur -unsur seperti header, footer, dan artikel. Selalunya pemaju menunjukkan elemen susun atur dengan mengutamakan kelas dengan l-.

Modul adalah elemen modular yang boleh diguna semula dalam reka bentuk. Dokumentasi SMACSS melihat modul sebagai majoriti elemen anda dan dengan itu tidak memerlukan anda awalan mereka tetapi anda boleh melakukannya jika anda memilih.

Negeri digunakan untuk variasi yang mungkin untuk setiap elemen (mis. Aktif, tidak aktif, berkembang, tersembunyi). Ini adalah awalan dengan-, mis. IS-Active, IS-Inactive, IS-Expanded, IS Handden atau melalui Pseudo-Classes seperti: Hover and: Focus atau Media Queries.

Tema adalah serupa dengan Negeri tetapi mentakrifkan bagaimana modul dan susun atur akan kelihatan. Ia lebih sesuai untuk laman web yang lebih besar dengan elemen bersama yang kelihatan berbeza di seluruh. Anda akan menambah variasi tema pada setiap halaman atau setiap bahagian.

Unsur -unsur kanak -kanak di SMACSS (seperti apa yang "elemen" adalah "blok" dalam bem) mempunyai item induk yang diawali dengan dash. mis. Menu dan menu-item.

SMACSS menyatakan bahawa semuanya terpulang kepada keutamaan pemaju dan tidak sebagai preskriptif seperti BEM. SMACSS hanya menyediakan garis panduan asas. Gunakan konvensyen penamaan anda sendiri untuk setiap kategori dan susunkannya dengan cara pilihan anda, selagi anda mendokumentasikan pendekatan anda supaya pemaju lain dapat mengikuti.

panduan daripada mereka yang telah menggunakan BEM

Ia boleh digunakan untuk semua projek, besar dan kecil

Hamish Taplin, pemaju depan dari Cardiff, UK, percaya BEM sesuai untuk projek-projek besar dan kecil dan ia menawarkan banyak kelebihan:

"Bem disebut -sebut sebagai projek besar tetapi saya tidak percaya sama sekali. Jika anda suka menulis kod yang bersih, boleh dikekalkan, dan tidak bertarung dengan masalah kekhususan maka BEM adalah untuk anda. Ada yang mengatakan bahawa HTML yang dihasilkannya hodoh atau berlebihan tetapi saya fikir ia cantik. Saya dapat membaca beberapa HTML dan melihat apa yang sedang berlaku dan bagaimana unsur -unsur berkaitan antara satu sama lain. Ia hebat. "

Ia mengelakkan bersarang

Alec Raeside, pemaju front-end dari Sydney, Australia telah menemui BEM untuk menjadi cara yang baik untuk mengelakkan terlalu banyak pemilih:

"Bem adalah cara yang baik untuk membina UI. Nama kelas deskriptif, kadang -kadang panjang, baik untuk memahami langsung di mana kelas/pemilih ini duduk dalam seni bina UI anda. Ia juga bermakna anda jarang perlu pemilih sarang, kejatuhan biasa dengan kod sass. Biasanya apabila saya bersarang dengan BEM adalah apabila saya ingin menargetkan elemen melalui nama tag HTML, atau untuk memenangi pertempuran spesifik apabila komponen gaya bertindih. "

ia membantu anda mencari semula kuasa kelas

Hamish Taplin menyanyikan pujian BEM dan prinsip berorientasikan objek. Dia menimbulkan pemikiran yang menarik mengenai konsep markup "semantik":

"Kelebihan BEM jelas dengan segera. Sebelum mengadopsi prinsip BEM dan OOCSS, saya telah menjadi peguam bela tentang apa yang (tidak betul) dikenali sebagai markup "semantik". Saya fikir banyak pemaju (saya termasuk) sebahagian besarnya salah faham apa sebenarnya maksudnya dan telah mengabaikan kuasa kelas di bawah nama mereka yang tidak cukup "semantik". Enjin carian dan pembaca skrin tidak peduli dengan kelas yang anda gunakan atau beberapa div tambahan yang digunakan untuk grid. Jurutera Twitter Nicholas Gallagher benar-benar memaku ini dengan catatan blognya "Mengenai Semantik HTML dan Senibina Front-End" ketika dia berkata: '... tidak semua semantik perlu diperolehi. Nama kelas tidak boleh "tidak bersemangat". Apa sahaja nama yang digunakan: mereka mempunyai makna, mereka mempunyai tujuan. Semantik nama kelas boleh berbeza dengan elemen HTML. '"

membuat kerja di tapak yang lebih besar lebih mudah

Satu kekuatan besar BEM yang banyak pemaju menyebutkan keupayaannya untuk mengendalikan membangun dan melaksanakan projek besar dan modular dengan cara yang lebih bersih. Walaupun BEM bukan sahaja untuk laman web besar, ia kelihatan mempunyai kelebihan yang besar di ruang ini. Hamish membincangkan pengalamannya dan juga mempunyai catatan blog keseluruhannya:

"Saya melancarkan beberapa projek kecil dan terpaksa mengatasinya - ia agak sukar pada mulanya kerana ia bertentangan dengan cara saya bekerja selama bertahun -tahun tetapi manfaatnya menjadi jelas. Kemudian, kami memulakan projek yang agak besar dan sangat modular - kemahiran kesihatan saya. Ini adalah projek Bluegg pertama yang saya telah bekerja di mana saya bekerja dengan pemaju lain (Paul Goodfield, yang juga menggunakan BEM)-saya melakukan front-end dan Paul backend. Faedahnya segera jelas, Paul dapat memahami dengan tepat apa yang saya lakukan dan menulis template Laravelnya di sekelilingnya. Sekiranya dia perlu mengisi beberapa jurang maka sifat BEM yang boleh diramal bermakna dia boleh menulis HTML seperti yang saya ada dan keseluruhan prosesnya dibuat lebih lancar. Saya menulis mengenai perkara ini dalam catatan blog "Membina Kemahiran Kesihatan Saya". "

Alec Raeside juga mendapat faedah kepada projek -projek besar melalui sifat modular penamaan BEM. Dia berkata:

"Bem sangat sesuai untuk projek besar. CSS adalah projek yang kompleks dan besar boleh jatuh di mana pemilih yang tidak spesifik boleh menyebabkan akibat yang tidak diingini di tempat lain. Sebagai contoh, mensasarkan semua

Atas ialah kandungan terperinci Bem dan smacss: nasihat dari pemaju yang ' telah berada di sana. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn