워드프레스 쇼핑몰, 웹사이트

사이트 이미지
쇼핑몰

남성의류 정기결제 쇼핑몰

우커머스의 정기결제(Subscription) 플러그인을 이용한 쇼핑몰.

사이트 이미지
웹사이트

회원관리 사이트

회원관리 프러그인을 이용한 학회 홈페이지.

사이트 이미지
쇼핑몰

면도기 정기결제 쇼핑몰

우커머스의 정기결제(Subscription) 플러그인을 이용한 쇼핑몰.

사이트 이미지
쇼핑몰

해외 쇼핑몰

해외 대상 쇼핑몰. 다양한 플러그인 사용됨.

사이트 이미지
쇼핑몰

강아지 용품 정기결제 쇼핑몰

우커머스의 정기결제(Subscription) 플러그인을 이용한 쇼핑몰.

포트폴리오 보기

커스텀 디자인

여러 종류의 플러그인을 이용해 페이지와 콘텐츠를 커스텀 디자인

Brizy Pro

페이지 빌더

다양한 콘텐츠를 만들 수 있는 프론트 엔드 페이지 빌더

Elementor Pro

페이지 빌더

다양한 콘텐츠를 만들 수 있는 프론트 엔드 페이지 빌더

Advanced Custom Field Pro

사용자 정의 필드

커스텀 콘텐츠 작업에 필요한 플러그인

Pods

사용자 정의 콘텐츠 타입

기본 콘텐츠 타입외에 다양한 형태의 콘텐츠 생성.

블로그

이전 글에서 float와 clear의 기본적인 사용법을 알아보았습니다. 이번 글에서는 미니 웹사이트에서 실제로 어떻게 적용되는지 알아보겠습니다. 그리고 웹사이트 만드는데 있어서 사용되는 파일이 늘어나면 관리하기가 어려워지므로 폴더를 만들어 서로 비슷한 성격을 가진 파일을 한데 모아서 관리하면 편리하므로 파일관리시 반드시 사용하게 되는 절대주소와 상대주소에 대해서도 알아봅니다.


우선 이번 글에서 사용할 파일을 다운 받습니다. 이 파일에는 아래 이미지처럼 사진이미지가 있고 빈 폴더가 있습니다. 이전까지는 html 파일과 스타일시트 파일만 있어서 간단한 구조이므로 파일관리가 필요하지 않았지만 이미지가 늘어나거나 제이쿼리 파일이 첨부되면 루트폴더가 복잡해집니다. 그래서 같은 종류의 파일은 폴더를 만들어서 이동해서 관리하는 것이 좋습니다.

1. 파일관리 - 절대주소와 상대주소


 
3개의 폴더가 있는데 이미지는 images폴더에 스타일시트는 style폴더에 이동해서 저장합니다. 파일을 클릭드래그해서 폴더위에 놓으면 됩니다. 나중에 제이쿼리가 추가되면 js폴더에 저장하면 됩니다. 스타일시트 파일을 다른 폴더로 이동했으니 html페이지에서 경로를 수정해줘야합니다.

<link rel="stylesheet" type="text/css" href="style.css" />를

<link rel="stylesheet" type="text/css" href="./style/style.css" />로 바꿔줍니다. 

링크를 참조할때는 URL(Uniform Resource Locator)을 사용하는데 주소는 절대주소와 상대주소가 있습니다. 절대주소는 참조하는 파일의 전체 경로를 말합니다. 어떤 파일의 절대주소는 아래와 같이 http://로 시작해서 파일이름으로 끝이 납니다.

http://cfs.tistory.com/custom/blog/81/819065/skin/images/11.jpg

하지만 이렇게 하면 경로를 처음부터 찾아가야하므로 속도면에서 느리게 됩니다. 그래서 상대주소를 항상 사용하는데 위에서 처럼 점과 슬래시를 이용합니다. 점 하나와 슬래시( ./ )는 어떤 파일이 있는 곳의 현재 폴더를 의미합니다. 그래서 위 index파일은 루트폴더에 있고 style폴더와 같은 폴더에 있으므로 점 하나와 슬래시를 사용하면 됩니다. 같은 폴더에 있는 경우는 점과 슬래시를 생략해도 됩니다. 하지만 다른 폴더에 있는 경우는 점 두개와 슬래시( ../ )를 사용합니다. 이것의 의미는 상위폴더를 말합니다.

 
예를들어 인덱스파일을 1의 루트폴더의 하위폴더인 js>ff 폴더로 이동했다고 했을때 스타일시트를 참조하려면 다음과 같이 상대주소를 바꿔줘야합니다.

<link rel="stylesheet" type="text/css" href="../../style/style.css" />

