유튜버 Codeminton 님의 Profile Card UI 디자인 ASMR 영상을 보면서 Clone Coding 해본 결과물이다.
처음으로 CSS 파일과 SCSS 파일을 만들어서 진행했는데 배운게 많았다.
작업은 VSCode 로 했으며, 작업폴더 이름은 Profile_Card로 설정했다.
내내 이클립스로 작업하다가 VSCode로 오랜만에 작업하는지라 확장파일을 설치할 게 좀 있었다.
SCSS 파일을 작업한다면 꼭 설치해야하는 확장자다.
SCSS 파일은 바로 html에 적용이 되지 않기 때문에 이를 css파일로 컴파일 시켜야 하는데, 이 컴파일 작업을 해주는 확장자가 바로 이것이다.
설치를 하고 해당 프로젝트에 대한 settings.json 설정을 편집해주어야 한다. 나는 아래와 같이 편집해줌.
... 저장경로를 ~/../css 라고 써놔서 의도치 않게 scss 폴더안에 css 폴더가 새로 만들어지면서 컴파일된 css파일들이 거기에 저장되었다.
원래는 scss와 lib 폴더를 가지고 있는 상위 css 폴더에 컴파일된 css파일을 저장하려했는데..ㅠ 저장경로 잘 확인하고 하자. 여튼 위의 settings.json 설정하려면 저장경로에 해당하는 폴더를 미리 이렇게 만들어두는게 좋다.
저장하는대로 바로바로 브라우저에서 작업물을 확인할 수 있다. 새로고침을 따로 안해도 되는 편리함...
뭐 필수는 아니지만 프론트엔드 작업을 하고 있다면 설치하는 걸 추천한다.
설치를 하고 나면 하단바에 이렇게 'Go Live' 라는 버튼이 뜨는데, 이걸 클릭하면 바로 작업하고 있는 브라우저 창이 열린다. 한쪽에 켜두고 계속 봐가면서 하면 됨!
html:5
를 입력해 기본 html 틀을 불러온다.<Head>
의 <title>
에 브라우저 제목이 될 'Profile Card' 를 입력해준다.<Body>
부분에 먼저 명함카드 자체를 만들 큰 틀을 <div class="profile-card">
로 잡는다.
그리고 그 안에 들어갈 프로필 사진 부분을 작성해준다.
<figure class="profile-card__img">
그리고 설명 부분(<div class="profile card__desc">
)을 작성해준다.
내 이름, 직무, 사는 곳 등...
이때 라인 21~25까지 있는 svg 태그는 위치 아이콘의 svg이다.
아래 링크로 들어가서 아이콘을 찾아 svg를 복사해오면 된다.
아이콘 주소
소셜미디어 연동 버튼 부분을 만들어준다. 내 트위터, 인스타그램 등을 연결하는 버튼이랄까..? <div class="profile-card__social">
로 잡고 그 안에 <a>
태그들을 만들어 작업한다. 클릭하면 해당 링크로 이동해야하니깐. 이 안에 각자 들어간 svg 파일도 각 SNS의 아이콘svg 파일이다.
마지막으로 메세지 보내기와 팔로우하기 버튼이 들어갈 클래스를 만들어준다. <div class="profile-card__actions">
index.html에 불러온 파일 중 Reset CSS란, 웹 브라우저마다 다른 default 스타일이 지정되어 있어, 이를 초기화함으로 다양한 웹브라우저에서도 동일한 스타일이 적용되도록 하는 설정이다.
reset.css 코드는 그냥 검색해서 찾으면 된다. 나는 영상에서 유튜버가 사용한 코드를 가져왔다.
*:where(:not(html, iframe, canvas, img, svg, video, audio):not(svg *, symbol *)) {
all: unset;
display: revert;
}
/* Preferred box-sizing value */
*,
*::before,
*::after {
box-sizing: border-box;
}
/* Reapply the pointer cursor for anchor tags */
a, button {
cursor: revert;
}
/* Remove list styles (bullets/numbers) */
ol, ul, menu {
list-style: none;
}
/* For images to not be able to exceed their container */
img {
max-width: 100%;
}
/* removes spacing between cells in tables */
table {
border-collapse: collapse;
}
/* Safari - solving issue when using user-select:none on the <body> text input doesn't working */
input, textarea {
-webkit-user-select: auto;
}
/* revert the 'white-space' property for textarea elements on Safari */
textarea {
white-space: revert;
}
/* minimum style to allow to style meter element */
meter {
-webkit-appearance: revert;
appearance: revert;
}
/* reset default text opacity of input placeholder */
::placeholder {
color: unset;
}
/* fix the feature of 'hidden' attribute.
display:revert; revert to element instead of attribute */
:where([hidden]) {
display: none;
}
/* revert for bug in Chromium browsers
- fix for the content editable attribute will work properly.
- webkit-user-select: auto; added for Safari in case of using user-select:none on wrapper element*/
:where([contenteditable]:not([contenteditable="false"])) {
-moz-user-modify: read-write;
-webkit-user-modify: read-write;
overflow-wrap: break-word;
-webkit-line-break: after-white-space;
-webkit-user-select: auto;
}
/* apply back the draggable feature - exist only in Chromium and Safari */
:where([draggable="true"]) {
-webkit-user-drag: element;
}
파일은 css 파일에 넣었다. 뭐 프로젝트가 크지 않아 굳이 저기 안넣었어도 됐는데, 그래도 css 파일 구분하려고 넣음.
style1.scss 파일은 html에 적용할 css 디자인을 작업한 SASS(SCSS) 파일이다. Sass란 Syntactically Awesome Style Sheets의 약자로, CSS pre-processor이다. 쉽게 말하면 Sass를 배우면 CSS 작업이 짱 편리해진다. 반복되는 내용은 줄이고 코드의 재활용성 및 가독성을 높여 효율적으로 스타일시트를 관리하기 때문에.
Sass와 SCSS의 차이점이 있는데, SCSS는 중괄호를 써서 범위 구분을 하고, Sass는 들여쓰기로 구분함. 나는 CSS와 구문 형태가 더 비슷한 SCSS 를 사용했다.
(사실 scss 파일 이름은 style.scss 였는데.. 하도 컴파일 오류가 초반에 나서 지웠다가 새로 만들었다가.. 뭐 여러 과정을 거치다 보니깐 style1.scss가 되어버렸다..)
폰트는 Google 폰트에 들어가서 원하는 특정 폰트 옆의 '+' 버튼을 클릭해 장바구니..? 같은 곳에 담아놓으면 오른쪽과 같이 Selected Family하고 창 같은게 생긴다.
거기서 @import 를 클릭하면 아래 복사할 수 있는 코드가 나오는데 그걸 복사해서 위와 같이 붙여넣기 해주면 된다.
<body>
부분 스타일링을 적어준다. 전체적인 폰트, 정렬 등등..?
라인 24의 backgroundZoomAnimate는 배경이 확대되는 애니메이션 설정을 적은 것이다. 이걸 라인 20에서 가져와 적용시킴.
이제 profile-card
에 해당되는 클래스를 설정해준다. 프로필 카드 박스에 대한 설정을 해주는 것이다. 섀도우, 테두리, 안에 블러처리, 패딩 등등...
반응형 웹을 만들기 위해 라인 45~47을 넣었고, 이럼 프로필카드의 최대 너비가 768px까지만 되도록 설정된다.
여기까지하면 작업물은 이렇게 보인다.
&__img
는 상위 클래스인 profile-card 뒤에 __img
가 붙은 클래스를 지칭하는 것이다.여기까지 하면 이렇게 보일 것이다.
profile-card__desc
클래스를 설정해보자. 이름과 직무 등이 가운데로 정렬되게 하고, 폰트 크기 등을 설정했다.여기까지 작업물
여기까지의 결과물
a
태그를 설정해주는 부분에 넣고.. 라인 131 부근에 마우스호버때의 애니메이션을 넣고 싶었는데 작동이 되지 않아서 이 부분을 각각의 아이콘 설정 부분에 넣어주었다.여기까지 하면 이렇게 되고
각 버튼 위에 마우스를 올리면 버튼이 이렇게 커진다.
<div class="profile-card__actions">
부분을 설정해준다.그럼 이제 완성!
이것 또한 이렇게 버튼 위에 마우스를 올리면 위로 붕 뜨는 듯한 애니메이션이 적용된다.
scss를 처음 작업할 뿐만이 아니라 템플릿 사용없이 처음부터 끝까지 css 작업을 해본것이라 전체적으로 어떻게 css 템플릿을 제작하고, 이게 어떻게 돌아가는지 이해할 수 있었다.
뿐만 아니라 scss 를 이제 작업하면서 이게 왜 html에 적용이 안되는지 한참을 고민하고 삽질하다보니 Live Sass Compiler에 대해 스스로 알게 되었고, 이를 설치하고 적용하는 과정도 거치다 보니 얻어가는 것도 많았다. 이걸 몰랐으면 나 클론코딩도 못할뻔...😥
그리고 학원에서 배운 심플하고 뭔가 딱딱한.. 윈도우 같은 디자인만 하다가 프론트엔드 전문가이신 요 유튜버님을 따라하다 보니깐 내가 만들 수 있는 것보다 훨씬 이쁜 디자인이 탄생하게 되었다... 이를 만드는 과정에서 필요한 요소들을 배울 수 있어서 좋았음.
백엔드 요소가 들어가지 않은 프론트엔드 작업이지만, VSCode 로 오랜만에 돌아와서 바로 백엔드부터 하는 것보다 이렇게 html이랑 css부터 작업하니 다시 처음부터 배워가는 것 같고 부담이 없었다. 천천히 이제 백엔드 요소들을 하나씩 넣어보는 시간을 가져야지.