2013년 9월 12일 목요일

CSS border-radius 이해하기

border-radius는 경계선의 모서리를 얼마나 둥글게 할지를 지정한다. border-radius 속성을 이해하기 위해서는

  • border-top-left-radius
  • border-top-right-radius
  • border-bottom-right-radius
  • border-bottom-left-radius

이 4가지 속성을 먼저 이해하는 것이 편하다. border-radius는 이 4가지 속성의 축약 속성이기 때문이다. 위 4가지 속성은 순서대로 좌측상단, 우측상단, 우측하단, 좌측하단 모서리의 둥근 정도를 지정한다.

이 4가지 속성들은 하나, 또는 두개의 radius값을 설정함으로써 원형, 또는 타원형 모서리를 구현할 수 있다.

! 아래의 예에는 실제 CSS 스타일이 적용되었다.(RSS 피드에서는 아래의 스타일 설정이 나타나지 않을 수도 있음.)

예1 : radius 값을 하나만 설정한 원형(대칭) 모서리

 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 border-top-left-radius: 50px;  

예2 : radius 값을 2개 설정한 타원형(비대칭) 모서리

 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 border-top-left-radius: 100px 50px;  

radius 값을 설정할 때 첫번째 값은 가로(수평) 값이고, 두번째 값은 세로(수직) 값이다. 그리고 이 값은 px 외에 em이나 % 등으로도 설정이 가능하다.

그림1

예3 : radius 값을 %로 설정한 경우

 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 border-top-left-radius: 50% 100%;  


border-radius는 위의 4가지 속성들을 축약한 속성이다. 즉, border-radius 하나로 위 4가지 속성들을 모두 표현할 수 있다.

예를 들어,
 border-top-left-radius:2px;  
 border-top-right-radius:2px;  
 border-bottom-right-radius:2px;  
 border-bottom-left-radius:2px;  

 border-radius:2px;  
와 같으며,

 border-radius: 2em 1em 4em / 0.5em 3em;  

 border-top-left-radius: 2em 0.5em;  
 border-top-right-radius: 1em 3em;  
 border-bottom-right-radius: 4em 0.5em;  
 border-bottom-left-radius: 1em 3em;  
와 같다.

border-radius는 다음과 같은 형식으로 radius 값을 지정한다.

 border-radius: [모서리 4개의 수평 radius 값] / [모서리 4개의 수직 radius 값] ;  
=
 border-radius: [좌측상단 모서리의 수평 radius 값] [우측상단 모서리의 수평 radius 값] [우측하단 모서리의 수평 radius 값] [좌측하단 모서리의 수평 radius 값] / [좌측상단 모서리의 수직 radius 값] [우측상단 모서리의 수직 radius 값] [우측하단 모서리의 수직 radius 값] [좌측하단 모서리의 수직 radius 값] ;  

좀 더 이해하기 쉽게 그림으로 표현하면 <그림2>와 같다.

그림2

좌우측 각 4개의 숫자값들은 생략이 가능한데,

숫자값이 하나만 주어지면, 이는 모서리 4곳의 radius 값이 모두 동일함을 의미한다.

예4 :

 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 border-radius: 10px;  


예5 : 수평 radius 값은 20px로 통일하고, 수직 radius 값은 각각 10px, 20px, 30px, 40px 로 따로 설정하였다.


 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 border-radius: 20px / 10px 20px 30px 40px;  


숫자값이 2개가 주어지면 첫번째 숫자값은 좌측상단과 우측하단 모서리의 radius 값을, 두번째 숫자값은 우측상단과 좌측하단 모서리의 radius 값을 의미한다.

예6 :

 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 border-radius: 20px 40px;  

예7 : 좌측상단과 우측하단의 수평 radius 값은 20px로 주고 우측상단과 좌측하단의 수평 radius 값은 40px로 주었으며, 수직 radius 값은 각각 10px, 20px, 30px, 40px 로 달리 설정하였다.


 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 border-radius: 20px 40px / 10px 20px 30px 40px;  


숫자값이 3개가 주어질 경우, 생략된 마지막 좌측하단 값은 대각선 방향인 우측상단 값과 동일하다. 즉, 숫자값 3개는 순서대로 각각 [좌측상단 값] [우측상단과 좌측하단 값] [우측하단 값] 을 의미한다.

예8 :

 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 border-radius: 20px 40px 50px;  


예9 : 좌측상단의 수평 radius는 20px, 우측상단과 좌측하단의 수평 radius는 40px, 우측하단의 수평 radius는 50px로 설정하였고, 좌측상단과 우측하단의 수직 radius는 20px, 우측상단과 좌측하단의 수직 radius는 40px로 설정하였다. 헉헉.


 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 border-radius: 20px 40px 50px / 20px 40px;  


+ 아래는 border-radius를 활용하여 만든 도형의 몇가지 예이다.



 height: 65px;  
 width:160px;  
 border:1px solid black;   
 border-bottom-right-radius: 50px;  



 height: 5em;  
 width: 12em;  
 border:1px solid black;   
 border-radius: 1em 4em 1em 4em;  



 height: 70px;  
 width: 70px;  
 border:1px solid black;   
 border-radius: 35px;  


마지막으로, transition을 이용한 호버 효과


 .예 {   
 width: 100px;  
 height: 100px;  
 border:1px solid black;  
 -moz-transition: all .3s ease-in-out;  
 -ms-transition: all .3s ease-in-out;  
 -webkit-transition: all .3s ease-in-out;  
 transition: all .3s ease-in-out;  
 }  
 .예:hover {  
 border-radius: 50px;  
 background: #2580a2;  
 }  


! 참고한 글 및 참고할 만한 글
border-radius, Mozilla Developer Network
border-radius property, w3schools
Border-radius: create rounded corners with CSS!, CSS3.info



