CSS 02/23
CSS
텍스트 데코레이션
.a1 { text-decoration: none; } 텍스트에 선을 없앰
.a2 { text-decoration: overline; } /* 텍스트 위쪽에 선이 그려짐 */
.a3 { text-decoration: underline; } /* 텍스트의 밑줄 */
.a4 { text-decoration: line-through; } /* 텍스트의 상쇄선 */
블록 요소를 인라인요소로 만들기
<ul>
<li><img src="image/ub_menu_navi_01.jpg"></li>
<li><img src="image/ub_menu_navi_02.jpg"></li>
<li><img src="image/ub_menu_navi_03.jpg"></li>
<li><img src="image/ub_menu_navi_04.jpg"></li>
<li><img src="image/ub_menu_navi_05.jpg"></li>
</ul>
li { list-style: none; // 리스트의 점을 제거
display: inline; } // 블록요소인 li를 인라인요소로 바꾸어 웹 홈페이지에 세로정렬이 아닌 가로정렬이 됨
OverFlow
글자의 내용이 지정한 너비와 높이를 초과하여 테두리를 벗어나는 경우 사용하는 속성
p { border : 1px solid black;
padding : 5px;
width: 150px;
height: 50px; }
.a1 { overflow: hidden; } /* 공간을 초과하면 공간에 맞게 짤림 */ /* 꼭 알아 놓기 */
.a2 { overflow: scroll; } /* 내용이 초과하는것과 별개로 무조건 스크롤을 보여주는 속성 */
.a3 { overflow: auto; } /* 내용이 넘칠때만 보여주는 스크롤 */
.a4 { overflow: visible; } /* 넘치는 내용을 다 표시함(기본값) */
.a5 { overflow: scroll; } /* 내용이 초과하는것과 별개로 무조건 스크롤을 보여주는 속성 */
qwelkjqwlrkjqlwrkjqlwrkjqkrj;qwrkjajqwrkjhqwkrhqlkwrjhlqwkrjhqlkwjr <!-- 영문은 스페이스바가 없다면 자동 줄바꿈이 없다 가로로 튀어나감 -->
쨍쨍한 햇볕이나 시우너한 비 눈보라도 철길에서 만나는 반가운 친구들 <!-- 한글은 자동줄바꿈이 일어나 세로로 튀어나감 -->
가상 클래스 를 사용할때는 태그뒤에 : 사용
p:first-child {color: blue } /* 각각의 영역에서 p태그중 가장 첫번째 태그를 접근하는 가상 클래스(first child) : 을 사용함 */
p:last-child { color: red } /* 각각의 영역에서 p태그중 가장 마지막 태그를 접근하는 가상 클래스(last child) : 을 사용함 */
특정한 위치의 속성을 변경하고 싶을때 사용하는 가상 클래스(pseudo 클래스)
li { display: inline; //블록요소를 인라인 요소로 ( 가로 정렬됨 )
list-style: none; // 리스트의 점을제거
font-size: 50px; } // 텍스트 글자의 크기를 50픽셀로 지정
li:nth-child(odd) { color: red; } /* 홀수위치의 태그의 속성 변경 */
li:nth-child(even) { color: green; } /* 짝수 위치의 태그의 속성 변경*/
li:nth-child(4n) { background: yellow; } /* 4의 배수 위치 태그의 속성 변경*/
li:nth-child(6) { color: black ;
background: aqua;} /* 6번째 위치의 태그에 접근 */
링크(a태그)의 가상 클래스
a { text-decoration: none; color: gray; }
a:visited {color: purple;} /* 잘 사용하지 않음 방문한 기록이 있으면 바뀜 */
a:hover { color: orange; /* 마우스 오버 감지 */
text-decoration: underline;}
a:active { color: red; } /* 마우스 클릭 감지
선언순서 중요 ( visited -> hover -> active 이런 순서로 선언해야 감지를 함 )*/
position 및 z-index
*{ margin: 0; padding: 0;} /* (* = 전체 태그를 접근) 전체태그의 마진과 패딩을 0으로 지정
p { border: 1px solid black;
width: 50px;
padding: 50px;
position: absolute;} /* 태그나 이미지등 브라우저 기본 절대값 (0,0) 으로 위치 변경 */ /* left와 top,right,bottom을 사용하기위해 무조건 속성을 주어야함 */
.box1{ background: yellow; left: 100px; top: 100px;
z-index: 3;} /* z-index = 겹치는 부분의 순서를 지정해줌 3번째*/
.box2{ background: orange; left: 120px; top: 120px;
z-index: 2;} /* z-index = 겹치는 부분의 순서를 지정해줌 2번째*/
.box3{ background: aqua; left: 140px; top: 140px;
z-index: 1;} /* z-index = 겹치는 부분의 순서를 지정해줌 첫번째*/
float(왼쪽,오른쪽 정렬)
블록요소의 정렬을 왼쪽 오른쪽 정렬을 위해 사용
* { margin: 0; padding: 0;}
#container { width: 500px;
margin: 10px auto;
border : 5px solid #caa;
padding: 10px;
background: #fdd;
overflow: hidden;} /* 자식이 float속성을 가지고 있다면 부모의 태그는 무조건 overflow: hidden을
가지고 있어야한다. */ /* 자식의 float을 해제한다 */
h1 { text-align: center; }
.greentea { width: 200px;
padding: 15px;
background: #ba7;
height: 100px;
color: white;
float: left;}
.coffee { width: 200px;
height: 100px;
padding: 15px;
background: #dda;
float: right;} /* 중앙정렬은 없으며 left right의 속성만 존재한다. */
/* 블록요소를 인라인요소처럼 나열하며 사용하고 싶을때 display보다 float을 더 많이 사용하며 부모는 overflow: hidden을 가지고있어야 한다. */
float 정렬을 통한 layout
* {margin: 0; padding: 0}
#wrap { width: 650px;
margin: 0 auto;
border: 5px solid #f00;
background: black;}
#header { background: #09f;
text-align: center;
font: bold 20px;
margin-bottom: 10px;
padding: 10px 0;
color: white;}
#content { background: #ccc;
margin-bottom: 10px;
overflow: hidden;}
.left { float: left;
width: 180px;
height: 250px;
padding: 10px;
background: #fcf; }
.center { float: left;
width: 180px;
height: 200px;
padding: 10px;
background: #aaf;
margin-left: 25px; }
.right { float: right;
width: 180px;
height: 250px;
padding: 10px;
background: white; }
#footer{ background: #09f;
text-align: center;
padding: 10px 0;
color: #fff; }
외부 스타일 시트
<title>외부 스타일시트</title>
<!-- 외부에 미리 만들어둔 css를 참조하는 개념을 외부 스타일시트 라고 한다 -->
<link rel="stylesheet" href="CSS/reset.css">
<style>
/* 내부 스타일 시트 */
p {color: red;}
table { border-collapse: collapse; /* 테이블의 border를 한줄로 표기한다 */
width: 200px;}
</style>
reset.css 파일 코드
@charset "UTF-8";
* {margin: 0; padding: 0 }
a {text-decoration: none;}
li {list-style: none;}
position layout CSS 코드 분석
<link rel="stylesheet" href="CSS/reset.css"> // link태그를 통해 CSS/reset.css 의 css파일을 참조한다. // 외부 스타일시트
<style> // 내부 스타일 시트
#header {width: 1000px; //너비를 1000픽셀로 지정
height: 80px; // 높이를 80픽셀로 지정
margin: 10px auto; // 상하는 10의 마진으로 설정 / 좌우의 마진은 auto속성으로 자동으로 가운데 정렬을 함.
border: 1px solid red; // 테두리는 1픽셀 선은 기본선 테두리색은 빨간색으로 지정
position: relative;} /* absolute 속성을 가진 자식을 내 자식으로 인지하도록 하는 코드 */
.aa { margin: 10px 0;} 바깥쪽 여백을 상하에는 10px 좌우에는 0으로 지정해줌
ul {overflow : auto;} // 부모클래스가 자식클래스의 float 속성을 위해 overflow:hidden의 속성을 가진것
li { float: left;} // 블록요소 li를 왼쪽 에서부터 가로로 정렬 해줌
p:last-child { position: absolute; right: 10px; top: 5px; } // p태그중 가장 마지막 태그에 position:apsolute 권한을 주고 오른쪽끝에서 부터 10px 떨어진곳, 위쪽에서 부터 5px떨어진 곳으로 위치 설정
.a1{position: absolute; left: 350px; top: 10px; }
.a2{position: absolute; left: 225px; top: 40px; } /* absolute 원하는곳으로 좌표를 통해 자리를 잡을수 있다 position 부모는 position의 relative 속성을 가지고 있어야 한다. */
</style>
// 짝으로 이루어져야 하는 float 과 position의 태그들
float속성은 블록태그를 왼쪽과 오른쪽으로 (가운데는 없음) 정렬하기 위해 사용하는데 자식의 태그가 float속성을 가지면 반드시 부모의 태그에 overflow 속성 중 hidden 이나 auto 속성을 반드시 설정 해야한다. 부모가 overflow의 속성이 없다면 float의 속성을 가진 자식은 붕 뜨게 화면에 나타나며 부모의 overflow의 속성에 hidden을 추가한다면 부모의 테두리가 감싸안게 된다. 위의 코드에선 ul의 자식인 li전체에 float을 주었기때문에 ul의 속성이 overflow: hidden을 가지고 있는것이다.
position의 태그는 태그나 이미지를 코딩하는 사람이 직접 위치를 픽셀로 지정하기 위해 사용하는 속성으로 자식이 position:absolute; 속성을 가지면 사용자가 right, left, top, bottom 의 속성에 픽셀값을 주고 원하는 위치로 지정할수 있다. 여기서 주의할 점이 부모의 테두리 안에서 지정하기 위해선 부모 태그가 반드시 position:relative; 를 가지고 있어야 만이 자식의 태그가 부모의 테두리 안에서만 위치를 지정할수 있다. 그렇지 않으면 브라우저 화면에서의 위치로 이동하게 된다.
부모태그가 position:relative를 가지고 있다면 자식의 픽셀은 부모의 테두리 0,0의 값에서 시작한다. 반드시 자식클래스도 position:absolute 속성을 가져야만 위치를 지정받을 권한이 생긴다.