KUIT 7

Fixed Menu, 메뉴 바 상단 고정 구현 시 content에 margin-top을 주면 위험한 이유 (feat. margin collapsing)

소개KUIT 교내 개발 동아리에서 WEB 파트장을 맡아 운영 중이다. WEB 파트 부원들에게 준 2주차 미션이 당근마켓 화면 HTML, CSS로 클론코딩하기였다.미션 결과물 코드리뷰를 하다 좋은 질문들이 많이 나와 공부가 많이 되었는데, 그 중에 fixed menu, 메뉴 바 상단 고정 구현 할 때 menu bar 아래 content에 margin-top을 주면 위험할수도 있겠다는 생각이 들었고, 그 이유에 대해서도 많이 찾아보게 되어서 글을 써보았다.질문코드와 함께 보는 것이 편할 수도 있을 것 같아 추가한 github discussion 주소이다.만들고자 하는 화면은 아래 이미지처럼 당근마켓의 한 화면을 구현하되, 스크롤을 내려도 맨 상단 바가 항상 위에 고정되도록 하는 것이었다. 일반적인 블로그나 ..

[KUIT 3기 Web] 2주차(5 - 完) - 당근마켓 화면(CSS) 클론 하기 및 트러블 슈팅

2주차 과제는 주어진 피그마대로 당근마켓 화면1을 기본 HTML + CSS로 동일하게 구현하기였다. git repo fork 후 github pages로 배포해서 화면을 확인할 수 있게 했고, 결과물은 다음과 같다. 미션 결과물-당근마켓 화면1 링크 트러블 슈팅 해당 과제를 하면서 겪었던 이슈와 해결 방안은 다음과 같다. Issue 1 문제 상단 header가 고정이 안되어서 fixed로 고정했다. 그런데 fixed로 고정한 다음, header에 width 100% 를 주면 header가 화면보다 조금 커져서 화면 밖으로 튀어나간다?!?!?! 특히 → display: flex; justify-content: space-between; 해당 속성일 때 튀어나간다. 이 문제도 box-sizing: borde..

[KUIT 3기 Web] 2주차(4) - CSS 우선순위, CSS 작명법 BEM(Block Element Modifier), svg 작명법, 추가 내용

CSS class name 이름 짓는 법인 BEM 규칙은 이번에 처음 알게 되었다. 지금껏 정해진 className을 쓰면 자동으로 style을 맞춰주는 tailwind, bootstrap 이나 react에서 자동으로 class name을 만들어주는 CSS Module을 자주 써왔어서 접할 기회가 없었던 것 같다. 추가로 svg 작명법까지 찾아서 정리했다. CSS 우선순위 !important( 예시: .title-box{color: red !important;} inline(HTML에서 style을 직접 지정했을 때) id 선택(#id) class명(.class) HTML 태그(예시 : h3) 상위 Element의 속성 CSS 작명법 BEM(Block Element Modifier) CSS 작명법 BEM..

[KUIT 3기 Web] 2주차(3) - CSS positioning, 원하는 위치에 요소 배치하기

1) static position 속성의 기본값. 요소를 나열한 순서대로 배치. 원하는 위치에 콘텐츠를 배치할 방법 없음. 콘텐츠를 왼쪽에서 오른쪽으로 추가하다가, 오른쪽에 공간이 없을 경우 다음 줄로 넘겨서 순서대로 배치한다. 2) relative static과 같이 나열한 순서대로 배치되지만 top, right, bottom, left 속성을 사용해 원하는 위치를 지정할 수 있다. 이때 좌표값은 static 기준으로 위치한 곳이 (0px, 0px)이 된다. 지정한 속성에 따라 상/하/좌/우 원하는 자리에 배치하는 것이 가능 하다. 3) absolute top, right, bottom, left 속성값을 이용해 요소를 원하는 위치에 배치할 수 있다. 기준 위치는 position 속성이 relative..

[KUIT 3기 Web] 2주차(2) - CSS grid, grid parent, grid children

display: grid; 격자 모양으로 보여준다. grid parent 속성과 grid children 속성이 따로 있다. grid track : grid의 행 또는 열 grid cell : grid 한 칸 Grid parent properties display : inline-grid는 grid에 inline 속성을 부여해 준다. .container { display: grid | inline-grid; } grid-template-rows, grid-template-columns : grid track의 크기를 지정해준다. 숫자 값만 넣어도 되며, 다양한 이름을 지원한다. 1fr 1fr 1fr 은 fraction 약자로, 비율을 의미한다. 1:1:1 비율로 나눠준다. .container { grid..

[KUIT 3기 Web] 2주차(1) - CSS flex box, flex container, flex items

display : flex; 축이 하나인 것. 한 쪽 방향으로 배열할 수 있다. flex 속성을 해당 element (flex container)에 주면, children elements (flex items)의 위치를 결정한다 flex container에 주어야 하는 속성과, flex items에 주어야 하는 속성이 따로 있다. flex container (parent)의 속성 flex-direction : 축의 방향을 결정한다. .container { flex-direction: row | row-reverse | column | column-reverse; } flex-wrap .container { flex-wrap: nowrap | wrap | wrap-reverse; } https://code..

[KUIT 3기 Web] 1주차 - Web 기본 지식

Web 기본 지식들을 키워드 기반으로 정리해보았다. HTML, CSS, JS HTML : 페이지의 틀 JS : HTML element 간의 동적인 동작 CSS : 색깔, element 배치 등 디자인 요소 Web API HTML5는 2004년에 등장했고 2014년에 W3C에서 표준안을 확정했으며, 다양한 Web APIs를 제공한다. HTML Geolocation API 사용자(브라우저)의 현재 위치를 받아올 수 있다. 지도 현 위치 표시 기능에 사용한다. 단, 브라우저 차원에서 보안 문젤 https에서만 사용 가능하도록 제한이 걸린 상태이다. HTML Drag and Drop API 웹 페이지에서 JS를 이용해서 element의 드래그, 드롭, 이동, 삭제를 간편히 구현 가능하게 지원한다. HTML We..