반응형

우리가 잘 알고 있는 CSS기술을 사용하는 것은 쉽고 간단하지만 새로운 문제에 맞닥드리면 해결하기 어려워집니다.

웹은 항상 성장하고 있고, 새로운 해결법 역시 계속 성장하고 있습니다. 그러므로, 웹 디자이너와 프론트 엔드 개발자로서 우리의 노하우를 활용할 수 밖에 없다는 것을 잘 알고 있습니다.

우리의 특별한 방법을 알면서, 단 한 번도 사용하지 않더라도 언젠가 필요한 때가 오면 정확한 방법을 실무에 적용할 수 있다는 뜻이기도 합니다.

오늘, 저는 이전엔 알지 못했던 몇 가지의 CSS 방법을 알려드리려고 합니다. 몇몇 수치 단위들은 픽셀이나 em과 비슷하지만 당신은 아마 단 한 번도 들어본 적 없을겁니다. 시작해볼까요.


rem

어쩌면 당신에게 조금 익숙할 수 있는 단위로 시작해보죠. em은 현재의 font-size를 정의합니다. 일례로, body 태그에 em값을 이용해 폰트 사이즈를 지정하면 모든 자식 요소들은 body의 폰트 사이즈에 영향을 받습니다.

1

2

3

<body>

<div class="test">Test</div>

</body>

1

2

3

4

5

6

body {

font-size: 14px;

}

div {

font-size: 1.2em; // calculated at 14px * 1.2, or 16.8px

}

여기, div에 font-size1.2em으로 지정했습니다. 이 예제에서는 14px을 기준으로 1.2배의 폰트 사이즈로 표현이 됩니다. 결과적으로 16.8px의 크기가 됩니다.

그런데 여기 em으로 정의한 폰트 사이즈를 각각의 자식에 선언하면 어떤 일이 생길까요? 같은 CSS를 적용한 동일한 코드를 추가해보았습니다. 각각의 div는 각 부모의 폰트 사이즈를 상속받아 점점 커지게 됩니다.

01

02

03

04

05

06

07

08

09

10

11

<body>

<div>

Test <!-- 14 * 1.2 = 16.8px -->

<div>

Test <!-- 16.8 * 1.2 = 20.16px -->

<div>

Test <!-- 20.16 * 1.2 = 24.192px -->

</div>

</div>

</div>

</body>

이것은 어떤 경우엔 바람직하겠지만 대부분의 경우, 단순하게 단일 사이즈로 표현하기도 하지요. 이런 경우 바로 rem 단위를 사용하면 됩니다. rem의 "r"은 바로 "root(최상위)"를 뜻합니다. 최상위 태그(요소)에 지정한 것을 기준으로 삼으며, 보통 최상위 태그는 html태그입니다.

1

2

3

4

5

6

html {

font-size: 14px;

}

div {

font-size: 1.2rem;

}

이전 예제에서 만든 복잡한 단계의 세 div는 모두 16.8px의 폰트 사이즈로 표현되었습니다.

그리드시스템에 좋겠죠.

rem은 폰트에서만 사용하진 않습니다. 예를 들어, 그리드 시스템이나 rem을 이용한 기본 폰트 사이즈 기반으로 만든 UI 스타일, 그리고 em을 이용해 특정 위치에 특별한 사이즈를 지정할 수도 있습니다. 보다 정확한 폰트 사이즈나 크기 조정을 가능하게 해줄 겁니다.

1

2

3

.container {

width: 70rem; // 70 * 14px = 980px

}

개념적으로 보면, 이 아이디어는 여러분의 콘텐츠 사이즈를 조절 할 수 있는 인터페이스 전략과 유사합니다. 그러나 모든 경우에 반드시 이런 방법을 따를 필요는 없습니다.

지금 사용이 가능한가?

rem (root em) 단위의 호환성은 caniuse.com에서 확인할 수 있습니다.


vh와 vw

