#네이밍 케이스
1.케밥-케이스
kebab-case, spinal-case, Train-Case, Lisp-case
-하이픈으로 단어를 연결하는 표기법
-HTML 태그의 id, class 속성으로 흔히 사용됨.
2.파스칼 표기법
PascalCase, BackgroundColor, TypeName, PowerPoint
-첫 단어를 대문자로 시작하는 표기법
3.스네이크 케이스(뱀 표기법)
snake_case, background_color, type_name
-단어를 밑줄 문자로 구분하는 표기법
-perl, php, python, ruby, rust....
4.헝가리언 표기법
strName, bBusy, szName
-접두어를 사용하는 표기법
-str -> string, b -> boolean, sz -> null로 끝나는 문자열(string+zero)
# css 방법론
1.BEM
-개발, 디버깅, 유지보수를 위하여 가능한 한 명확하게 네이밍하는 것이 목표
-소문자, 숫자만을 조합
-조합은 하이픈(-)으로 연결하여 작명
-모든것이 클래스이고 중첩된 것은 없다.
블록(block)
-형태(red,big)가 아닌 목적(menu, button)에맞게 결정해야 한다. (header,menu,search-form...)
-환경에 영향을 받지 않아야한다.(여백, 위치 설정x)
-태그, id선택자로 사용하면 안된다.
요소(Element)
-블록안에서 특정 기능을 담당하는 부분
-block__element 형태로 사용(더블 언더바)
-형태(red,big)가 아닌 목적(item, text, title, list)에맞게 결정해야 한다.
-블록에 종속되어 있어 블록의 부분으롬나 사용할 수 있고 다른 요소의 부분으로 사용할 수 없다.
-선택적으로 사용가능해야 한다.(요소가 없을 수도 있다)
수식어(Modifier)
-블록이나 요소의 모양(color,size), 상태(disabled, checked..)를 정의한다.
-block__elemt--modifier, block--modifier(더블 하이픈)로 사용한다.
-블리언 타입, 키-벨류 타입이 있다.
불리언: 수식어가 있으면 값이 true라고 가정(form__button--disabled)
키-벨류:하이픈으로 연결하여 표시한다.(block__element--modifier)
혼합사용(Mix)
-block1,block2__element 형태로 사용가능
(?)-block2__element에 여백이나 위치를 지정하고 block1은 독립적으로 유지할 수 있다.
결론
-블록,요소,수식어의 목적에 적응되면 네이빙이 수월해짐
-용도와 형태 위치를 알수 있다보니 유지 보수 용이
-네이밍이 길어지니 sass, less에 적합
틀린 예시
-중첩이 있으면 안됨.
2.OOCSS(Object Oriented CSS) 객체지향 css
-구조와 모양으로 분리
-반복적인 것은 별도로 분리
-콘테이너와 콘텐츠의 분리(의존적인 스타일 사용x)
.title -> h2, h2.title
네이밍
-가능한 짧고 간결하게 작성
-동작과 형태가 예상 가능하도록 명확히 작성
-형태보다는 목적의 의미를 작성
-구체적이지 않고 일반적으로 사용가능하도록 작성
기존 방식
<a class="facebook_btn">Facebook</a>
<a class="twitter_btn">Twitter</a>
OOCSS 적용
<a class="btn facebook">Facebook</a>
<a class="btn twitter">Twitter</a>
.btn { 공통 버튼 스타일 정의 }
장점
-코드의 재사용성이 높아 코드의 길이가 줄어든다. (css 파일크기가 줄어드므로 속도 향상)
-새로운 요소를 추가할 때 기존 모듈을 통해서 재사용이 가능하고 쉽게 확장가능하다.(유지보수)
단점(비판의 시선)
-복잡해지는 HTML에서는 오히려 유지보수가 힘들다
-가독성이 떨어진다.
-미디어 객체와 함께 적용하기는 좋으나 프로젝트 전반적으로 적용하기에는 어렵다.
따라서 OOCSS, BEM 혼용으로 사용하는 곳들도 있다.
-재사용 가능한 객체들을 OOCSS, 그 이외에는 이름 규칙을 BEM으로 변형
-NHN, AirBnB등 많은 곳에서 혼용으로 사용함.
'~2022 > FE-HTML, CSS, ...etc' 카테고리의 다른 글
input 타입 range 스타일 수정하기_커스텀 스타일 (3) | 2019.08.01 |
---|---|
메타태그로 브라우저 사용자 페이지 우회시키기(리다이렉션 시키기) (0) | 2019.07.29 |
유튜브 비디오 태그(iframe) css만으로 반응형 비디오 만들기 (0) | 2019.06.26 |
css 선택자 비교 (0) | 2019.06.25 |
사파리 브라우저에서 border-radius에 overflow:hidden 적용 안되는 이슈, 버그(?) (0) | 2019.06.15 |
아이프레임(iframe)이란? (0) | 2019.06.05 |
조건부 주석(Conditional comments) (0) | 2019.06.05 |
CSS3 란 (Cascading Style Sheets) (0) | 2019.06.05 |