속성 선택자 : 특정한 요소를 가지는 요소를 선택한다. h1[title] {color:blue;}
CSS 삽입위치
외부 스타일 시트 : HTML외부에 작성
내부 스타일 시트 : head영역안에 style영역에 코드를 작성
인라인 스타일 시트 : 요소안에 스타일을 지정한다.
다중 스타일 시트 : 요소가 충돌나는 상황에서는 우선순위가 존재한다.
인라인
외부스타일
내부
CSS속성
color : 텍스트 색상
자주쓰는것들은 이름으로 표현된다. “red”
16진수 ##FF0000
10진수는 rgb함수로 호출(255,0,0)
퍼센트로 표현(100%,0,0)
font-weight (스네이크표기법) : 볼드체 설정
padding : 요소의 가장자리와 내용간의 간격
font-size : 폰트의 크기
border : 요소를 감싸는 경계선
font-style : 이탤릭체 설정
text-align : 텍스트 정렬(가로축 정렬만된다. ) → 세로 정렬은 단순하지 않다…
list-style : 리스트 스타일
폰트
폰트의 단위 : 키워드, em (배수)
텍스트
영어는 띄어쓰기 없으면 엔터 적용이 안됨
마진과 패딩
시계방향으로 돌림
수평정렬
인라인요소, 블럭요소의 정렬이 다르다.
블럭 : text-align
인라인 : layout-gravity와 같은 느낌
배경설정
repeat과 사이즈 설정도 가능
블럭요소일때
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>박스 모델(요소의 크기 및 배경)</title>
<style>
p.aa{
/* 경계선 */
border-style: solid;
border-top-style: dotted;
border-width: thin;
border-width: 2px;
border-bottom-width: 8px;
border-color: red;
border-right-color: blue;
border-radius: 20px;
border-bottom-left-radius: 0px;
border-top-right-radius: 0px;
/* 경계선을 이미지가 보일 정도의 두께로 설정 */
border: 30px solid transparent;
/* 경계선 이미지 */
border-image-source: url(./image/border.png);
border-image-slice: 30 30; /* 높이 너비 : 기본 스트레치 모드이다*/
border-image-repeat: round;
/* 요소의 크기 */
/* 나를 감싸는 부모의 크기를 고려하여 작성해야한다. */
width: 70%;
height: 300px;
/* 요소의 콘텐츠가 아니라 요소 자체를 가운데 정렬 */
margin-left: auto;
margin-right: auto;
}
/* 선택자 그룹으로 묶어서 100% 주자 */
html, body{height: 100%;}
</style>
</head>
<body>
<!-- 경계선 border / 요소의 크기 / 가운데 정렬 -->
<!-- html, body의 높이가 wrap이다. 부모 기준으로 퍼센트를 먹는다. -->
<p class="aa">
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dolore est dicta aut alias omnis exercitationem, rem, laborum autem quo, eligendi maiores. Quisquam vero repellat iste nesciunt animi repellendus tenetur molestiae?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nulla omnis perspiciatis asperiores quisquam. Enim, architecto maxime, eaque natus, praesentium sint mollitia quos dolor nisi nobis eius? Laborum obcaecati iste sunt.
</p>
</body>
</html>
테이블의 특이한 점
제일 특이한거 : 직접 요소를 만들지 않았지만 테이블에 숨어있는 요소가 존재 **>는 자식 **중간에 진짜 아빠가 숨어있다. table Body **table은 사실 자식을 3명만 가질수있다. table header,table body,table footer **table body는 무조건 만들어진다. 나머지는 안만들어짐
단점 : CSS 코드를 봐야 화면을 예측가능 - 불편하다.
DOM (Document Object Model) Tree
테이블의 특이한 점
제일 특이한거 : 직접 요소를 만들지 않았지만 테이블에 숨어있는 요소가 존재 **>는 자식 **중간에 진짜 아빠가 숨어있다. table Body **table은 사실 자식을 3명만 가질수있다. table header,table body,table footer **table body는 무조건 만들어진다. 나머지는 안만들어짐
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
<title>CSS 기초문법</title>
<!-- 스타일 작성하는 영역 -->
<style>
/* 이 영역안에서는 CSS문법 체계를 따름 */
/* 기본 문법 - 선택자{ 속성 : 값; } */
/* body의 요소를 찾는 선택자의 종류*/
/* 1. 타입(요소)선택자 */
h2{color: red;}
p{color: blue; font-family: serif;}
/* 2. 전체선택자 : 선택자 우선순위로 요소선택자가 가장 높다. 써져있는 순서가중요한게 아님. (똑같은 속성이라면 마지막게 적용.)*/
<!-- 1. 외부 스타일 시트 : 별도의 CSS파일 만들기, 파일명도 똑같이 쓰는게 보기 좋다. -->
<!-- 내가 연결하고자하는건 stylesheet라는 뜻 -->
<linkrel="stylesheet"href="./02_ex.css">
<!-- 2. 내부 스타일 시트 : 가급적 헤드 영역에다가 기재한다. 외부와 내부는 우선순위 차이가 없다. -->
<style>
p{color: red;}
</style>
<!-- 3. 인라인 스타일 시트 : 요소 안에 쓴다. 우선순위가 가장 높다.
순서상관없이 최종적으로 적용된다. -->
</head>
<body>
<pstyle="color: green;">Hello world</p>
<!-- 내부스타일시트는 문서 어디서든 작성 가능함. 요소 그리는거 다음에 스타일적용. -->
<style>
p{color: blueviolet;}
</style>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Font & Text</title>
<style>
/* 폰트의 글꼴 지정 */
p{font-family: "Blippo Blk BT",sans-serif;}
p{font-family: "휴먼매직체",sans-serif;}
p{font-family: monospace;}
/* 모든 컴퓨터에서 동일한 폰트로 보여지려면 */
/* 웹폰트 사용 : 개발자의 커스텀 폰트 지정 */
/* 경로는 무조건 url 함수로 쓴다 */
@font-face{
font-family: "MyFont";
src: url(./font/kmi_bold.ttf);
}
p{font-family: "Myfont",sans-serif;}
/* 폰트의 크기 */
/* 키워드를 이용하는 방법 */
p{font-size: small;}
/* 수치값을 쓰는 경우 */
p{font-size: 16px;}
/* 권장사이즈 : 비율을 이용한 사이즈 1.5배(권장) */
p{font-size: 2em;}
/* bold, normal */
p{font-weight: bold;}
/* italic, normal */
p{font-style: italic;}
/* 폰트속성 4개를 한번에 축약형으로 설정 */
/* 순서가 정해짐 : [weight/style,size,family] */
p{font: bold italic 200% "Myfont","휴먼옛체",serif;}
/* 텍스트에 관련된 속성들 */
/* 텍스트 정렬 */
p{text-align: center;}
p{text-align: right;}
p{text-align: justify;}
/* 텍스트 변환[대소문자 변환] */
p{text-transform: uppercase;}
p{text-transform: lowercase;}
p{text-transform: capitalize;}
/* 텍스트 선긋기 */
p{text-decoration: overline;}
p{text-decoration: underline;}
p{text-decoration: line-through;}
p{text-decoration: none;}
/* 텍스트 그림자 */
p{text-shadow: 5px 3px 5px red;}
/* 워드 랩 : .은 class를 의미함 */
p.aaa{
border: 1px solid blue;
width: 5em;
word-wrap: break-word;
}
#bbb{
column-count: 2;
column-gap: 80px;
column-rule: 4px dashed green;
}
</style>
</head>
<body>
<p>Hello world</p>
<p>한글은 어떠한가?</p>
<pclass="aaa">한글은 전혀 문제 없이 자동으로 워드 랩 됩니다.
aaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaa
</p>
<!-- 다중 컬럼 -->
<pid="bbb">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nobis corrupti dolor molestias id, assumenda voluptas itaque dolore necessitatibus a provident similique consequuntur porro alias aspernatur libero temporibus culpa? Cum, laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolorem libero ipsam porro, maiores ut temporibus, blanditiis cupiditate natus, officiis error possimus voluptatum ipsum ducimus delectus quos. Fuga laborum assumenda voluptate.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Saepe consequatur autem, quo praesentium velit totam sit ad nihil eveniet laboriosam odit sed aspernatur error tempora labore asperiores sequi, quod fugiat.
border-image-slice: 3030; /* 높이 너비 : 기본 스트레치 모드이다*/
border-image-repeat: round;
/* 요소의 크기 */
/* 나를 감싸는 부모의 크기를 고려하여 작성해야한다. */
width: 70%;
height: 300px;
/* 요소의 콘텐츠가 아니라 요소 자체를 가운데 정렬 */
margin-left: auto;
margin-right: auto;
/* 선택자 그룹으로 묶어서 100% 주자 */
html, body{height: 100%;}
}
/* 인라인요소 - 너비지정 불가*/
a{background-color: red; width: 200px; }
em{background-color: aqua; width: 100px;}
/* 인라인 블럭요소 - 너비지정 가능 */
img{width: 500px; border: 1pxsolidblack;}
input{background-color: aqua; width: 100%;}
</style>
</head>
<body>
<!-- 경계선 border / 요소의 크기 / 가운데 정렬 -->
<!-- html, body의 높이가 wrap이다. 부모 기준으로 퍼센트를 먹는다. -->
<pclass="aa">
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dolore est dicta aut alias omnis exercitationem, rem, laborum autem quo, eligendi maiores. Quisquam vero repellat iste nesciunt animi repellendus tenetur molestiae?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nulla omnis perspiciatis asperiores quisquam. Enim, architecto maxime, eaque natus, praesentium sint mollitia quos dolor nisi nobis eius? Laborum obcaecati iste sunt.
</p>
<!-- 인라인요소의 크기 설정 및 가운데 정렬 -->
<!-- 인라인 요소 : 너비조정 불가능 -->
<ahref="">anchor</a>
<em>Hello</em>
<!-- 인라인(블럭) 요소 : 너비조정 가능 -->
<imgsrc="./image/image.png"alt="image">
<inputtype="text">
<!-- 마진 -->
<divid="m">
<pid="p1">p1</p>
<pid="p2">p2</p>
</div>
<style>
/* bottom, top마진은 기본적으로 겹친다. 20px, 10px라고해도 20px만 설정된다. */
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Incidunt numquam asperiores nesciunt odio tempora error explicabo. Ipsum doloremque, debitis vitae, voluptate error dignissimos nesciunt obcaecati autem dolorum similique consectetur saepe.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatum harum tenetur alias ipsa, sunt in ducimus delectus quam omnis officia deleniti. Voluptate beatae, quasi quia nam officiis deserunt vel veritatis.
</p>
<style>
p.back{
background-color: green;
/* 이미지가 요소보다 작다면 바둑판처럼 그림이 여러개 들어온다. */
background-image: url("./image/image.png");
background-size: 200px100px;
background-repeat: repeat-x;
background-repeat: no-repeat;
background-position: center;
background-position: righttop;
background-position: topcenter;
}
</style>
<!-- 배경 이미지가 붙어 있는 위치를 설정 -->
<pid="attach">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Unde aliquam officia atque et sunt laborum nobis ad ipsa quod suscipit doloribus, tempore voluptate blanditiis cum nulla accusamus dicta ratione illum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas autem minima laudantium porro placeat nihil eligendi vitae architecto reiciendis sint, vel voluptates rem animi doloremque accusamus odio sapiente quia quas?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nisi debitis ab, consectetur nobis nesciunt quibusdam perspiciatis. Cupiditate vitae ipsa accusamus earum, odit id. Dolore deserunt alias molestiae, dolor sit dolorum.
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ea ipsam minus nulla nisi doloribus laboriosam ducimus dolorem unde tempora soluta iste assumenda eius sint repudiandae itaque, nihil veniam in? Laudantium!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati, repellat neque minus omnis saepe ipsam officia magnam atque eligendi necessitatibus. Ex voluptatibus ipsa maiores? Deserunt a saepe ipsum neque odio!
</p>
<style>
/* 부모는 틀에 불과하다. 자식이 영역밖으로 흘러넘칠수도있다. */
#attach{
width: 60%;
margin-left: auto;
margin-right: auto;
height: 300px;
border: 2pxsolidblue;
overflow: scroll;
/* 스크롤 박스의 배경을 이미지로 준ㄴ다 */
background-image: url(./image/image.png);
background-size: 200px100px;
background-repeat: no-repeat;
background-position: center;
background-attachment: scroll; /* 액자에 붙어있는 느낌*/
background-attachment: local; /* 콘텐츠에 붙어있는 느낌*/
background-attachment: fixed; /*브라우저에 배경 이미지가 붙어있다. 단, 요소 안에서만 보여짐*/