마이페이지, 네트워크, 로그아웃 세개의 메뉴를 우측 끝으로 이동시키고 싶었다..

 

react-bootstrap은 보통 container, Col, Row, Stack 4개의 컴포넌트로 레이아웃을 잡는 편이다.

그런데 Nav 같이 이미 자체적으로 layout이 잡혀져 있는 것도 있다!

  1. px-3
    1. padding-right, padding-left, Nav 전체적으로 내부 자식에게 간격을 주기 위함
  2. ms-auto
    1. margin-left: auto 를 의미함. auto 는 부모의 여백공간만큼을 왼쪽으로 밀어내는 느낌이다, 자주 쓰이는 속성이니 숙지하기!
    2. Nav.item 태그 3개를 Nav 태그 하나로 묶어서 덩어리때 내려가게 한다.

 

 

결국 display: flex;를 사용했는데 , CSS 레이아웃을 잡을 땐 flex를 많이 사용하므로 알아두는 게 좋다.

flex 를 공부하기 좋은 사이트 → 개구리 꽤나 귀여워  Flexbox Froggy

 

const navigationInformations = [
  { title: '마이페이지', link: '/' },
  { title: '네트워크', link: '/network' },
];


<div
    style={{
    backgroundColor: '#D9DDFF',
    display: 'flex',
    alignItems: 'center',
    padding: '34px 56px',
    }}
>
    <div style={{ fontSize: '2em' }}>MY PORTFOLIO</div>
    <ul
        style={{
            margin: '0 0 0 auto',
            listStyleType: 'none',
            padding: 0,
            display: 'flex',
            gap: 30,
            padding: 0,
        }}
    >
    {navigationInformations.map((navigationItem) => (
        <li
            onClick={() => {
                navigate(navigationItem.link);
        	}}
            style={{
                borderRadius: '10px',
                padding: '6px 14px',
                backgroundColor: '#989CFD',
                color: 'white',
            }}
        	key={navigationItem.title}
        >
        {navigationItem.title}
        </li>
    ))}
    </ul>
</div>

 

'프로젝트 > 엘리스 1차' 카테고리의 다른 글

e.preventDefault() ,e.stopPropagation() ?  (0) 2024.04.18

몇몇 태그는 내장된 고유 기능이 있다.

form 태그는 submit될 시에 페이지를 새로 고침을 한다.

이런 것들을 방지하기 위해 e.preventDefault()를 사용한다.

 

e.stopPropagation()이벤트 버블링과 관련.

html 태그 안에서 자식에게 이벤트가 발생하면 특정 함수가 발생되도록 이벤트 핸들러를 심어놓는다.

ex) onClick = {() => console.log('hi')}

그러면 이벤트가 발생한 자식을 기점으로 부모에서부터 위로 존재하는 모든 태그의 끝까지 순차적으로 이벤트 핸들러가 동작한다.

이것을 막기 위해 e.stopPropagation() 을 사용한다.

하지만 이벤트 버블링을 막아야 할 상황은 거의 없다고 하기 때문에 e.stopPropagation() 의 사용은 권장하지 않는다.

 

  • focus 이벤트와 같이 몇몇 이벤트를 제외하곤 거의 모든 이벤트는 버블링된다.
  • this (event.currentTarget) : 현재요소 <form> 요소에 있는 핸들러가 동작했으므로 <form> 요소를 가리킴
  • event.target - 폼 안쪽에 실제 클릭한 요소를 가리킴
  • 꼭 필요한 경우를 제외하곤 버블링을 막지 마세요!
    • 버블링을 막아야 해결되는 문제라면 커스텀 이벤트 등을 사용해 문제를 해결할 수 있다.
    • 핸들러의 event 객체에 데이터를 저장해 다른 핸들러에서 읽을 수 있게 하면, 아래쪽에서 무슨 일이 일어나는지를 부모요소의 핸들러에게 전달할 수 있으므로,
    • 위와 같은 방법으로도 이벤트 버블링을 통제할 수 있습니다!

 

[개념잡기] e.preventDefault() 와 stopPropagation() 의 차이

버블링과 캡처링

'프로젝트 > 엘리스 1차' 카테고리의 다른 글

nav들 위치 이동?  (1) 2024.04.18

+ Recent posts