2013년 9월 11일 수요일

CSS background-repeat 이해하기

background-repeat 속성은 배경(백그라운드) 이미지가 어떻게 반복될지를 설정한다. 배경 이미지는 가로로 반복될 수 있고, 세로로 반복될 수도 있으며, 가로와 세로 모두 반복되거나, 반복되지 않도록 설정할 수도 있다.

! 아래의 예들은 실제 background-repeat이 적용된 것이다. (RSS 피드에서는 아래의 스타일 설정이 보이지 않을 수 있음.)

background-repeat 속성의 값들

  • repeat - 배경 이미지가 가로(수평)와 세로(수직) 모두 반복된다. repeat는 기본(default)값이다. 즉, 따로 설정하지 않는 이상, 배경 이미지는 기본적으로 반복된다.
예 :

 background-image: url("이미지 주소");  
 background-repeat: repeat;  


  • repeat-x - 배경 이미지가 가로(수평)로만 반복된다. 
예 :

 background-image: url("이미지 주소");  
 background-repeat: repeat-x;  


  • repeat-y - 배경 이미지가 세로(수직)로만 반복된다.
예 :

 background-image: url("이미지 주소");  
 background-repeat: repeat-y;  


  • no-repeat - 배경 이미지가 반복되지 않는다.
예 :

 background-image: url("이미지 주소");  
 background-repeat: no-repeat;  


  • inherit - 배경 이미지 반복 여부 설정을 상위(부모) 요소로부터 물려받는다.


! 참고할 만한 글
CSS background-repeat Property (w3schools.com)
background-repeat (Mozilla Developer Network)


! 이 글에 사용된 배경 이미지는 재배포 금지와 출처 표기를 조건으로 상업적인 용도로 사용이 가능한, medialoot 의 무료 아이콘입니다.



구글 블로그(blogger) 인용 상자 꾸미기


블로거에서 인용 상자의 class id는 'blockquote'입니다. 고로 인용 상자의 스타일을 설정하려면 다음의 코드를

 .post blockquote {  
 원하는 스타일을 직접 입력  
 }  

[대시보드 → 템플릿 → 맞춤설정 →  고급 → CSS추가] 에 삽입해주거나, 또는 HTML 편집 모드에서

 ]]></b:skin>  

코드 바로 앞에 직접 삽입해주면 됩니다. 물론, 저 상태 그대로 삽입해선 안되고, 코드 중간의 '원하는 스타일을 직접 입력' 부분에는 스타일 설정 코드가 들어가야 합니다.

어떻게 꾸미느냐는 블로거의 자유이고 또 가능한 스타일이 너무도 많기 때문에 일일이 말씀드릴 수는 없습니다만, 기존 블로거 유저들이 공유하고 있는 인용상자 스타일은 구글에서 'blogger blockquote css' 'blogger blockquote style' 등으로 검색하여 쉽게 찾을 수 있습니다. 예로써 활용하실 수 있도록 몇가지 샘플들을 아래에 첨부합니다. (괜찮은 디자인의 인용상자 스타일을 보게되면, 따로 모아서 나중에 다시 포스팅하도록 하겠습니다.)

! 이 글에는 스타일 설정이 적용되어 있으므로, RSS 피드로만 보실 경우 아래의 스타일 설정이 나타나지 않을 수 있습니다.


인용상자에 마우스를 올렸을 때 점진적으로 색상을 변화시켜 동적인 효과를 주었다.

 .post blockquote {   
 width: 75%;  
 margin:auto;  
 padding: 15px;  
 border: 1px solid #dbdbdb;  
 -moz-transition: all .3s ease-in-out;  
 -ms-transition: all .3s ease-in-out;  
 -webkit-transition: all .3s ease-in-out;  
 transition: all .3s ease-in-out;  
 }  
 .post blockquote:hover {  
 background: #000000;  
 color: #C1C1C1;  
 }   


인용상자에 마우스를 올렸을 때 그림자가 생성되도록 하였다.

 .post blockquote {   
 width: 75%;  
 margin:auto;  
 padding: 15px;  
 border: 1px solid #dbdbdb;  
 -moz-transition: all .3s ease-in-out;  
 -ms-transition: all .3s ease-in-out;  
 -webkit-transition: all .3s ease-in-out;  
 transition: all .3s ease-in-out;  
 }  
   
 .post blockquote:hover {  
 box-shadow: 10px 10px 10px #2580a2;  
 }   


"문제를 해결하는 힘은 새로운 정보를 얻는 데서 오는 것이 아니라, 이미 오래 전부터 알고 있던 것을 체계적으로 정리하는 데서 온다." - 비트겐슈타인

 .post blockquote {   
 width: 75%;  
 margin:auto;  
 border-left: 4px solid #ccc;  
 color: #a5a4a4;  
 font-style: italic;  
 padding-left: 15px;   
 }  


"문제를 해결하는 힘은 새로운 정보를 얻는 데서 오는 것이 아니라, 이미 오래 전부터 알고 있던 것을 체계적으로 정리하는 데서 온다." - 비트겐슈타인

 .post blockquote {   
 width:75%;   
 margin: auto;  
 padding: .5em 1em;  
 border-left: 5px solid #fce27c;  
 background-color: #f6ebc1;   
 }  


"문제를 해결하는 힘은 새로운 정보를 얻는 데서 오는 것이 아니라, 이미 오래 전부터 알고 있던 것을 체계적으로 정리하는 데서 온다." - 비트겐슈타인

 .post blockquote {   
 width:65%;   
 margin: auto;  
 background: url(이미지 주소) no-repeat;     
 color: #a5a4a4;  
 font-style:italic;  
 padding: 30px;  
 }