روشی برای نام گذاری کلاس ها در css
خب این بار میخام راجع به مفهومی به اسم BEM حرف بزنم.
تعریف BEM:
مخفف Block, Element, Modifier . ی روشه که به ما یاد میده چطوری کلاس بندی کنیم و چه اسمی روی کلاس هامون بزاریم. فایده اش اینه که خیلی راحتتر میتونیم UI (رابط کاربری) رو به قسمت های مستقل از هم تقسیم کنیم اینجوری دولوپ کردن رابط کاربری بزرگ و پیچیده هم آسونتر میشه، استانداردتر کد نوشتیم و همچنین کد شما خوانا تر و قابل فهم تر برای دولوپرهای دیگه هست.
حالا این Block, Element, Modifier اجزای تشکیل دهنده اسم کلاسمونه.
<div class="block-name__element-name--modifier-name"></div>
الان ی مثال میزنم و کدشو به کمک این روش مینویسیم.
<div class="block-name"></div>
اینجا ۳ تا بلاک داریم(البته که میشه کلش رو ی بلاک در نظر گرفت ولی فعلن بیخیال میشم).
<div class="time"></div> <div class="place"></div> <div class="btn"></div>
<div class="block-name__element-name"></div>
<div class="time"> <div class="time__date">20</div> <div class="time__day-time"> <div class="time__day-time">Mon</div> <div class="time__day-time">Nov</div> </div> </div>
<div class="block-name__element-name--modifier-name"></div>
<div class="time"> <div class="time__date time__date--big">20</div> <div class="time__day-time"> <div class="time__day-time--small time__day-time--grey">Mon</div> <div class="time__day-time--small">Nov</div> </div> </div>
شاید اولش براتون سخت باشه و بگید این که کد ما رو طولانی تر کرد! اما کم کم متوجه موهبت های زیادی که بهتون میده میشید :) خلاصه چیز خوبیه که این همه دارن میگن :D
اینم از کد کامل شدس:
<div class="row"> <div class="col-2"> <div class="time"> <div class="time__date time__date--big">20</div> <div class="time__day-time"> <div class="time__day-time--small time__day-time--grey">Mon</div> <div class="time__day-time--small">Nov</div> </div> </div> </div> <div class="col-6"> <div class="place"> <h4>Mi Pan Zoo Zoo zoo Mi Pan Yum yum /</h4> <span class="place--thin-text">Kerman</span> </div> </div> <div class="col-2"> <button class="btn btn--big btn--red">Book</button> </div> <div class="col-2"> <button class="btn btn--big btn--white">Register</button> </div> </div> //Styles .time { display: flex; &__date { font-size: 3rem; } &__day-time { padding: 0.7rem; &--grey { color: $color-grey-dark-2; } } } .place { padding-top: 1rem; & h4 { display: inline; } } .btn { &--big { padding: 1rem 3rem; border-radius: 8px; } &--red { background-color: #c84869; border: 1px solid $color-grey-dark-2; float: right; color: $color-white; } &--white { border: 1px solid #c84869; color: #c84869; } }