본문 바로가기
CSS

잘 알려지지 않은 CSS 팁

by F.E.D 2019. 1. 1.

잘 알려지지 않은 CSS 팁

아래에는 고급 CSS 사용자를위한 팁과 트릭과 함께 가장 이상한 CSS 기능이 있습니다.
모든 내용을 출처에서 발췌하지 않고 부분적으로만 담았습니다.

1. 수직 padding은 height 속성이 아닌 요소의 width 속성과 관련이 있습니다.

See the Pen Vertical padding by Peedu Tuisk (@matude) on CodePen.


이것을 알면 높이 / 너비 비율을 유지하는 반응형 요소를 쉽게 만들 수 있습니다.

2. 마진 병합

See the Pen Margins overlap by Peedu Tuisk (@matude) on CodePen.


위의 경우 마진이 40px이 아닌 20px로 축소됩니다.

그러나 예외가 있습니다! 마진은 다음과 같은 경우 축소되지 않습니다.


* float 요소

* absolute 된 요소

* inline-block 요소

* overflow가 있는 요소

* 삭제된 요소

* 루트 요소


3. opacity 속성으로 z-index 스택 순서를 변경할 수 있습니다.


See the Pen Z-index order and opacity by Peedu Tuisk (@matude) on CodePen.


4. css 커스텀 속성과 변수


SASS 또는 LESS를 사용하면 CSS 사용자 지정 속성과 변수가 해당 전처리기에서 사용할 수있는 기능과 동일하다는 것을 알 수 있지만 살펴볼 가치가있는 주요 차이점이 있습니다.


1
2
3
4
5
6
7
// you can set and use custom properties like such:
:root {
 --foo: #000;
}
button {
  background-color: var(--foo); //background is black
}
cs


또한 상속받을 수 있기 때문에 로컬 변수를 재 할당하면 모든 자식 요소에 영향을 미치며 전처리기와 달리 브라우저는 실제로 해당되는 경우 모든 변수와 표현식을 다시 계산합니다.


폴백은 쉼표로 사용할 수 있습니다. 쉼표 뒤에 여러 개의 폴백을 쌓거나 다른 변수를 쌓을 수도 있습니다.


1
2
3
.foo {
  color: var(—-my-var, 'blue');
}
cs

이로 인해 전처리기와 다른 점이 있습니다. CSS 변수는 DOM의 구조를 인식하고 동적입니다.

1
2
3
4
5
6
7
8
9
::root {
  --default-color: #000000;
}
header {
 --primary-color: #ff0000;
}
{
 color: var(--primary-color, --default-color);
}
cs




상속 가능성의 첫 번째 예와는 달리이 예는 사용자 지정 속성이 부모 DOM 요소에 설정되었는지 여부를 인식하는 대체 방식에 의존합니다.

또한 javascript를 사용하여 쉽게 변경할 수 있습니다.

1
2
3
4
// get variable from inline style
element.style.getPropertyValue("—-my-var");
// set variable on inline style
element.style.setProperty("--my-var", jsVar + 4);
cs


5. Height: 100% 는 당신이 원하는대로 작동하지 않습니다.

1
2
3
4
5
<html>
<body>
  <div style=”height:100%;background:red;”></div>
</body>
</html>
cs

이것은 전체 페이지를 빨간색으로 채우지 않습니다. 이를 위해서는 body와 html의 높이를 모두 100 %로 설정해야합니다.

6. 속성 타겟팅

특정 속성 및 해당 내용 (예 : src 또는 href 속성 내용)을 대상으로 지정할 수 있습니다.

1
2
3
4
// target all zip files, case insensitive
a[href$=".zip" i] { }
// make google.com links red
[href*="google.com"] { color: red; }
cs

디버깅 할 때 이미지 요소를 표시하지 않거나 빈 "alt"속성을 표시하는 등 도움이됩니다.

1
2
3
4
5
6
img:not([alt]) {
 border: 2px dashed red;
}
img[alt=""] {
 border: 2px dashed red;
}
cs

Angular를 사용하는 경우이 기술은 [ng-click]이 포함 된 일부 요소를 타겟팅하는 데 유용 할 수 있습니다. 또는 원하는 경우 'http'또는 'https'로 시작하는 모든 링크를 지역 정보 대신 타겟팅 할 수 있습니다.