반응형 웹디자인 기술은 퍼센트 값에 상당히 의존하고 있습니다. 하지만 CSS의 퍼센트 값이 모든 문제를 해결할 좋은 방법은 아니지요. CSS의 너비 값은 가장 가까운 부모 요소에 상대적인 영향을 받습니다. 만약 너비값과 높이값을 부모 요소의 너비값의 뷰포트에 맞게 사용할 수 있다면 어떨까요? 바로 vhvw 단위가 그런 의도에 맞는 단위라는 사실.

vh 요소는 높이값의 100분의 1의 단위입니다. 예를 들어 브라우저 높이값이 900px일때 1vh는 9px이라는 뜻이 되지요. 그와 유사하게 뷰포트의 너비값이 750px이면 1vw7.5px이 됩니다.

이 규칙에는 무궁무진한 사용방법이 있습니다. 예를 들면, 최대 높이값이나 그의 유사한 높이값의 슬라이드를 제작할때 아주 간단한 CSS만 입력하면 됩니다.

1

2

3

.slide {

height: 100vh;

}

스크린의 너비값에 꽉 차는 헤드라인을 만든다고 상상해보세요. vw로 폰트 사이즈를 지정하면 쉽게 달성할 수 있습니다. 저 사이즈는 브라우저의 너비에 맞춰 변할 것입니다.

지금 사용 가능한가?

뷰포트 vw, vh 단위의 호환성은 caniuse.com에서 확인할 수 있습니다.


vmin과 vmax

vhvw이 늘 뷰포트의 너비값과 높이값에 상대적인 영향을 받는다면 vminvmax는 너비값과 높이값에따라 최대, 최소값을 지정할 수 있습니다. 예를 들면 브라우저의 크기가 1100px 너비, 그리고 700px 높이일때 1vmin은 7px이 되고 1vmax는 11px이 됩니다. 너비값이 다시 800px이 되고 높이값이 1080px이 되면 vmin은 8px이 되고 vmax10.8px이 됩니다.

어때요, 이 값들을 사용할 수 있나요?

언제나 스크린에 보여지는 요소를 만든다고 상상해보세요. 높이값과 너비값을 vmin을 사용해 100으로 지정합니다. 예를 들어 터치화면 양 변에 가득차는 정사각형 요소를 만들때는 이렇게 정의하면 됩니다.

1

2

3

4

.box {

height: 100vmin;

width: 100vmin;

}

만약 커버처럼 뷰포트 화면에 보여야 하는(모든 네 변이 스크린에 꽉 차 있는) 경우에는 같은 값을 vmax로 적용하면 됩니다.

1

2

3

4

.box {

height: 100vmax;

width: 100vmax;

}

알려드린 이 규칙들을 잘 조합해 활용하면 뷰포트에 맞는 매우 유연한 방식으로 사이즈 조절을 가능하게 할 수 있습니다.

지금 사용 가능한가?

뷰포트 단위: vmin, vmax의 호환성은 caniuse.com에서 확인할 수 있습니다.


ex와 ch


exch 단위는 현태 폰트와 폰트 사이즈에 의존한다는 점에서 em 그리고 rem과 비슷합니다. emrem과 다른 점은 이 두 단위가 font-family에 의존한다면 다른 두 단위는 폰트의 특정 수치에 기반한다는 점입니다.

ch 단위, 또는 글꼴 단위는 제로 문자인 0의 너비값의 "고급 척도"로 정의됩니다. 흥미로운 의견은 에릭 마이어의 블로그에서 확인할 수 있습니다. 그러나 기본 컨셉은 monospace 폰트의 N 의 너비값을 부여 받았다는 것이며, width: 40ch;는 40개의 문자열을 포함하고 있다는 뜻입니다. 이 특정 규칙은 점자 레이아웃에 기반하고 있지만, 이 기술의 가능성은 간단한 어플리케이션 그 이상으로 확장할 수 있습니다.

ex 단위의 정의는 "현재 폰트의 x-높이값 또는 em의 절반 값"이라고 할 수 있습니다. x-높이값은 소문자 x의 높이값이기도 합니다. 폰트의 중간 지점을 알아내기 위해 자주 사용하는 방법입니다.

x-높이값; 소문자 x의 높이값 (자세한 것은 웹 타이포그래피의 해부학 링크를 참조하세요)

