페이지 너비를 기기의 너비와 동일하게 합니다. 'initial-scale=1.0'과 동일하다 할 수 있습니다.
width=device-width
기기에서 줌 아웃을 할 때 가장 줄어들 수 있는 비율입니다.예를 들어 0.8이라면 실제 페이지의 80%까지 더 축소할 수 있습니다. 1이면 실제 페이지에서 축소가 안됩니다.
minimum-scale=1.0
기기에서 줌 인을 할 때 가장 커질 수 있는 비율입니다. 2라면 두 배까지 확대 가능 합니다.역시 1이라면 확대가 되지 않습니다.
maximum-scale=1.0
사용자가 페이지를 줌 인, 줌 아웃을 할 수 없도록 만듭니다.minimum-scale=1.0, maximum-scale=1.0 이 두 가지를 선언 한 것과 같은 기능이라 할 수 있습니다.
user-scalable=no
Android용 Chrome을 위한 테마 컬러를 지정하려면 메타 테마 색상을 사용합니다.
<META NAME="theme-color" CONTENT="#2196f3"> <META NAME="mobile-web-app-capable"
CONTENT="yes">
<!-- Allow Web App To Be Run In Full-screen Mode. --> <META NAME="apple-mobile-web-app-capable"
CONTENT="yes">
<!-- Make The App Title Different Than The Page Title. --> <META NAME="apple-mobile-web-app-title"
CONTENT="iOS 8 web app">
<!-- Configure The Status Bar. --> <META NAME="apple-mobile-web-app-status-bar-style" CONTENT="black">
<!-- Disable Automatic Phone Number Detection. --> <META NAME="format-detection"
CONTENT="telephone=no">
상태바의 기본 외관을 black이나 black-translucent으로 변경할 수 있습니다.
black-translucent일 때 상태바는 풀스크린 콘텐츠의 내용 위로 올라갑니다. 이는 레이아웃의 높이를 키우지만, 상단을 가로막습니다.
<META NAME="apple-mobile-web-app-status-bar-style" CONTENT="black">
<META NAME="apple-mobile-web-app-status-bar-style" CONTENT="black-translucent">
이미지는 타겟 기기 화면의 특정 크기여야 합니다. 그렇지 않으면 사용하지 않습니다.
더 자세한 내용은 Safari 웹 콘텐츠 가이드라인을 참고하세요. <LINK REL="apple-touch-icon" HREF="ios-icon.png">
<LINK REL="apple-touch-icon" SIZES="512x512" HREF="ios-icon.png">
<LINK REL="apple-touch-icon-precomposed" HREF="/cube2019/common/images/kids.png">
$('link[rel="apple-touch-icon-precomposed"]').attr('href','/cube2019/common/images/'+nvq(_setup.appname,'kids','task')+'.png');
<LINK REL="apple-touch-startup-image" HREF="icon.png">
블록 요소 (Block Level Elements)
h1~6, p, div
블록 요소는 일단 기본적으로 줄 바꿈이 일어나는 형태로 영역의 너비가 상위 영역의 전체 너비만큼 되는 형태입니다.
인라인 요소 (Inline Elements)
a, img, strong, span
인라인 요소는 블록 요소와 반대되는 형태로 줄 바꿈이 일어나지 않는 요소들 입니다.
글자 형태 (Text Formatting)
HEADINGS
Heading 태그는 제목을 나타낼 때 사용하며 h1에서 h6까지의 태그가 있다. h1이 가장 중요한 제목을 의미하며 글자의 크기도 가장 크다.
bold체를 지정한다. 제목 태그와 같이 의미론적(Semantic) 중요성의 의미는 없다.
<b>This text is bold.</b> <p style="font-weight: bold;">This
text is bold.</p>
STRONG
b tag와 동일하게 bold체를 지정한다. 하지만 의미론적(Semantic) 중요성의 의미를 갖는다.
표현되는 외양은 b tag와 동일하지만 웹표준을 준수하고자 한다면 strong를 사용하는 것이 바람직하다.
<strong>This text is strong.</strong>
ITALIC
Italic체를 지정한다. 의미론적(Semantic) 중요성의 의미는 없다.
<i>This text is italic.</i> <p style="font-style: italic;">This text is italic.</i>
EMPHASIZED
emphasized(강조, 중요한) text를 지정한다. i tag와 동일하게 Italic체로 표현된다. 의미론적(Semantic) 중요성의 의미를 갖는다.
<em>This text is emphasized.</em>
SMALL
small text를 지정한다.
<small>HTML Small Formatting</small>
MARK
highlighted text를 지정한다.
<mark>HTML Marked Formatting</mark>
DELETED
deleted (removed) text를 지정한다.
<del>My favorite color is blue red.</del>
INSERTED
inserted (added) text를 지정한다.
<ins>My favorite color is red.</ins>
SUB / SUP
sub 태그는 subscripted(아래첨자) text를 sup 태그는 superscripted(윗첨자) text를 지정한다.
<p>This is <sub>subscripted</sub> text.</p> This is subscripted text.
<p>This is <sup>superscripted</sup> text.</p> This is subscripted text.
PARAGRAPHS
단락 (Paragraphs)을 지정한다.
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur.</p><p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
anim id est laborum.</p>
BREAK
br tag는 (강제)개행 (line break)을 지정한다. br tag는 빈 요소(empty element)로 종료태그가 없다.
<p>This is<br> a para<br> graph with line breaks</p>
PREFORMATTED
형식화된(preformatted) text를 지정한다. pre 태그 내의 content는 작성된 그대로 브라우저에 표시된다.
<pre> var myArray = []; console.log(myArray.length); // 0 </pre>
HR
수평줄을 삽입한다.
HTML is a language for describing web pages.<hr>
CSS defines how to display HTML elements.
QUOTATION
짧은 인용문(quotation)을 지정한다. 브라우저는 인용부호(큰따옴표/quotation marks)로 q 요소를 감싼다.
<p>WWF's goal is to: <q>Build a future where people live in harmony with nature.</q></p>
BLOCKQUOTE
긴 인용문 블록을 지정한다. 브라우저는 blockquote 요소를 들여쓰기한다. css를 이용하여 다양한 style을 적용할 수 있다.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
dolore magna aliqua.
HYPERLINK
HREF
절대 URL 웹사이트 URL (href="http://www.example.com/default.html")
<a href="http://www.google.com">URL</a>
상대 URL 자신의 위치를 기준으로한 대상의 URL (href="html/default.html")
GET 방식은 전송 URL에 입력 데이터를 쿼리스트링으로 보내는 방식이다.
예) http://jsonplaceholder.typicode.com/posts?userId=1&id=1
전송 URL 바로 뒤에 ‘?’를 통해 데이터의 시작을 알려주고, key-value형태의 데이터를 추가한다. 1개 이상의 전송 데이터는 ‘&’로 구분한다.
URL에 전송 데이터가 모두 노출되기 때문에 보안에 문제가 있으며 전송할 수 있는 데이터의 한계가 있다. (최대 255자).
REST API에서 GET 메소드는 모든 또는 특정 리소스의 조회를 요청한다.
POST 방식은 Request Body에 담아 보내는 방식이다.
예) http://jsonplaceholder.typicode.com/posts
URL에 전송 데이터가 모두 노출되지 않지만 GET에 비해 속도가 느리다.
REST API에서 POST 메소드는 특정 리소스의 생성을 요청한다.
Request Message
Header: Request line Header: General Header: General Header: Request
Header: Entity Header: Entity Body(Entity)
리셋 버튼을 선택한다. (input[type=reset] or button[type=reset])
:selected
선택된 엘리먼트만 선택한다.
:submit
전송 버튼을 선택한다. (input[type=submit] or button[type=submit])
:text
텍스트 엘리먼트만 선택한다. (input[type=text])
:visible
보이는 엘리먼트만 선택한다.
엘리먼트 조작
each(Function)
선택된 엘리먼트가 다수일 경우에 each 함수를 사용하여 차례대로 엘리먼트를 선택한다.
에트리뷰트 조작
attr(name, value)
선택된 엘리먼트의 name 에트리뷰트의 값을 value로 설정한다.
attr(name)
선택된 엘리먼트의 name 에트리뷰트의 값을 얻어온다.
attr(Attributes)
선택된 엘리먼트를 프로퍼티(json)형태로 설정할 수 있다.
val()
엘리먼트의 value 에트리뷰트 값을 얻어옴. attr("value")와 동일하다.
val(content)
엘리먼트의 value 에트리뷰트 값을 content로 설정한다.
에트리뷰트 제거
removeAttr(name)
해당 어트리뷰트의 값이 초기화 된다.
스타일 변경
addClass(names)
선택된 엘리먼트에 CSS Class를 적용한다. 만약에 다수의 Class를 적용하려면 공백으로 구분하여 할당하면 된다.
removeClass(names)
선택된 엘리먼트들을 제거한다.
toggleClass(names)
특정 Class를 적용하지 않은 상태면 적용하고, 적용한 상태면 제거한다.
스타일 얻고 설정
css(name, value)
선택된 엘리먼트의 name 에트리뷰트 값을 value로 설정한다.
css(properties)
{"name1:" value1", "name2": "value2", } 와 같은 형태로 설정한다.
css(name)
특정 name의 프로퍼티의 스타일 값을 얻을 수 있다.
width(value)
선택된 엘리먼트의 width 값을 설정한다.
height(value)
선택된 엘리먼트의 height 값을 설정한다.
width()
선택된 엘리먼트의 width 값을 얻어온다.
height()
선택된 엘리먼트의 height 값을 얻어온다.
offset()
선택된 엘리먼트의 left 값과 top 값을 E.offset().left, E.offset().top과 같은 방법으로 얻을 수 있다.
엘리먼트 내용 설정
html()
선택된 엘리먼트 태그 내용을 얻을 수 있다.
html(content)
선택된 엘리먼트의 태그 내용을 content로 설정한다.
text()
선택된 엘리먼트의 태그 내용 중 텍스트 값만 얻을 수 있다.
text(content)
선택된 엘리먼트의 태그 내용을 content로 설정한다.
엘리먼트 복사&이동
append(content)
선택된 엘리먼트의 내용 마지막에 새로운 content를 추가한다.
appendTo(target)
선택된 엘리먼트가 단일이면 target으로 이동시키고 다수라면 복사된다.
prepend(content)
append와 달리 앞으로 추가한다.
prependTo(target)
appendTo와 달리 앞으로 복사 또는 이동한다.
before(),insertBefore()
엘리먼트를 대상의 첫 번째 자식으로 삽입하는 대신에 대상의 바로 앞 형제로 추가한다.
after(),insertAfter()
엘리먼트를 대상의 마지막 자식으로 삽입하는 대신에 대상의 바로 뒤 형제로 추가한다.
엘리먼트 감싸기
wrap(wrapper)
매개 변수로는 String과 엘리먼트 타입이 올 수 있으며, "<DIV CLASS='hello'></DIV>" 형태로 매개 변수 값을 넘기면 된다.
wrapAll(wrapper)
선택된 모든 엘리먼트를 wrapper로 감싼다.
엘리먼트 제거
remove()
페이지 DOM에서 확장 집합의 모든 엘리먼트를 삭제한다.
empty()
일치하는 집합의 모든 엘리먼트의 Content를 제거한다.
엘리먼트 복사
clone(copyHandlers)
일반적으로 엘리먼트를 복사한 확장 집합을 만들면 이들은 DOM 어딘가에 덧붙일 수 있다.
확장 집합 크기 얻기
size()
해당 엘리먼트의 개수를 반환한다.
확장 집합에서 특정 엘리먼트 얻기
get(index)
확장 집합에서 index번째의 엘리먼트를 가져온다. (배열과 유사하다.)
get()
모든 확장 엘리먼트를 일반 자바스크립트 배열로 얻는다.
index(element)
확장 집합에서 특정 엘리먼트의 index 값을 가져온다.
확장 집합 재편성 하기
add(element)
기존의 확장 집합에 다른 엘리먼트를 추가한다.
not(expression)
기존의 확장 집합에서 expression와 일치하는 엘리먼트를 제외시킨다.
filter(expression)
기존의 확장 집합에서 expression와 일치하는 엘리먼트만 가져온다.
확장 집합의 부분 집합 얻기
slice(begin, end)
기존의 확장 집합에서 begin번째부터 end번째까지의 엘리먼트만 가져온다.
확장 집합 관련 그 밖에 함수들
find(selector)
기존의 확장 집합에서 selector와 일치하는 엘리먼트들로 새로운 확장 집합을 생성한다.
is(selector)
기존의 확장 집합에서 selector와 일치하는 엘리먼트가 있다면 true, 없다면 false를 반환한다.
jQuery 체인 관리하기
end()
이전 확장 집합을 반환한다.
andSelf()
커맨드 체인에서 이전 확장 집합 두 개를 하나로 합친다.
관계를 이용하여 확장 집합 얻기
children()
확장 엘리먼트의 고유한 자식으로 구성된 확장 집합 반환한다.
contents()
엘리먼트의 콘텐츠로 구성된 확장 집합을 반환한다.
next()
확장 집합 내의 각 확장 엘리먼트 바로 다음에 나오는 형제로 구성된 확장 집합을 반환한다.
nextAll()
확장 집합 내의 각 확장 엘리먼트 바로 다음에 나오는 모든 형제로 구성된 확장 집합을 반환한다.
parent()
바로 위 부모로 구성된 확장 집합을 반환한다.
parents()
바로 위 부모와 모든 조상이 포함하는 확장 집합을 반환한다.
prev()
바로 이전에 나오는 형제로 구성된 확장 집합을 반환한다.
prevAll()
이전에 나오는 모든 형제로 구성된 확장 집합을 반환한다.
siblings()
확장 엘리먼트 내에 모든 형제를 포함한 확장 집합을 반환한다.
CSS3 Selector
전체 셀렉터 (Universal Selector)
*
HTML 문서 내의 모든 요소를 선택한다. html 요소를 포함한 모든 요소가 선택된다. (head 요소도 포함된다) *{color:red;}
태그 셀렉터 (Type Selector)
태그명
지정된 태그명을 가지는 요소를 선택한다.
ID 셀렉터 (ID Selector)
#id 어트리뷰트 값
id 어트리뷰트 값을 지정하여 일치하는 요소를 선택한다. id 어트리뷰트 값은 중복될 수 없는 유일한 값이다.
클래스 셀렉터 (Class Selector)
.class 어트리뷰트 값
class 어트리뷰트 값을 지정하여 일치하는 요소를 선택한다. class 어트리뷰트 값은 중복될 수 있다.
어트리뷰트 셀렉터 (Attribute Selector)
셀렉터[어트리뷰트]
지정된 어트리뷰트를 갖는 모든 요소를 선택한다.
/* a 요소 중에 href 어트리뷰트를 갖는 모든 요소 */ a[href]{color:red;}
셀렉터[어트리뷰트="값"]
지정된 어트리뷰트를 가지며 지정된 값과 어트리뷰트의값이 일치하는 모든요소를 선택한다.
/* a 요소 중에 target 어트리뷰트의 값이 "_blank"인 모든 요소 */ a[target="_blank"]{color: red;}
셀렉터[어트리뷰트~="값"]
지정된 어트리뷰트의 값이 지정된 값을 (공백으로 분리된) 단어로 포함하는 요소를 선택한다.
/* h1 요소 중에 title 어트리뷰트 값에 "first"를 단어로 포함하는 요소 */ h1[title~="first"] {color:red;}
< h1 title="heading first">Heading first< /h1> //적용됨
< h1 title="heading-first">Heading-first< /h1> //적용안됨
셀렉터[어트리뷰트|="값"]
지정된 어트리뷰트의 값과 일치하거나 지정 어트리뷰트 값 뒤 연이은 하이픈("값-")으로 시작하는 요소를 선택한다.
/* p 요소 중에 lang 어트리뷰트 값이 "en"과 일치하거나 "en-"로 시작하는 요소 */ p[lang|="en"]{color:red;}
셀렉터[어트리뷰트^="값"]
지정된 어트리뷰트 값으로 시작하는 요소를 선택한다.
/* a 요소 중에 href 어트리뷰트 값이 "https://"로 시작하는 요소 */ a[href^="https://"]{color:red;}
셀렉터[어트리뷰트$="값"]
지정된 어트리뷰트 값으로 끝나는 요소를 선택한다.
/* a 요소 중에 href 어트리뷰트 값이 ".html"로 끝나는 요소 */ a[href$=".html"]{color:red;}
셀렉터[어트리뷰트*="값"]
지정된 어트리뷰트 값을 포함하는 요소를 선택한다.
/* div 요소 중에서 class 어트리뷰트 값에 "test"를 포함하는 요소 */ div[class*="test"]{color:red;}
/* div 요소 중에서 class 어트리뷰트 값에 "test"를 단어로 포함하는 요소 */ div[class~="test"]{background-color:yellow;}
<DIV class="first_test">The first div element.</DIV> <DIV class="test">The third div element.</DIV>
복합 셀렉터 (Combinator)
후손 셀렉터 (Descendant Combinator)
셀렉터A 셀렉터B
/* div 요소의 후손요소 중 p 요소 */ div p{color:red;}
자식 셀렉터 (Child Combinator)
셀렉터A > 셀렉터B
/* div 요소의 자식요소 중 p 요소 */ div > p{color:red;}
인접 형제 셀렉터(Adjacent Sibling Combinator)
셀렉터A + 셀렉터B
/* p 요소의 형제 요소 중에 p 요소 바로 뒤에 위치하는 ul 요소를 선택한다. */ p + ul{color:red;}
일반 형제 셀렉터(General Sibling Combinator)
셀렉터A ~ 셀렉터B
/* p 요소의 형제 요소 중에 p 요소 뒤에 위치하는 ul 요소를 모두 선택한다.*/ p ~ ul{color:red;}
가상 클래스 셀렉터 (Pseudo-Class Selector)
링크 셀렉터(Link pseudo-classes), 동적 셀렉터(User action pseudo-classes)
:link
셀렉터가 방문하지 않은 링크일 때
/* a 요소가 방문하지 않은 링크일 때 * a:link{color:orange;}
/* a 요소가 방문한 링크일 때 */ a:visited{color:green;} /* a 요소에 마우스가 올라와 있을 때 */ a:hover{font-weight:bold;}
/* a 요소가 클릭된 상태일 때 */ a:active{color:blue;}
/* text input 요소와 password input 요소에 포커스가 들어와 있을 때
*/ input[type=text]:focus,input[type=password]:focus{color:red;}
:visited
셀렉터가 방문한 링크일 때
:hover
셀렉터에 마우스가 올라와 있을 때
:active
셀렉터가 클릭된 상태일 때
:focus
셀렉터에 포커스가 들어와 있을 때
UI 요소 상태 셀렉터(UI element states pseudo-classes)
:checked
셀렉터가 체크 상태일 때
/* input 요소가 사용 가능한 상태일 때, input 요소 바로 뒤에 위치하는 인접 형제 span 요소를 선택 */ input:enabled + span{color:blue;}
/* input 요소가 사용 불가능한 상태일 때, input 요소 바로 뒤에 위치하는 인접 형제 span 요소를 선택 */ input:disabled +
span{color:gray;text-decoration:line-through;}
/* input 요소가 체크 상태일 때, input 요소 바로 뒤에 위치하는 인접 형제 span 요소를 선택 */ input:checked + span{color:red;}
:enabled
셀렉터가 사용 가능한 상태일 때
:disabled
셀렉터가 사용 불가능한 상태일 때
구조 가상 클래스 셀렉터(Structural pseudo-classes)
:first-child
셀렉터에 해당하는 모든 요소 중 첫번째 자식인 요소를 선택한다.
/* p 요소 중에서 첫번째 자식을 선택 */ p:first-child {color:red;}
/* p 요소 중에서 마지막 자식을 선택 */ /* body 요소의 두번째 p 요소는 마지막 자식 요소가 아니다. body 요소의 마지막 자식 요소는 div 요소이다.
*/ p:last-child{color:blue;}
:last-child
셀렉터에 해당하는 모든 요소 중 마지막 자식인 요소를 선택한다.
:nth-child(n)
셀렉터에 해당하는 모든 요소 중 앞에서 n번째 자식인 요소를 선택한다.
/* ol 요소의 자식 요소인 li 요소 중에서 짝수번째 요소만을 선택 */ ol > li:nth-child(2n){color:orange;}
/* ol 요소의 자식 요소인 li 요소 중에서 홀수번째 요소만을 선택 */ ol > li:nth-child(2n+1){color:green;}
/* ol 요소의 자식 요소인 li 요소 중에서 첫번쨰 요소만을 선택 */ ol > li:first-child{color:red;}
/* ol 요소의 자식 요소인 li 요소 중에서 마지막 요소만을 선택 */ ol > li:last-child{color:blue;}
/* ol 요소의 자식 요소인 li 요소 중에서 4번째 요소 요소만을 선택 */ ol > li:nth-child(4){background:brown;}
/* ul 요소의 모든 자식 요소 중에서 뒤에서부터 시작하여 홀수번째 요소만을 선택 */ ul > :nth-last-child(2n+1){color:red;}
/* ul 요소의 모든 자식 요소 중에서 뒤에서부터 시작하여 짝수번째 요소만을 선택 */ ul > :nth-last-child(2n){color:blue;}
:nth-child(n) : n은 0부터 시작하는 정수이다.
n
2n+1
2n-1
3n-2
3n+1
-n+5
0
1
-1
-2
1
5
1
3
1
1
4
4
2
5
3
4
7
3
3
7
5
7
1
2
4
9
7
10
13
1
5
11
9
13
16
0
:nth-last-child(n)
셀렉터에 해당하는 모든 요소 중 뒤에서 n번째 자식인 요소를 선택한다.
:first-of-type
셀렉터에 해당하는 요소의 부모 요소의 자식 요소 중 첫번째 등장하는 요소를 선택한다.
/* p 요소의 부모 요소의 자식 요소 중 첫번째 등장하는 p 요소 */ p:first-of-type{color:red;}
/* p 요소의 부모 요소의 자식 요소 중 마지막 등장하는 p 요소 */ p:last-of-type{color:blue;}
/* p 요소의 부모 요소의 자식 요소 중 앞에서 2번째에 등장하는 p 요소 */ p:nth-of-type(2){color:green;}
/* p 요소의 부모 요소의 자식 요소 중 뒤에서 2번째에 등장하는 p 요소 */ p:nth-last-of-type(2){color:orange;}
/* p 요소 중에서 첫번째 자식을 선택 */ p:first-child{background:brown;}
:last-of-type
셀렉터에 해당하는 요소의 부모 요소의 자식 요소 중 마지막에 등장하는 요소를 선택한다.
:nth-of-type(n)
셀렉터에 해당하는 요소의 부모 요소의 자식 요소 중 앞에서 n번째에 등장하는 요소를 선택한다.
:nth-last-of-type(n)
셀렉터에 해당하는 요소의 부모 요소의 자식 요소 중 뒤에서 n번째에 등장하는 요소를 선택한다.
:not(셀렉터)
셀렉터에 해당하지 않는 모든 요소를 선택한다.
/* input 요소 중에서 type 어트리뷰트의 값이 password가 아닌 요소를 선택 */ input:not([type=password]){background:yellow;}
가상 요소 셀렉터 (Pseudo-Element Selector)
::first-letter
콘텐츠의 첫글자를 선택한다.
/* p 요소 콘텐츠의 첫글자를 선택 */ p::first-letter{font-size:3em;}
/* p 요소 콘텐츠의 첫줄을 선택 */ p::first-line{color:red;}
/* h1 요소 콘텐츠의 앞 공간에 content 어트리뷰트 값을 삽입한다 */ h1::before{content:" HTML!!! ";color:blue;}
/* h1 요소 콘텐츠의 뒷 공간에 content 어트리뷰트 값을 삽입한다 */ h1::after{content:" CSS3!!!";color:red;}
/* 드래그한 콘텐츠를 선택한다 */ ::selection{color:red;background:yellow;}
::first-line
콘텐츠의 첫줄을 선택한다. 블록 요소에만 적용할 수 있다.
::after
콘텐츠의 뒤에 위치하는 공간을 선택한다. 일반적으로 content 어트리뷰트와 함께 사용된다.
::before
콘텐츠의 앞에 위치하는 공간을 선택한다. 일반적으로 content 어트리뷰트와 함께 사용된다.
::selection
드래그한 콘텐츠를 선택한다. iOS Safari 등 일부 브라우저에서 동작 않는다.
CSS 프로퍼티 값의 단위
크기 단위
px
px은 픽셀(화소) 단위이다. 1px은 화소 1개 크기를 의미한다. 22인치 LCD 모니터의 경우 해상도가 1680 * 1050 인데 이것은 가로에 1680개의 픽셀, 세로에 1050개의 픽셀을 가진다는
의미이다. 200만 화소(픽셀)의 디지털 카메라로 찍은 사진은 1600 * 1200 = 1,920,000으로 통상 200만 화소라 한다.
%
%는 백분률 단위의 상대 단위이다. 요소에 지정된 사이즈(상속된 사이즈나 디폴트 사이즈)에 상대적인 사이즈를 설정한다.
em
em은 배수(倍數) 단위로 상대 단위이다. 요소에 지정된 사이즈(상속된 사이즈나 디폴트 사이즈)에 상대적인 사이즈를 설정한다. 예를 들어 1em은 요소에 지정된 사이즈와 같고 2em은 요소에 지정된
사이즈의 2배이다.폰트 사이즈 설정이나 콘텐츠를 포함하는 컨테이너의 크기 설정에 사용하면 상대적인 설정이 가능하여 편리하다.
rem
em의 기준은 상속의 영향으로 바뀔 수 있다. 즉, 상황에 따라 1.2em은 각기 다른 값을 가질 수 있다.
rem은 최상위 요소(html)의 사이즈를 기준으로 삼는다. rem의 r은 root를 의미한다.
Viewport 단위(vh, vw, vmin, vmax)
반응형 웹디자인은 화면의 크기에 동적으로 대응하기 위해 % 단위를 자주 사용한다. 하지만 % 단위는 em과 같이 상속에 의해 부모 요소에 상대적 영향을 받는다.Viewport 단위는 상대적인 단위로
viewport를 기준으로 한 상대적 사이즈를 의미한다.
Viewport 단위
vw
viewport 너비의 1/100
vh
viewport 높이의 1/100
vmin
viewport 너비 또는 높이 중 작은 쪽의 1/100
vmax
viewport 너비 또는 높이 중 큰 쪽의 1/100
COLOR
IOS Palette
Dark Blue
#5856d6
#5856d6
rgb(88,86,214)
Deep Blue
#007aff
#007aff
rgb(0,122,255)
Blue
#34aadc
#34aadc
rgb(52,170,220)
Light Blue
#5ac8fa
#5ac8fa
rgb(90,200,250)
Green
#4cd964
#4cd964
rgb(76,217,100)
Pink
#ff2d55
#ff2d55
rgb(255,45,85)
Red
#ff3b30
#ff3b30
rgb(255,59,48)
Orange
#ff9500
#ff9500
rgb(255,149,0)
Yellow
#ffcc00
#ffcc00
rgb(255,204,0)
Gray
#8e8e93
#8e8e93
rgb(142,142,147)
IOS Palette
Dark Blue
#5856d6
#5856d6
rgb(88,86,214)
Deep Blue
#007aff
#007aff
rgb(0,122,255)
Blue
#34aadc
#34aadc
rgb(52,170,220)
Light Blue
#5ac8fa
#5ac8fa
rgb(90,200,250)
Green
#4cd964
#4cd964
rgb(76,217,100)
Pink
#ff2d55
#ff2d55
rgb(255,45,85)
Red
#ff3b30
#ff3b30
rgb(255,59,48)
Orange
#ff9500
#ff9500
rgb(255,149,0)
Yellow
#ffcc00
#ffcc00
rgb(255,204,0)
Gray
#8e8e93
#8e8e93
rgb(142,142,147)
Material Palette
Red
#e51c23
#e51c23
rgb(229,28,35)
Pink
#e91e63
#e91e63
rgb(233,30,99)
Purple
#9c27b0
#9c27b0
rgb(156,39,176)
Deep Purple
#673ab7
#673ab7
rgb(103,58,183)
Indigo
#3f51b5
#3f51b5
rgb(63,81,181)
Blue
#5677fc
#5677fc
rgb(86,119,252)
Light Blue
#03a9f4
#03a9f4
rgb(3,169,244)
Cyan
#00bcd4
#00bcd4
rgb(0,188,212)
Teal
#009688
#009688
rgb(0,150,136)
Green
#259b24
#259b24
rgb(37,155,36)
Light Green
#8bc34a
#8bc34a
rgb(139,195,74)
Lime
#cddc39
#cddc39
rgb(205,220,57)
Yellow
#ffeb3b
#ffeb3b
rgb(255,235,59)
Amber
#ffc107
#ffc107
rgb(255,193,7)
Orange
#ff9800
#ff9800
rgb(255,152,0)
Deep Orange
#ff5722
#ff5722
rgb(255,87,34)
Brown
#795548
#795548
rgb(121,85,72)
Grey
#9e9e9e
#9e9e9e
rgb(158,158,158)
Blue Grey
#607d8b
#607d8b
rgb(96,125,139)
Black
#000000
#000000
rgb(0,0,0)
White
#ffffff
#ffffff
rgb(255,255,255)
Flat Palette
Turquoise
#1abc9c
#1abc9c
rgb(26,188,156)
Emerald
#2ecc71
#2ecc71
rgb(46,204,113)
Peter River
#3498db
#3498db
rgb(52,152,219)
Amethyst
#9b59b6
#9b59b6
rgb(155,89,182)
Wet Asphalt
#34495e
#34495e
rgb(52,73,94)
Green Sea
#16a085
#16a085
rgb(22,160,133)
Nephritis
#27ae60
#27ae60
rgb(39,174,96)
Belize Hole
#2980b9
#2980b9
rgb(41,128,185)
Wisteria
#8e44ad
#8e44ad
rgb(142,68,173)
Midnight Blue
#2c3e50
#2c3e50
rgb(44,62,80)
Sun Flower
#f1c40f
#f1c40f
rgb(241,196,15)
Carrot
#e67e22
#e67e22
rgb(230,126,34)
Alizatin
#e74c3c
#e74c3c
rgb(231,76,60)
Clouds
#ecf0f1
#ecf0f1
rgb(236,240,241)
Concrete
#95a5a6
#95a5a6
rgb(149,165,166)
Orange
#f39c12
#f39c12
rgb(243,156,18)
Pumpkin
#d35400
#d35400
rgb(211,84,0)
Pomegrenade
#c0392b
#c0392b
rgb(192,57,43)
Silver
#bdc3c7
#bdc3c7
rgb(189,195,199)
Asbesthos
#7f8c8d
#7f8c8d
rgb(127,140,141)
WP8 Palette
Lime
#a4c400
#a4c400
rgb(164,196,0)
Green
#60a917
#60a917
rgb(96,169,23)
Emerald
#008a00
#008a00
rgb(0,138,0)
Tral
#00aba9
#00aba9
rgb(0,171,169)
Cyan
#1ba1e2
#1ba1e2
rgb(27,161,226)
Cobalt
#0050ef
#0050ef
rgb(0,80,239)
Indigo
#6a00ff
#6a00ff
rgb(106,0,255)
Violet
#aa00ff
#aa00ff
rgb(170,0,255)
Magenta
#d80073
#d80073
rgb(216,0,115)
Pink
#f472d0
#f472d0
rgb(244,114,208)
Crimson
#a20025
#a20025
rgb(162,0,37)
Red
#e51400
#e51400
rgb(229,20,0)
Orange
#fa6800
#fa6800
rgb(250,104,0)
Amber
#f0a30a
#f0a30a
rgb(240,163,10)
Yellow
#e3c800
#e3c800
rgb(227,200,0)
Brown
#825a2c
#825a2c
rgb(130,90,44)
Olive
#6d8764
#6d8764
rgb(109,135,100)
Steel
#647687
#647687
rgb(100,118,135)
Mauve
#76608a
#76608a
rgb(118,96,138)
Sienna
#a0522d
#a0522d
rgb(160,82,45)
RGBA Palette
White
rgba(0,0,0,0)
rgba(0,0,0,0)
rgba(0,0,0,0)
rgba(0,0,0,0.1)
rgba(0,0,0,0.1)
rgba(0,0,0,0.1)
rgba(0,0,0,0.1)
Lightgray
rgba(0,0,0,0.2)
rgba(0,0,0,0.2)
rgba(0,0,0,0.2)
Silver
rgba(0,0,0,0.3)
rgba(0,0,0,0.3)
rgba(0,0,0,0.3)
Darkgray
rgba(0,0,0,0.4)
rgba(0,0,0,0.4)
rgba(0,0,0,0.4)
Gray
rgba(0,0,0,0.5)
rgba(0,0,0,0.5)
rgba(0,0,0,0.5)
Dimgrey
rgba(0,0,0,0.6)
rgba(0,0,0,0.6)
rgba(0,0,0,0.6)
rgba(0,0,0,0.7)
rgba(0,0,0,0.7)
rgba(0,0,0,0.7)
rgba(0,0,0,0.7)
rgba(0,0,0,0.8)
rgba(0,0,0,0.8)
rgba(0,0,0,0.8)
rgba(0,0,0,0.8)
rgba(0,0,0,0.9)
rgba(0,0,0,0.9)
rgba(0,0,0,0.9)
rgba(0,0,0,0.9)
Black
rgba(0,0,0,1)
rgba(0,0,0,1)
rgba(0,0,0,1)
Gray Palette
White
#ffffff
#ffffff
rgba(0,0,0,0)
Gainsboro
#dcdcdc
#dcdcdc
rgb(220,220,220)
Lightgray
#d3d3d3
#d3d3d3
rgb(211,211,211)
Silver
#c0c0c0
#c0c0c0
rgb(192,192,192)
Darkgray
#a9a9a9
#a9a9a9
rgb(169,169,169)
Gray
#808080
#808080
rgb(128,128,128)
Dimgrey
#696969
#696969
rgb(105,105,105)
Lightslategray
#778899
#778899
rgb(119,136,153)
Slategray
#708090
#708090
rgb(112,128,144)
Darkslategray
#2f4f4f
#2f4f4f
rgb(47,79,79)
Black
#000000
#8e8e93
rgb(0,0,0)
Decimal Red, Green, Blue, and Opacity Color Codes
ColorName
rgb(R,G,B)
a=1
a=0.9
a=0.8
a=0.7
a=0.6
a=0.5
a=0.4
a=0.3
a=0.2
a=0.1
a=0
Black
rgb(0,0,0)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Navy
rgb(0,0,128)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Blue
rgb(0,0,255)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Green
rgb(0,128,0)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Teal
rgb(0,128,128)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Lime
rgb(0,255,0)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Aqua
rgb(0,255,255)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Maroon
rgb(128,0,0)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Purple
rgb(128,0,128)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Olive
rgb(128,128,0)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Gray
rgb(128,128,128)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Silver
rgb(192,192,192)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Red
rgb(255,0,0)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Fuchsia
rgb(255,0,255)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
Yellow
rgb(255,255,0)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
White
rgb(255,255,255)
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
TEXT
CSS3 BOX MODEL
BORDER
border-style
border-style 프로퍼티는 테두리 선의 스타일을 지정한다.
border-style: dashed; border-style: dotted solid; border-style: hidden double dashed; border-style: none
solid dotted dashed;
border-color 프로퍼티는 테두리의 색상을 지정한다. 프로퍼티 값의 갯수에 따라 4개 방향(top, right, left, bottom)에 대하여 지정이 가능하다.
border-color 프로퍼티는 border-style과 함께 사용하지 않으면 적용되지 않는다.
HEX,rgb(),colorname border-bottom-color:#aaa; border-color: red; border-color: red green blue yellow;
border-radius
border-radius 프로퍼티는 테두리 모서리를 둥글게 표현하도록 지정한다. 프로퍼티 값은 길이를 나타내는 단위(px, em 등)와 %를 사용한다. 각각의 모서리에 border-radius 프로퍼티를
개별적으로 지정할 수도 있고 4개의 모서리를 short-hand로 한번에 지정할 수도 있다.
border 프로퍼티는 border-width, border-style, border-color를 한번에 설정하기 위한 shorthand 프로퍼티이다.
border: 5px solid red;
box-sizing 프로퍼티
box-sizing 프로퍼티는 width, height 프로퍼티의 대상 영역을 변경할 수 있다.
box-sizing 프로퍼티의 기본값은 content-box이다. 이는 width, height 프로퍼티의 대상 영역이 content 영역을 의미한다. box-sizing 프로퍼티의 값을 border-box로
지정하면 마진을 제외한 박스 모델 전체를 width, height 프로퍼티의 대상 영역으로 지정할 수 있어서 CSS Layout을 직관적으로 사용할 수 있게 한다.
div,h1 ~ h6,p,ol,ul,li,hr,table,form block 특성을 가지는 요소(block 레벨 요소 또는 block 요소)는 아래와 같은 특징을 갖는다.
항상 새로운 라인에서 시작한다. 화면 크기 전체의 가로폭을 차지한다. (width: 100%) width, height, margin, padding 프로퍼티 지정이 가능하다.
block 레벨 요소 내에 inline 레벨 요소를 포함할 수 있다.
inline 레벨 요소
span,a,strong,img,br,input,select,textarea,button inline 특성을 가지는 요소(inline 레벨 요소 또는 inline 요소)는 아래와 같은 특징을
갖는다.
새로운 라인에서 시작하지 않으며 문장의 중간에 들어갈 수 있다. 즉, 줄을 바꾸지 않고 다른 요소와 함께 한 행에 위치한다.
content의 너비만큼 가로폭을 차지한다.
width, height, margin-top, margin-bottom 프로퍼티를 지정할 수 없다.
상, 하 여백은 line-height로 지정한다.
inline 레벨 요소 뒤에 공백(엔터, 스페이스 등)이 있는 경우, 정의하지 않은 space(4px)가 자동 지정된다.
inline 레벨 요소 내에 block 레벨 요소를 포함할 수 없다. inline 레벨 요소는 일반적으로 block 레벨 요소에 포함되어 사용된다.
inline-block 레벨 요소
block과 inline 레벨 요소의 특징을 모두 갖는다. inline 레벨 요소와 같이 한 줄에 표현되면서 width, height, margin 프로퍼티를 모두 지정할 수 있다.
기본적으로 inline 레벨 요소와 흡사하게 줄을 바꾸지 않고 다른 요소와 함께 한 행에 위치시킬 수 있다.
block 레벨 요소처럼 width, height, margin, padding 프로퍼티를 모두 정의할 수 있다. 상, 하 여백을 margin과 line-height 두가지 프로퍼티 모두를 통해 제어할 수
있다.
content의 너비만큼 가로폭을 차지한다.
inline-block 레벨 요소 뒤에 공백(엔터, 스페이스 등)이 있는 경우, 정의하지 않은 space(4px)가 자동 지정된다. 이것을 회피 방법은 Fighting the Space Between
Inline Block Elements를 참조하기 바란다.
div,h1 ~ h6,p,ol,ul,li,hr,table,form 은 block 속성을 가지고,
span,a,strong,img,br,input,select,textarea,button 은 inline 속성을 가진다.
inline-block 사이에 공백이 생기게 되는데, parent 태그에 font-size: 0를 적용하면 해결된다.
inline-block 끼리 높이가 안맞을 때 상위 공백이 생기게 되는데 vertical-align: top을 적용하면 해결할 수 있다.
visibility 프로퍼티
visible
해당 요소를 보이게 한다 (기본값)
hidden
해당 요소를 보이지 않게 한다. display: none;은 해당 요소의 공간까지 사라지게 하지만 visibility: hidden;은 해당 요소의 공간은 사라지지 않고 남아있게 된다.
collapse
table 요소에 사용하며 행이나 열을 보이지 않게 한다.
none
table 요소의 row나 column을 보이지 않게 한다. IE, 파이어폭스에서만 동작하며 크롬에서는 hidden과 동일하게 동작한다.
opacity 프로퍼티
opacity 프로퍼티는 요소의 투명도를 정의한다. 0.0 ~ 1.0의 값을 입력하며 0.0은 투명, 1.0은 불투명을 의미한다.
배경 이미지의 반복을 지정한다. 수직, 수평 또는 수직과 수평 모두의 반복을 지정할 수 있다.
설정된 이미지의 크기가 화면보다 작으면 자동으로 이미지가 반복 출력되어 화면을 채우게 된다. 이것은 background-repeat 프로퍼티의 기본값이 repeat이기 때문이다.
x축으로만 배경 이미지를 반복할 경우, background-repeat 프로퍼티값에 repeat-x, y축으로만 배경 이미지를 반복할 경우, repeat-y를 설정한다.
배경 이미지의 사이즈를 지정한다. 배경 이미지의 고유 비율을 유지하기 때문에 설정에 따라 이미지의 일부가 보이지 않을 수 있다.
프로퍼티값은 px, %, cover, contain 등을 사용한다. 배경이미지의 width, height를 모두 설정할 수 있다. 이때 첫번째 값은 width, 두번째 값은 height를
의미한다.하나의 값만을 지정한 경우, 지정한 값은 width를 의미하게 되며 height는 auto로 지정된다.
px값 지정 : 배경이미지 크기가 지정된 px값 그대로 설정된다. 첫번째 값은 width, 두번째 값은 height를 의미한다.
.bg {background-size: 700px 500px;}
%값 지정 : 배경이미지 크기가 지정된 %값에 비례하여 설정된다. 첫번째 값은 width, 두번째 값은 height를 의미한다.
.bg {background-size: 100% 100%;}
cover 지정 : 배경이미지의 크기 비율을 유지한 상태에서 부모 요소의 width, height 중 큰값에 배경이미지를 맞춘다. 따라서 이미지의 일부가 보이지 않을 수 있다.
.bg {background-size: cover;}
contain 지정 : 배경이미지의 크기 비율을 유지한 상태에서 부모 요소의 영역에 배경이미지가 보이지 않는 부분없이 전체가 들어갈 수 있도록 이미지 스케일을 조정한다.
.bg {background-size: contain;}
background-attachment 프로퍼티
일반적으로 화면을 스크롤하면 배경 이미지도 함께 스크롤된다. 화면이 스크롤되더라도 배경이미지는 스크롤되지 않고 고정되어 있게 하려면 background-attachment 프로퍼티에 fixed 키워드를
지정한다.
scroll | local | fixed | inherit
/* page-wrap 보다 bg-wrap이 작은 경우, page-wrap이 가리는 문제를 해결 */
.bg-wrap { min-height: 600px;height: 100%;background-size: cover;background-position: center;background-repeat:
no-repeat;overflow: auto;
} /* or padding: 0.1px; */ .parallax { /* parallax scrolling effect */
background-image: url("http://poiemaweb.com/img/bg/stock-photo-125979219.jpg");background-attachment: fixed;
} .normal {background-image: url("http://poiemaweb.com/img/bg/stock-photo-155153867.jpg");}
#page-wrap { width: 400px;margin: 50px auto;padding: 30px;background: white;box-shadow: 0 0 20px black;font:
15px/2 Georgia, Serif;
} /* size/line-height | family */
마진 상쇄 문제 해결을 위한
코드 https://developer.mozilla.org/ko/docs/Web/CSS/CSS_Box_Model/Mastering_margin_collapsing
background-position 프로퍼티
일반적으로 background-image는 좌상단부터 이미지를 출력한다. 이때 background-position 프로퍼티를 사용하면 이미지의 좌표(xpos, ypos)를 지정 할 수
있다. 기본값은 background-position: 0% 0%;로 배경이미지는 우측 상단에 위치하게 된다.
background-color, background-image, background-repeat, background-position를 한번에 정의하기 위한 Shorthand
Syntax이다. background: color || image || repeat || attachment || position
/* background: color || image || repeat || attachment || position */
div {background: #FFEE99 url("http://poiemaweb.com/img/bg/dot.png") no-repeat center;width: 50vw;height: 300px;}
폰트를 지정한다. 컴퓨터에 해당 폰트가 설치되어 있지 않으면 적용되지 않는다.
폰트는 여러 개를 동시에 지정이 가능하다. 첫번째 지정한 폰트가 클라이언트 컴퓨터에 설치되어 있지 않은 경우, 다음에 지정된 폰트를 적용한다. 따라서 마지막에 지정하는 폰트는 대부분의 OS에 기본적으로
설치되어 있는 generic-family 폰트(Serif, Sans-serif, Mono space)를 지정하는 것이 일반적이다.
white space는 공백(space), 들여쓰기(tab), 줄바꿈(line break)을 의미한다. html은 기본적으로 연속된 공백(space), 들여쓰기(tab)는 1번만 실행되며 줄바꿈(line
break)은 무시된다. 또한 텍스트는 부모의 가로 영역을 벗어나지 않고 자동 줄바꿈(wrap)된다. white-space 프로퍼티는 이러한 기본 동작을 제어하기 위한 프로퍼티이다.
부모 영역을 벗어난 wrapping(자동줄바꿈)이 되지 않은 텍스트의 처리 방법을 정의한다. 이 프로퍼티를 사용하기 위해서는 아래의 조건이 필요하다. overflow 프로퍼티에 반드시
"visible" 이외의 값이 지정되어 있어야 한다.
width 프로퍼티가 지정되어 있어야 한다. 이를 위해 필요할 경우 block 레벨 요소로 변경하여야한다.
자동 줄바꿈을 방지하려면 white-space 프로퍼티를 nowrap으로 설정한다.
div { width: 150px; /* width가 지정되어 있어야 한다. */ white-space: nowrap; /* 자동 줄바꿈을 방지 */
overflow: hidden; /* 반드시 "visible" 이외의 값이 지정되어 있어야 한다. */ }
.clip { text-overflow: clip; } /* 영역을 벗어난 부분을 표시하지 않는다. (기본값) */
.ellipsis { text-overflow: ellipsis; } /* 영역을 벗어난 부분을 잘라내어 보이지 않게 하고 말줄임표(…)를 표시한다. */
.string { text-overflow: '☺'; } /* only Firefox(9.0~) */
word-wrap 프로퍼티
한 단어의 길이가 길어서 부모 영역을 벗어난 텍스트의 처리 방법을 정의한다. link 등을 표기할 때(e.g. http://poiemaweb.com/css3-font-text) 그 길이가 매우 길어지는데
이 프로퍼티를 사용하지 않으면 부모 영역을 넘어가게 된다.
.word-wrap { word-wrap: break-word; }
word-break 프로퍼티
한 단어의 길이가 길어서 부모 영역을 벗어난 텍스트의 처리 방법을 정의한다.
word-wrap 프로퍼티는 단어를 어느 정도는 고려하여 개행하지만(.,- 등을 고려한다) word-break: break-all;는 단어를 고려하지 않고 부모 영역에 맞추어 강제 개행한다.
relative, absolute, fixed 프로퍼티가 선언되어 있는 부모 또는 조상 요소를 기준으로 좌표 프로퍼티(top, bottom, left, right)만큼 이동한다. absolute
선언 시, block 레벨 요소의 width는 inline 요소와 같이 content에 맞게 변화되므로 적절한 width를 지정하여야 한다.
relative 프로퍼티는 기본 위치(static으로 지정되었을 때의 위치)를 기준으로 좌표 프로퍼티(top, bottom, left, right)을 사용하여 위치를 이동시킨다.
absolute 프로퍼티는 부모에 static 이외의 position 프로퍼티가 지정되어 있을 경우에만 부모를 기준으로 위치하게 된다.
부모 요소와 관계없이 브라우저의 viewport를 기준으로 좌표프로퍼티(top, bottom, left, right)을 사용하여 위치를 이동시킨다.
스크롤이 되더라도 화면에서 사라지지 않고 항상 같은 곳에 위치한다.
fixed 프로퍼티 선언 시, block 요소의 width는 inline 요소와 같이 content에 맞게 변화되므로 적절한 width를 지정하여야 한다.
overflow 프로퍼티는 자식 요소가 부모 요소의 영역를 벗어났을 때 처리 방법을 정의한다.
visible : 영역을 벗어난 부분을 표시한다. (기본값)
hidden : 영역을 벗어난 부분을 잘라내어 보이지 않게 한다.
scroll : 영역을 벗어난 부분이 없어도 스크롤 표시한다.(현재 대부분 브라우저는 auto과 동일하게 작동한다)
auto : 영역을 벗어난 부분이 있을때만 스크롤 표시한다.
float 프로퍼티가 선언된 요소와 float 프로퍼티가 선언되지 않은 요소간 margin이 사라지는 문제
두 요소는 차례대로 정렬된 것처럼 보이지만 사실은 float 프로퍼티가 선언된 요소가 다음 요소 위에 떠 있는(부유하고 있는) 상태이다.
이것은 두번째 요소에 float 프로퍼티를 선언하지 않았기 때문에 발생하는 박스 모델 상의 문제이다.
이 문제를 해결하는 가장 쉬운 방법은 float 프로퍼티를 선언하지 않은 요소(.d2)에 overflow: hidden 프로퍼티를 선언하는 것이다.
overflow: hidden 프로퍼티는 자식 요소가 부모 요소의 영역보다 클 경우 넘치는 부분을 안보이게 해주는 역할을 하는데 여기서는 float 프로퍼티가 없어서 제대로 표현되지 못하는 요소를 제대로
출력해준다.
.d2 {background: orange;}
box d1
box d2
.d2 {overflow: hidden;background: orange;}
box d1
box d2
float 프로퍼티가 선언된 자식 요소를 포함하는 부모 요소의 높이가 정상적으로 반영되지 않는 문제
float 프로퍼티가 선언된 두개의 자식 요소를 포함하는 부모 요소의 높이가 정상적인 값을 가지지 못하는 문제가 발생한다.
float 요소는 일반적인 흐름 상에 존재하지 않기 때문에 float 요소의 높이를 알 수 없기 때문인데 이 문제는 부모 요소 이후에 위치하는 요소의 정렬에 문제를 발생시킨다.
head 요소 내의 style 요소 head 요소 내의 style 요소 내의 @import 문 <link> 로 연결된 CSS 파일
<link> 로 연결된 CSS 파일 내의 @import 문 브라우저 디폴트 스타일시트
명시도 대상을 명확하게 특정할수록 명시도가 높아지고 우선순위가 높아진다.
!important > 인라인 스타일 > 아이디 선택자 > 클래스/어트리뷰트/가상 선택자 > 태그 선택자 > 전체 선택자 > 상위 요소에 의해 상속된 속성
선언순서 선언된 순서에 따라 우선 순위가 적용된다. 즉, 나중에 선언된 스타일이 우선 적용된다.
CSS3 Vendor Prefix
CSS3 표준으로 확정되기 이전 또는 브라우저 개발사가 실험적으로 제공하는 기능을 사용하기 위해서는 벤더 프리픽스(Vendor Prefix)를 사용하여야 한다.
Can I use?에서 제공하는 브라우저별 CSS 지원 정보를 보면 텍스트와 요소의 선택을 방지하는 user-select 프로퍼티는 모든 브라우저에 벤더 프리픽스를 사용하여야 한다.
브라우저의 버전이 올라감에 따라 벤더 프리픽스를 사용하지 않아도 될 수 있다. 그러나 구형 브라우저를 지원하기 위하여 벤더 프리픽스를 사용하여야 할 필요가 있다.
많은 브라우저를 위한 벤더 프리픽스를 사용하는 것은 코드의 양을 늘게 하고 또한 브라우저는 거의 매달 업데이트가 이루어지고 있어 불필요한 벤더 프리픽스를 사용할 가능성이 크다. 사용하지 않아도 되는
벤더 프리픽스를 사용하는 것은 성능에도 영향을 주기 때문에 Prefix Free 라이브러리 를 사용하는 것은 매우 유용한 방법이다.
사용법은 매우 간단하다. Prefix Free 사이트에서 라이브러리를 다운로드하고 include 하기만 하면 이 후에는 벤더 프리픽스없이 모든 CSS를 사용할 수 있다.
http://leaverou.github.io/prefixfree/
<script src="prefixfree.min.js"></script>
IE or Edge : -ms- Chrome : -webkit- Firefox : -moz- Safari : -webkit- Opera : -o- iOS Safari :
-webkit-
Android Browser : -webkit- Chrome for Android : -webkit-
* { -webkit-user-select: none; /* Chrome all / Safari all */ -moz-user-select: none; /* Firefox all
*/ -ms-user-select: none; /* IE 10+ */
user-select: none; /* Likely future */ }
div {width: 100px;height: 100px;background: red;} div:hover {border-radius: 50%;background: blue;}
/* 트랜지션 효과: 모든 프로퍼티의 변화를 2초에 걸쳐 전환한다. */
div {width: 100px;height: 100px;background: red;transition: all 2s;}
div:hover {border-radius: 50%;background: blue;}
div {width: 100px;height: 100px;background: red;} /* hover on에서만 발동한다. */
div:hover {border-radius: 50%;background: blue;transition: all 2s;}
div {width: 100px;height: 100px;background: red;transition: all 2s;}
.hover {border-radius: 50%;background: blue;} <script> const elem = document.querySelector('div');
elem.addEventListener('mouseover', function () {this.classList.add('hover');});
elem.addEventListener('mouseleave', function () {this.classList.remove('hover');});
</script>
TRANSITION
transition-property
트랜지션의 대상이 되는 CSS 프로퍼티를 지정한다.
transition-duration
트랜지션이 일어나는 지속시간(duration)을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다.
transition-timing-function
트랜지션 효과를 위한 수치 함수를 지정한다.
transition-delay
프로퍼티가 변화한 시점과 트랜지션이 실제로 시작하는 사이에 대기하는 시간을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다.
transition
모든 트랜지션 프로퍼티를 한번에 지정한다. (shorthand syntax)
transition-property
transition-property 프로퍼티는 트랜지션의 대상이 되는 CSS 프로퍼티명을 지정한다.
지정하지 않는 경우 모든 프로퍼티가 트랜지션의 대상이 된다. 복수의 프로퍼티를 지정하는 경우 쉼표(,)로 구분한다.
transition-duration 프로퍼티는 트랜지션에 일어나는 지속시간(duration)을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다. 프로퍼티값을 지정하지 않을 경우 기본값 0s이 적용되어
어떠한 트랜지션 효과도 볼 수 없다.
div {width: 100px;height: 50px;color: white;background-color: red;margin-bottom: 10px;transition-property: width,
opacity;}
div {transition-duration: 0.5s;}
0.5s
div {transition-duration: 2s, 1s;}
2s, 1s
div {transition-duration: 5s, 2.5s;}
5s, 2.5s
transition-timing-function
ease
기본값. 느리게 시작하여 점점 빨라졌다가 느리지면서 종료한다.
div {transition-timing-function: ease;}
ease
linear
시작부터 종료까지 등속 운동을 한다.
div {transition-timing-function: linear;}
linear
ease-in
느리게 시작한 후 일정한 속도에 다다르면 그 상태로 등속 운동한다.
div {transition-timing-function: ease-in;}
ease-in
ease-out
일정한 속도의 등속으로 시작해서 점점 느려지면서 종료한다.
div {transition-timing-function: ease-out;}
ease-out
ease-in-out
ease와 비슷하게 느리게 시작하여 느리지면서 종료한다.
div {transition-timing-function: ease-in-out;}
ease-in-out
transition-delay
프로퍼티가 변화한 시점과 트랜지션이 실제로 시작하는 사이에 대기하는 시간을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다.
즉, transition-delay로 대기 사간을 지정하여 프로퍼티의 값이 변화하여도 즉시 트랜지션이 실행되지 않고, 일정 시간 대기한 후 트랜지션이 실행되도록 한다.
한 싸이클의 애니메이션에 소요되는 시간을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다. 0s
animation-timing-function
애니메이션 효과를 위한 타이밍 함수를 지정한다. ease
animation-delay
요소가 로드된 시점과 애니메이션이 실제로 시작하는 사이에 대기하는 시간을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다. 0s
animation-iteration-count
애니메이션 재생 횟수를 지정한다. 1
animation-direction
애니메이션이 종료된 이후 반복될 때 진행하는 방향을 지정한다. normal
animation-fill-mode
애니메이션 미실행 시(종료 또는 대기) 요소의 스타일을 지정한다.
animation-play-state
애니메이션 재생 상태(재생 또는 중지)를 지정한다. running
animation
모든 애니메이션 프로퍼티를 한번에 지정한다. (shorthand syntax)
Loader 1
loader 10
@keyframes
CSS 애니메이션과 트랜지션 방식의 주된 차이는 @keyframes rule에 있다. 이 rule을 사용하면 애니메이션의 흐름(sequence) 중의 여러 시점(breakpoint)에서 CSS
프로퍼티값을 지정할 수 있다.
animation-name
@keyframes 뒤에 애니메이션을 대표하는 임의의 이름를 부여하였다.
animation-duration
한 싸이클의 애니메이션에 소요되는 시간을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다.
animation-duration은 반드시 지정해야 한다. 지정하지 않는 경우 기본값 0s가 셋팅되어 어떠한 애니메이션도 실행되지 않는다.
animation-duration: .5s; animation-duration: 500ms;
animation-timing-function
애니메이션 효과를 위한 수치 함수를 지정한다.
수치 함수에 대한 설명은 트랜지션 transition-timing-function 프로퍼티를 참조하기 바란다.
animation-delay
요소가 로드된 시점과 애니메이션이 실제로 시작하는 사이에 대기하는 시간을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다.
animation-delay: 2s;
animation-iteration-count
애니메이션 주기의 재생 횟수를 지정한다. 기본값은 1이며 infinite로 무한반복 할 수 있다.
animation-iteration-count: 3;
animation-direction
애니메이션이 종료된 이후 반복될 때 진행하는 방향을 지정한다.
normal
기본값으로 from(0%)에서 to(100%) 방향으로 진행한다.
reverse
to에서 from 방향으로 진행한다.
alternate
홀수번째는 normal로, 짝수번째는 reverse로 진행한다.
alternate-reverse
홀수번째는 reverse로, 짝수번째는 normal로 진행한다.
animation-fill-mode
애니메이션 미실행 시(대기 또는 종료) 요소의 스타일을 지정한다.
none
대기
시작 프레임(from)에 설정한 스타일을 적용하지 않고 대기한다.
종료
애니메이션 실행 전 상태로 애니메이션 요소의 프로퍼티값을 되돌리고 종료한다.
forwards
대기
시작 프레임(from)에 설정한 스타일을 적용하지 않고 대기한다.
종료
종료 프레임(to)에 설정한 스타일을 적용하고 종료한다.
backwards
대기
시작 프레임(from)에 설정한 스타일을 적용하고 대기한다.
종료
애니메이션 실행 전 상태로 애니메이션 요소의 프로퍼티값을 되돌리고 종료한다.
both
대기
시작 프레임(from)에 설정한 스타일을 적용하고 대기한다.
종료
종료 프레임(to)에 설정한 스타일을 적용하고 종료한다.
animation-play-state
애니메이션 재생 상태(재생 또는 중지)를 지정한다. 기본값은 running이다.
animation
모든 애니메이션 프로퍼티를 한번에 지정한다. 값을 지정하지 않은 프로퍼티에는 기본값이 지정된다. 지정 방법은 다음과 같다.
animation: name duration timing-function delay iteration-count direction fill-mode play-state
animation-duration은 반드시 지정해야 한다. 지정하지 않는 경우 기본값 0s가 셋팅되어 어떠한 애니메이션도 실행되지 않는다. 기본값은 아래와 같다.
none 0 ease 0 1 normal none running
CSS3 Transform
2D 트랜스폼 (2D Transform)
2D 트랜스폼은 프로퍼티값으로 변환함수(transform function)를 사용한다. 변환함수는 다음과 같다.
translate(x,y)
요소의 위치를 X축으로 x만큼, Y축으로 y만큼 이동시킨다.
px, %, em 등
translateX(n)
요소의 위치를 X축으로 x만큼 이동시킨다.
px, %, em 등
translateY(n)
요소의 위치를 Y축으로 y만큼 이동시킨다.
px, %, em 등
scale(x,y)
요소의 크기를 X축으로 x배, Y축으로 y배 확대 또는 축소 시킨다.
0과 양수
scaleX(n)
요소의 크기를 X축으로 x배 확대 또는 축소 시킨다.
0과 양수
scaleY(n)
요소의 크기를 Y축으로 y배 확대 또는 축소 시킨다.
0과 양수
skew(x-angle,y-angle)
요소를 X축으로 x 각도만큼, Y축으로 y 각도만큼 기울인다.
+/- 각도(deg)
skewX(x-angle)
요소를 X축으로 x 각도만큼 기울인다.
+/- 각도(deg)
skewY(y-angle)
요소를 Y축으로 y 각도만큼 기울인다.
+/- 각도(deg)
rotate(angle)
요소를 angle만큼 회전시킨다.
+/- 각도(deg)
transform
변환함수를 프로퍼티값으로 쉼표없이 나열한다. 나열순서에 따라 차례대로 효과가 적용된다.
translate
scale
skew
rotate
complex
transform-origin
요소의 기본기준점을 설정할 때 사용된다. 기본기준점은 요소의 정중앙이다(50%,50%). 이동은 기준점을 변경하여도 일정 거리만큼 이동하므로 의미가 없다. 설정값으로 %,
px, top left, bottom right을 사용할 수 있다. 0, 0은 top left, 100% 100%는 bottom right과 같은 값이다.
scale1
scale2
scale3
translate
3D 트랜스폼 (3D Transform)
3D 트랜스폼은 프로퍼티값으로 변환함수(transform function)를 사용한다. 사용할 수 있는 변환함수는 다음과 같다.
translate3d(x,y,z)
요소의 위치를 X축으로 x만큼, Y축으로 y만큼 Z축으로 z만큼 이동시킨다.
px, %, em 등
translateX(n)
요소의 위치를 X축으로 x만큼 이동시킨다.
px, %, em 등
translateY(n)
요소의 위치를 Y축으로 y만큼 이동시킨다.
px, %, em 등
translateZ(n)
요소의 위치를 Z축으로 z만큼 이동시킨다.
px, %, em 등
scale3d(x,y)
요소의 크기를 X축으로 x배, Y축으로 y배, Z축으로 z배 확대 또는 축소 시킨다.
0과 양수
scaleX(n)
요소의 크기를 X축으로 x배 확대 또는 축소 시킨다.
0과 양수
scaleY(n)
요소의 크기를 Y축으로 y배 확대 또는 축소 시킨다.
0과 양수
scaleZ(n)
요소의 크기를 Z축으로 z배 확대 또는 축소 시킨다.
0과 양수
rotate3d(x,y,z)
요소를 X축으로 x각도, Y축으로 y각도, Z축으로 z각도 회전시킨다.
+/- 각도(deg)
rotateX(x)
요소를 X축으로 x각도 회전시킨다.
+/- 각도(deg)
rotateY(y)
요소를 Y축으로 y각도 회전시킨다.
+/- 각도(deg)
rotateZ(z)
요소를 Z축으로 z각도 회전시킨다.
+/- 각도(deg)
CSS3 Web Font
CDN(Content Delivery Network) 링크 방식
웹폰트를 사용하는 방법 중 가장 간단한 방법은 CDN 링크를 사용하는 것이다. 다음은 구글에서 제공하는 웹폰트를 사용하는 방법이다.
Google Font 에서 사용하고자 하는 웹폰트를 선택한다. 한글 웹페이지에 자주 사용되는 나눔고딕은 Google Font Early Access에서 찾을 수 있다.
구글이 제공하는 나눔 고딕, 나눔 명조, 나눔 붓, 나눔 펜 웹폰트 다운로드 하는 방법
https://www.cmsfactory.net/node/40025
https://github.com/typekit/webfontloader
https://hackya.com/kr/올바르게-웹폰트-로딩하기/
서버 폰트 로딩 방식
Google Font를 사용하기 위해 CDN 링크를 사용하는 방법은 간편한 방법이지만 로딩 속도가 느린 단점이 있다.
(로컬 폰트를 사용하는 것에 비해 느리다는 의미이다. 서버 폰트 로딩 방식보다는 빠를수 있다.)
여러 개의 폰트를 사용한다면 로딩에 더욱 시간이 걸릴 것이다. 또한 CDN 링크를 제공하지 않는 폰트는 사용할 방법이 없다.
이러한 단점을 보완한 방법이 서버 폰트 로딩 방식이다.
@font-face 규칙으로 폰트를 등록하고 font-family 프로퍼티로 폰트를 선택하여 사용할 수 있다.
/* IE 9~ & all browsers */
@font-face {font-family: myFontName;src: url("myFont.woff");}
* { font-family: myFontName, sans-serif; }
@font-face {
font-family:"Nanum Gothic";
src:url("NanumGothic.eot"); /* IE 9 호환성 보기 모드 대응 */
src:local("☺"), /* local font 사용 방지. 생략 가능 */
url("NanumGothic.eot?#iefix") format('embedded-opentype'), /* IE 6~8 */
url("NanumGothic.woff") format('woff'); /* 표준 브라우저 */
}
* { font-family: "Nanum Gothic", sans-serif; }
영문과 한글을 혼용하는 경우 먼저 영문 폰트, 그 다음 한글 폰트를 지정하여야 한다.
한글 폰트부터 지정하면 영문에도 한글 폰트가 지정된다.
font-family: 'Lora', 'KoPub Batang', 'Times New Roman', serif;
CSS3 Layout
Header & Navigation Bar
Navigation Bar는 기본적으로 링크들의 리스트이다. 따라서 ul, li tag를 이용하여 작성하는 것이 일반적이다.
다음은 최소한의 Reset CSS를 추가한 링크들의 리스트이다.
주의할 점은 직관적인 box model을 위해 box-sizing: border-box;을 사용했다는 것이다.
실제 웹사이트를 구축할 시에는 Reset CSS를 좀 더 정교하게 초기화할 필요가 있다.
Section & Aside
콘텐츠의 영역을 Section, 콘텐츠에 대한 Navigation item이나 부가 정보 영역을 Aside라 한다.
Section 영역은 다시 article 영역으로 구분할 수 있다.
이 두개의 영역은 float 프로퍼티를 사용하여 수평 정렬하는 것이 일반적이다.
header 요소 뒤에 aside, section, article을 포함하는 content-wrap 요소를 정의한다.
Footer
footer도 고정되어 있을 필요가 있지만 본문을 가리는 것은 곤란하다. 따라서 fixed 프로퍼티를 설정해서는 않된다.
fixed 프로퍼티는 스크롤이 되어도 언제나 그자리를 고수하기 때문이다.footer는 absolute 프로퍼티를 설정한다.
absolute를 사용하면 다른 요소가 먼저 위치를 점유하고 있어도 뒤로 밀리지 않고 덮어쓰게 된다. (이런 특성을 부유 또는 부유 객체라 한다)
CSS3 Responsive Web Design
Responsive Web Design 개요
사용자가 어떤 디바이스로 웹사이트를 방문할 지 알 수 없다.
데스크탑용, 테블릿용, 모바일용 웹사이트를 별도 구축할 수도 있지만 One Source Multi Use의 관점에서 올바른 해결책은 아니다.
반응형 웹디자인(Responsive Web Design)이다. 화면 해상도에 따라 가로폭이나 배치를 변경하여 가독성을 높이는 것이다.
즉, 하나의 웹사이트를 구축하여 다양한 디바이스의 화면 해상도에 최적화된 웹사이트를 제공하는 것이다.
Viewport Meta Tag
viewport란 웹페이지의 가시영역을 의미한다. viewport는 디바이스에 따라 차이가 있다.
viewport를 이용하여 디바이스의 특성과 디바이스의 화면 크기 등을 고려하여 각종 디바이스 사용자에게 최적화된 웹페이지를 제공할 수 있다.
meta tag는 브라우저 혹은 검색엔진최적화(SEO)를 위해 검색엔진에게 메타데이터를 전달하기 위해 사용된다.
viewport meta tag는 브라우저의 화면 설정과 관련된 정보를 제공한다.
meta tag에서는 px단위를 사용하며 단위 표현은 생략한다. 복수개의 프로퍼티를 사용할 때는 쉼표(,)로 구분한다.
일반적으로 viewport meta tag는 모바일 디바이스에서만 적용된다.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
width
viewport 너비(px). 기본값: 980px
width=240 width=device-width
height
viewport 높이(px)
height=800 width=device-height
initial-scale
viewport초기 배율
initial-scale=1.0
user-scale
확대 축소 가능 여부
user-scale=no
maximum-scale
viewport 최대 배율
maximum-scale=2.0
minimum-scale
viewport 최소 배율
minimum-scale=1.0
@media
반응형 웹디자인에 사용되는 핵심 기술은 @media이다.
@media을 사용하여 미디어 별로 style을 지정하는 것을 Media Query라 한다. 디바이스를 지정하는 것뿐만 아니라 디바이스의 크기나 비율까지 구분할 수 있다.
데스크탑은 언제나 가로 화면이기 때문에 device-width로 스마트폰의 해상도를 지정하지 않으면 데스크탑에서도 가로화면 시 style이 적용되는 문제가 발생한다.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
/* 세로 */ * { color: black; }
/* 가로 */ @media screen and (orientation: landscape) {{ color: blue; }}
/* Desktop의 화면은 가로화면(landscape)이므로 아래 rule이 적용된다. */
/* Landscape */ @media screen and (max-device-width: 760px) /* 디바이스가 모바일일때(device-width 0 ~ 768px) */
/* 가로 */ and (orientation: landscape) {* { color: blue; }}
</style>
Section & Aside & Footer
article을 2열로 배치하기 위해서 width 값을 지정하여야 한다. %로 width 값을 지정하여 viewport에 상대적인 너비를 갖도록 한다. 이때 margin도 %로 지정한다. 그리고 float:
left;를 지정하여 2열로 정렬되도록 한다.
Responsive Navigation Bar
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
/* Media Query */
/* for Desktop: 801px ~ */
@media screen and (max-width: 800px) {} /* for tablet: ~ 800px */
@media screen and (max-width: 480px) {} /* for smartphone: ~ 480px */
</style>
Responsive Navigation Bar - Tablet
데스크탑 layout에서 화면이 작아질 때 header navigation bar가 header 영역 아래로 내려오는 현상이 발생하였다. 이를 보완하기 위해 다음과 같이 태블릿에서의 layout을
정의한다. viewport width가 800px 이하가 되면 header 영역을 2단(logo영역과 navigation bar영역)으로 구분하기 위하여 header 영역의 높이를 현재(60px)의
2배로 넓힌다. 그리고 logo image과 navigation bar를 centering한다.
London is the capital city of England. It is the most populous city in the United Kingdom, with a
metropolitan area of over 13 million inhabitants.
Standing on the River Thames, London has been a major settlement for two millennia,its history going back
to its founding by the Romans, who named it Londinium.
London, also referred to as Greater London, is one of 9 regions of England and the top-level subdivision
covering most of the city's metropolis. The small ancient City of London at its core once comprised the whole
settlement, but as its urban area grew, the Corporation of London resisted attempts to amalgamate the city
with its suburbs, causing "London" to be defined in a number ways for different purposes.
Paris
London is the capital city of England. It is the most populous city in the United Kingdom, with a
metropolitan area of over 13 million inhabitants.
Standing on the River Thames, London has been a major settlement for two millennia,its history going back
to its founding by the Romans, who named it Londinium.
London, also referred to as Greater London, is one of 9 regions of England and the top-level subdivision
covering most of the city's metropolis. The small ancient City of London at its core once comprised the whole
settlement, but as its urban area grew, the Corporation of London resisted attempts to amalgamate the city
with its suburbs, causing "London" to be defined in a number ways for different purposes.
Tokyo
London is the capital city of England. It is the most populous city in the United Kingdom, with a
metropolitan area of over 13 million inhabitants.
Standing on the River Thames, London has been a major settlement for two millennia,its history going back
to its founding by the Romans, who named it Londinium.
London, also referred to as Greater London, is one of 9 regions of England and the top-level subdivision
covering most of the city's metropolis. The small ancient City of London at its core once comprised the whole
settlement, but as its urban area grew, the Corporation of London resisted attempts to amalgamate the city
with its suburbs, causing "London" to be defined in a number ways for different purposes.
Newyork
London is the capital city of England. It is the most populous city in the United Kingdom, with a
metropolitan area of over 13 million inhabitants.
Standing on the River Thames, London has been a major settlement for two millennia,its history going back
to its founding by the Romans, who named it Londinium.
London, also referred to as Greater London, is one of 9 regions of England and the top-level subdivision
covering most of the city's metropolis. The small ancient City of London at its core once comprised the whole
settlement, but as its urban area grew, the Corporation of London resisted attempts to amalgamate the city
with its suburbs, causing "London" to be defined in a number ways for different purposes.