See the Pen jZXXjZ by Peedu Tuisk (@matude) on CodePen.



7. 애니메이션 스태킹

배경과 마찬가지로 애니메이션도 스태킹 할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
@keyframes foo { 
 0% { opacity: 0; } 
 100% { opacity: 1; } 
}
@keyframes bar { 
 0% { transform: translateX(-100px); } 
 100% { transform: translateX(0px); } 
}
.element {
 animation: foo 2s 0s, bar 1s 0s;
}
cs


8. URL 해시 스타일 지정 (/ # foo) 대상 요소

페이지에 도착한 사용자에게 타겟팅 된 요소를 강조 표시하려는 경우 유용 할 수 있습니다. 
브라우저가 올바른 요소로 스크롤 할뿐만 아니라 CSS를 사용하여이 대상 섹션을 시각적으로 더 뚜렷하게 만들 수 있습니다. 
요즘 거의 사용되지 않지만 사용자 환경을 개선하는 데 매우 유용한 기술입니다.

See the Pen Hash target pseudo-class highlighting in CSS by Peedu Tuisk (@matude) on CodePen.



9. 동적 콘텐트에 data-text 속성 사용하기

동적 CSS 컨텐츠에 데이터 속성을 사용할 수 있습니다.

See the Pen LQMMGX by Peedu Tuisk (@matude) on CodePen.


그러나 DOM에서 CSS로 콘텐츠를 전달하는 데 사용할 수있는 것은 앞서 언급 한 사용자 정의 속성입니다.

1
2
3
4
5
6
<div style="--background-image: url('http://via.placeholder.com/150x150');"></div>
 
div:after {
 content: '';
 background-image: var(--background-image);
}
cs


또한 당신은 content : counter () 기능을 사용하여 의사 요소에 점진적으로 번호를 지정할 수 있습니다.

See the Pen CSS counter-increment property by Peedu Tuisk (@matude) on CodePen.



10. 폰트 속성을 하나로 결합해서 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
h1 {
 font-weight: bold;
 font-style: italic;
 font-size: 1rem;
 //etc…
}
// vs
h1 {
 font: italic lighter 1rem/150% Verdana, Helvetica, sans-serif;
}
 
// syntax
// font: font-style font-variant font-weight font-size/line-height font-family;
cs

11. @supports 기능 쿼리를 사용하여 브라우저 지원을 확인할 수 있습니다. 

예를 들면 : 실제로 display : flex를 사용하고자 할 때만 지원한다면 다음과 같이 설정할 수 있습니다 :

1
2
3
4
5
@supports (display: flex) {
 div {
   display: flex;
 }
}
cs


12. 클래스 이름의 콜론

클래스 이름에 콜론을 사용하면 차별화 목적으로 유용 할 수 있습니다. 

1
2
<div class="justify-start sm:justify-center md:justify-end lg:justify-between xl:justify-around">
<button class=”bg-blue hover:bg-blue-dark text-white hover:text-blue-light”>Button</button>
cs

CSS에서는 다음과 같이 콜론을 이스케이프 처리하면됩니다.

1
.sm\:justify-center { }
cs


13. wbr element

CSS는 아니지만 재미있는 덜 알려진 HTML 요소입니다. 단어가 깨지는 지점을 표시 할 수 있습니다.

1
2
3
4
5
6
<div id="example-paragraphs">
    <p>Fernstraßenbauprivatfinanzierungsgesetz</p>
    <p>Fernstraßen<wbr>bau<wbr>privat<wbr>finanzierungs<wbr>gesetz</p>
    <p>Fernstraßen&shy;bau&shy;privat&shy;finanzierungs&shy;gesetz</p>
</div>
 
cs

이외에도 다양한 기능들이 있지만 오늘은 여기까지~! : ) 
봐주셔서 감사합니다~ 

출처 : https://medium.com/@peedutuisk/lesser-known-css-quirks-oddities-and-advanced-tips-css-is-awesome-8ee3d16295bb


'CSS' 카테고리의 다른 글

[Reflow] Reflow 최소화  (0) 2019.01.29
Will-Change  (0) 2019.01.22
[GRID] CSS Grid의 인터넷 익스플로러(IE) 지원  (0) 2018.09.18
[ Animation ] CSS Animation vs Javascript Animation  (0) 2018.07.24
CSSOM + 렌더링  (0) 2018.04.16

댓글