즉 현재 인덱스파일이 있는 곳에서 두개의 폴더 상위로 올라가면 루트폴더인 Project폴더가 있고 그 안에 style폴더가 있으니 거기서 style.css파일을 참조하라는 의미가 됩니다. 상대주소는 위와같이 사용하면 됩니다.

2. 이미지 파일의 삽입



<팁>html코드가 많아지면서 코드 관리가 어려워집니다. 시작태그가 있으면 마감태그가 있게 되는데 코드가 증가할수록 상대되는 태그 찾기가 어렵죠. 서브라임 텍스트 에디터에서 시작태그나 마감태그를 1처럼 클릭하면 태그 밑에 점선이 생기고 상대되는 태그에도 점선이 생겨서 찾기 쉽습니다. 

지금까지 연습을 위해 남겨놓았던 박스인 3과 4의 박스를 제거합니다. 스타일시트에서 해당하는 선택자부분도 제거합니다.


원래 있던 <p>태그의 내용을 감싸는 <div> 태그를 만들고 클래스 선택자로 이름은 box로 정합니다. <p>태그와 형제요소로서 이미지태그를 만듭니다. <img>태그는 링크의 속성을 다른 링크와는 다르게  src를 사용합니다. 대부분 href를 사용하죠. src는 source를 의미합니다. 인덱스파일과 같은 폴더에 있는 images폴더의 1.jpg를 소스로 합니다. <img>태그의 마감태그는 없고 대신에 />로 마감합니다. 여기까지 하고 웹브라우저에서 보면 아래와 같이 나옵니다.


이전 글 에서 <img> 태그는 인라인요소라서 블럭요소와는 다르게 좌우의 공간을 차지하지 않는다고 했는데 위 이미지를 보면 우측의 공간이 비어있습니다. 이것은 블럭요소인 <p>태그로 인해서 그런 것입니다. 위 이미지태그 아래에 <img src="./images/2.jpg" />를 삽입하면 이미지가 나란히 놓이게 되므로 인라인요소라는 것이 증명이 됩니다. 그러면 글자를 이미지옆으로 이동하려면 어떻게 할까요. 이럴때 사용하는 것이 float라는 속성입니다.

3. Float 속성을 이용해서 이미지를 글자로 감싸기


이전 글 에서 여러개의 요소중 첫째 요소가 float되면 그 다음에 오는 요소는 첫번째 요소 뒤에 가려진다고 했습니다. 하지만 전부 그런 것이 아니고 텍스트가 있는 요소는 전혀 다른 결과가 나옵니다. 사실 float라는 속성은 원래 사진 이미지의 둘레에 글자로 감싸기(Text Wrap)위해서 만들어진 것입니다. 그래서 이미지나 다른 요소가 float되면 텍스트는 그것이 블럭요소인 <p> 태그에 있다고 해도 float된 요소를 감싸도록 되어있습니다.


<p>태그를 복사해서 세개를 만들고 스타일시트에서 이미지태그에 대해서 float: left: 속성을 적용하면 텍스트는 이미지를 감싸게 됩니다. 이미지와 글자의 간격을 두기 위해 마진 속성을 사용합니다. 이미지가 좌측에 있고 글자가 우측에 있으므로 이미지의 우측마진을 줍니다. 우측에 해당하는 두번째 값에 20픽셀, 아래에 해당하는 세번째 값에 10픽셀을 설정하면 다음과 같이 나옵니다.


이미지를 오른쪽으로 보내고 싶으면 float: right; margin: 0 0 10px  20px; 로 설정하면 됩니다.

4. 리스트 만들기 

 
이미지를 여러개 넣고 <p>태그의 글자도 각각의 이미지에 맞춰서 리스트를 만들어보려고 합니다. 지금 패러그래프가 3개 있으니 이미지를 각각의 패러그래프 위에 배치합니다.


두개의 이미지태그를 각각의 패러그래프 위에 배치하고 이미지 파일 이름도 바꿔주고 웹브라우저에서 보면 다음과 같이 나옵니다.


어지럽게 나오지만 당연한 결과입니다. 이미지는 인라인요소이기 때문에 블럭요소인 <p> 태그가 끝나면(1) 줄바꿔서 2의 이미지가 나오고 모든 이미지는 float:left; 로 설정되었으니 그다음에 오는 패러그래프는 간격이 떨어진채 우측에 나옵니다. 이것이 끝나면(4) 순서에 의해 5의 이미지가 나오고 6의 패러그래프가 나오는 것입니다. 이것을 정렬해서 나오게 하려면 각 패러그래프 다음에 clear라는 속성을 사용합니다. 아무곳에나 이 속성을 사용할 수는 없으니 <div>태그를 하나 만들어서 사용합니다.