이 단위는 타이포그래픽에서 세밀한 조정을 할 때 많이 사용합니다. 예를 들어, 위첨자 태그인 sup 에게 position을 relative로 하고 bottom 값을 1ex라고 하면 위로 올릴 수 있습니다. 아래첨자 역시 비슷한 방법으로 아래로 내릴 수 있습니다. 브라우저는 위첨자와 아래첨자의 기본값을 vertical-align으로 정의하고 있지만, 보다 정교한 사용법을 알고 싶다면 아래와 같이 작성할 수 있습니다.

1

2

3

4

5

6

7

8

sup {

position: relative;

bottom: 1ex;

}

sub {

position: relative;

bottom: -1ex;

}

지금 사용 가능한가?

exCSS1부터 있던 단위였고, ch 단위는 아직 찾을 수 없습니다. 에릭 마이어의 블로그에 있는 CSS 단위와 값에서 보다 많은 상세 정보를 볼 수 있습니다.


결론


여러분의 막강한 CSS 도구들의 무한한 확장과 지속되는 개발환경에 계속 눈을 뜨고 지켜보세요 아마 특정 문제를 해결하기 위해 예상치 못한 해결방법으로 이 애매한 특정 단위들을 사용할 수도 있을 것입니다. 새로운 스펙들을 시간을 들여 읽어보세요. cssweekly와 같은 좋은 사이트에도 가입해서 지속적인 뉴스를 업데이트 받아보세요. 그리고 주간 업데이트에 가입하는 거 잊지 마세요. 무료 튜토리얼과 Tuts+의 웹디자인에서 나오는 다양한 자료들을 만날 수 있습니다.


반응형
반응형

◎ box-shadow

▼ 내용

그림자 효과를 나타내기위해 사용한다


◎ box-shadow 문법

▼ 내용

첫번째 길이 값은 수평거리 (음수 :왼쪽 || 양수 : 오른쪽)

두번째 길이 값은 수직거리 (음수 : 위 || 양수 : 아래)

세번째 길이 값은 흐림 반경을 지정한다. (투명도)

색상값은 첫번쨰로 와도되고 마지막으로 와도 된다

box-shadow: 5px 5px 5px gray;


◎ box-shadow 지원 브라우저

▼ 내용

거의 모든 브라우저에서 다 지원한다.


BOX-SHADOW 나 TEXT-SHADOW나

블록 그림자냐 ,텍스트 그림자냐 차이일뿐 문법이나 이런건 다 똑같다.



반응형
반응형

카카오 클론 코딩

카카오 클론코딩 파일입니다.

githubpages로 작동하며

파일 첨부합니다


KAKAO+완료.zip


아래 카카오톡 이미지 6장을 토대로

front 단만 만들었습니다.

html+css 로 구조만 짯습니다.

아이콘 같은경운 fontawesome를 사용하였고

추가 필요하신 css 부분은

소스를 첨부하시면 될것같습니다.

*주요기술*

css - flex








 
 
 
 
 


반응형

'디자인 > CSS' 카테고리의 다른 글

CSS - 가로세로단위 (VH,VW,REM 등)  (0) 2019.03.05
CSS - Box-shadow , text-shadow (그림자효과)  (0) 2019.03.05
CSS - Transition  (0) 2019.03.05
CSS - filter ,blend,접두어 (브라우저별 사용)  (0) 2019.03.05
CSS - Transform  (1) 2019.03.05
반응형

Transition 트랜지션 (화면전환)

l transition-property : 엘리먼트의 효과를 함께 적용할 속성들

l transition-duration : 장면전환의 시간을 설정한다

l transition: (property | duration , property | duration) 을 함께 쓸수있다

l transition:-delay : 장면전환이 시작될때 약간의 딜레이를 주고 할수있다.

l transition:-timing-function : 장면전환이 될떄의 x,y의 시간차 전환


◎ transition-timing-function 속성

▼ 내용

안에 있는 property 중 cubic-bezier(); 안에 숫자를 입력하면 속도롤 커스텀마이징 할수있다.

​​https://matthewlein.com/tools/ceaser


◎ transition 과 transform 합친 예제

▼ 내용