<p> 태그가 끝나면 다음에 <div class="spacer"></div>라는 spacer라는 이름의 클래스 선택자로 빈 <div>태그를 만들고 스타일시트에서는 clear:both;로 설정하면 이제 제대로 나오게 됩니다. 이런 비어있는 태그를 일일히 넣는다는 것은 번거롭지만 어쩔 수 없습니다. 하지만 만약에 다른 블럭요소가 각 패러그래프 다음에 있는 경우에는 이를 이용할 수가 있습니다.


위처럼 각 패러그래프 다음에 <h2>라는 블럭 요소가 있다면 이 블럭요소를 대상으로 1처럼 clear:both; 를 설정하면 번거로운 <div> 태그를 만들지 않아도 됩니다.


위 상태에서도 스타일시트에서 이미지태그에 대해서 float: right;  margin: 0 0px 10px 20px; 로 바꿔주면 이미지는 우측으로 가고 글자는 좌측으로 갑니다. 변경하기 쉽죠.


loyalty , ,

댓글 (12)

댓글 목록

Yu.J access_time

열심히 따라서 만들고 있는데.. 어렵네요.. ㅎㅎ
사이드 메뉴가 세로 정렬 텍스트인데 마진값이 안먹혀요.....ㅠㅠ
부끄럽네요.. 분명 먼가 잘못한거 같은데 ㅋㅋ;;
그래도 조금씩 내맘같지 않지만 나열이 되니까 신기하고 재밌네요~ :D
외국어 배우는것 만큼 어렵지만 ㅎㅎㅎ;;

베누시안 access_time

안녕하세요. 반갑습니다. 뭐든 그렇지만 CSS는 여러번 해봐서 익숙해지면 쉬워집니다. 댓글 감사드려요.~

mono access_time

웹프로그래밍 10년차인데... 이전까지 이런 내용을 모르고 막연히 써왔었네요.
강의 내용들이 너무 좋네요. 잘 보고 있습니다.

베누시안 access_time

안녕하세요. 반갑습니다. 그동안 웹페이지 레이아웃이 테이블형태로 만들어서 CSS는 참 어렵죠. 하지만 관리하기에는 아주 좋더군요.

access_time

비밀댓글입니다

따뜻한친구 access_time

재미있습니다. 박스만 나와서 위치잡기할 때는 머리아프더니 실제 사이트로 보니
배우는 재미가 소록소록 생깁니다. 감사합니다.
한가지 질문은 이번 강좌하면서 다운받은 파일로 수정하면서 따라했는데 사진배치부분에서 제컴(ie)은 사진과 글이 어지럽게 배치되지 않고 스페이서를 준 것처럼 제대로 표시가 되던데 왜 그럴까요? 물론 스페이서를 주고 나서도 변화가 없지 똑같지요.
따라하기 하면서 배우는 재미가 있지만 제것이 될까 모르겠습니다. ㅎ 부단한 연습이 있어야 할텐데.

초보웹디자이너 access_time

항상 강좌 잘보고 있습니다 알찬 강좌에 다시한번 감사드립니다,
음 파일이 잘못된것 같아요 8번 압축파일 ㅠㅠ 8-1은 맞는것 같은데.,
소스 처음부터 보면서 따라하기 공부 하고 싶은데 8번 압축파일이 잘못 올려진것같습니다 ㅠㅠ

베누시안 access_time

안녕하세요. 점검해보니 이상이 없는 것 같은데요. 하시다가 어떤 부분이 잘못됐는지 알려주시면 감사하겠습니다.

초보웹디자이너 access_time

다시 확인해보니 프로젝트 8 압축 파일이 이상이 없네요 ㅎㅎ; 죄송합니다.
맨날 와서 공부 하는데ㅠㅠ 답답하네요 언제쯤이면 주물주물 마음대루 css를 다룰수 있는 날이 올수 있을지 ㅠㅠ .. 추천 누르고 갑니다

맛동산짱 access_time

안녕하세요 저는 개발자인데 퍼블리싱쪽에 관심이 있어서 보다가 정리가 잘 되어있어서 배우고 갑니다 ^^

베누시안 access_time

도움이 되신다니 다행입니다.

김상균 access_time

현직 개발자 입니다..
저도 퍼블리싱에 요즘 관심이 생겨서 베누시안님이 작성하시는 문서를 보고 있는데
정말 잘 보고 배우고 있습니다.
궁금한게 있는데 float속성을 쓰면 text는 float속성을 쓴 태그를 감싸는데
붙다가 공간1줄이 꽉차면 그 다음에 내려가져서 써지는게 그게 아니라 완전히 모든 글씨가 개행 됩니다 왜 그럴까요?