div 크기가 줄어들면서 회전한다.

<html> <head> <style> div{ height:200px; width:200px; background:blue; color:White; transition: all .5s ease-in-out; /*모든 속성에대해 장면전환 transition 적용*/ } div:hover{ transform: rotate(5turn) scale(0.5,0.5); /*5번 회전 , 크기 1/2배로 줄임*/ background-color : red; color : green; } </style> </head> <body> <body> <div>안녕</div> </body> </body> </html>


반응형
반응형

filter 를 쓰기전에 이건 나온지 얼마안된 속성이라 CSS 속성 중에 접두어를 붙어야 되는 경우가 있습니다. 각 접두어의 의미를 알아 보겠습니다. 쓰는 방법은 속성 앞에 붙이면 됩니다.

l -webkit- : 구글 , 사파리 브라우저에 적용

l -moz- : 파이어폭스 브라우저에 적용

l -ms- :익스플로러에 적용 , 보통 생략합니다.

l -0- : 오페라 브라우저에 적용

◎ 브라우저별 css 접두어

▼ 내용아래 샘플은 그라데이션 속성을 브라우저별로 나눈것입니다.

접두사를 써야되는 대표적인 속성입니다. 참고로 webkit은 크롬과 사파리가 채용한 웹브라우저 엔진 이름입니다.

#grad1 { height: 200px; /* For Safari 5.1 to 6.0 */ background: -webkit-linear-gradient(left, red , blue); /* For Opera 11.1 to 12.0 */ background: -o-linear-gradient(right, red, blue); /* For Firefox 3.6 to 15 */ background: -moz-linear-gradient(right, red, blue); /* Standard */ background: linear-gradient(to right, red , blue); }

FILTER 속성

l grayscale : 회색화면으로변함 (자세한 내용은 아래 그림 참조)




◎ filter 예제

▼ Filter 기능은 위 그림과 같이 txt , img에 적용하여 위에 그림처럼 다양한 효과를 낼수있다. 마치 포토샾 디자인 , 또는 카메라 사진필터를 적용한것처럼 다양한 효과를 CSS 에서 적용할수있다.

또한 서로 다른 효과를 동시에 줄수도 있다.

img{ -webkit-filter: blur(2px); -o-filter: grayscale(100%); filter : brightness(30px) grayscale(100%); }

blend 속성 (blend : 합성,혼합)

l background-blend-mode : 배경화면들 끼리 섞여서 그림 표현

l mix-blend-mode : 블랜드를 주고싶은 엘리먼트와 그 엘리먼트의 배경과 합성하는것.

◎ background-blend-mode

▼ 서로 다른 배경화면끼리 섞어서 표현것을 말한다




<style> .blend{ background-color: rgba(255,0,0,0.5); /* 배경*/ /* rgba(255,0,0,0.5) 색깔은 빨간색 0.5는 투명도를 뜻한다. 1은 : 불투명 0은 : 투명 */ background-image:url('산.jpg'); /* 배경2 */ background-blend-mode: darken; /* 다양한 방법으로 섞는다 */ /* 배경 2개중 산 이미지와 50%의 투명도를가진 빨간색을 다양한 방법으로 섞어놧다*/ } </style>

◎ mix-blend-mode

▼ 배경화면과 엘리먼트들을 섞는다. 아래사진의 x 랑 y 는 텍스트고 인물사진은 배경이다.

x 와 y 가 배경화면과 섞여서 이처럼 다양한 색감으로 표시가 된다.

<html> <head> <style> body{ background-image:url('사람.jpg'); /* 배경 */ } .blend{ color: red; mix-blend-mode: screen; /* 엘리먼트를 배경과 섞는다 */ } </style> </head> <body> <div class="blend"> X Y </div> </body> </html>



반응형

'디자인 > CSS' 카테고리의 다른 글

CSS - 카카오톡 클론 코딩 (프론트단만. BY nicollas)  (0) 2019.03.05
CSS - Transition  (0) 2019.03.05
CSS - Transform  (1) 2019.03.05
CSS -background  (0) 2019.03.05
CSS - FLOAT  (0) 2019.03.05

+ Recent posts