퍼블리싱/html, css, javascript

에어비엔비 메인 그리드 정렬 html, css 코드

연지쁨 2023. 10. 28. 14:08
반응형
목차
1. CSS flex 속성
2. CSS grid 
3. CSS Transition/transform
4. 에어비엔비 숙소 css,html
CSS Flex란?

 

자신의 컨테이너가 차지하는 공간에 맞추기 위해 크기를 키우거나 줄이는 방법을 설정하는 속성

 

 

flex-grow

  • 할당 가능한 공간의 정도
  • 형제 아이템들이 모두 동일한 flex-grow 값 = 동일한 공간
  • 형제 아이템들이 다른 flex-grow 값 = 다른 공간

 

 

flex-shrink

  • 아이템의 크기가 container보다  클 때 사용
  • 설정된 값에 따라 크기가 축소
  • flex-shrink: 0 = 줄어들지 않겠다.

 

 

flex-basis

  • 아이템의 초기 크기
  • ‘auto가 아닌 flex-basis’와 ‘width(direction: column이면 height)’ 중 flex-basis가 우선

 

 

방향 flex-direction

  • row (왼쪽에서 오른쪽으로 배치되는 흐름)
  • column (세로 방향 배치, 위에서 아래로)
  • row-reverse (가로방향 역배치, 오른쪽에서 왼쪽으로)
  • column-reverse (세로 방향 역배치, 아래에서 위로)

정렬 justify-content, align-items

  • flex-start (컨테이너 시작)
.container {
    display: flex;
    justify-content: flex-start;
}

 

 

 

  • flex-end (컨테이너 끝)
.container {
    display: flex;
    justify-content: flex-end;
}

 

 

 

  • center (가운데 요소배치)
.container {
    display: flex;
    justify-content: center;
}

 

 

 

  • space-between (요소 사이에 동일한 간격을 두면서 컨테이너 시작과 끝은 간격이 없도록 배치)
.container {
    display: flex;
    justify-content: space-between;
}

 

 

 

  • space-around (요소 주위에 동일한 간격을 두면서 컨테이너 시작과 끝에는 반 간격만큼 배치)
.container {
    display: flex;
    justify-content: space-around;
}

 

 

 

block

  • 한 줄을 차지
  • width, height, margin, padding 지정 가능
  • <div>, <h1~6>, <header> 등

inline

  • 컨텐츠 영역 만큼만 차지
  • width, height 지정 불가능
  • margin 좌우에만 적용
  • padding
  • <span>, <a>, <button> 등

 

CSS Gird 란

 

세로 열과 가로 행을 기준으로 요소를 정렬하는 레이아웃

 

 

레이아웃 정의

  • grid-template-rows : 행의 형태를 정의
  •  grid-template-columns: 열의 형태를 정의
  • gap : 간격 정의

 

 

아이템의 형태를 정의

  • grid-column-start (그리드 수평 가로 시작 위치 지정)
    .item {
        grid-column-start: 2; /* 그리드 컬럼의 두 번째 위치에서 시작 */
    }​

 

  • grid-column-end (그리드 수평 가로 끝 위치 지정)
    .item {
        grid-column-end: 4; /* 그리드 컬럼의 네 번째 위치에서 끝 */
    }
     
반응형
  • grid-row-start (그리드 수직 가로 시작 위치 지정)
.item {
    grid-row-start: 2; /* 그리드 로우의 두 번째 위치에서 시작 */
}

 

 

 

  • grid-row-end (그리드 수직 끝 위치 지정 
.item {
    grid-row-end: 4; /* 그리드 로우의 네 번째 위치에서 끝 */
}

 

 

 

 

CSS Transition/transform
  • CSS  transition

 

  • property (CSS 애니메이션 전환에서 변경할 속성 지정)
.animation {
    property: transform; /* 이 애니메이션은 transform 속성을 변경합니다. */
}

 

 

 

  • duration (애니메이션 전환의 지속시간 초(s) 또는 밀리초 (ms)단위로 표현)
.animation {
    duration: 2s; /* 이 애니메이션은 2초 동안 지속됩니다. */
}

 

 

 

  • timing-function (시간이 흐름에 따라 스타일 속성이 어떻게 변화하는지를 제어)
.animation {
    timing-function: ease-in-out; /* 이 애니메이션은 처음에는 빠르게 시작하고 나중에 느려집니다. */
}

 

 

 

  • delay (애니메이션이나 전환의 시작을 지연시키는 시간을 정의. 이 값도 초(s) 또는 밀리초(ms) 단위로 표현)
.animation {
    delay: 1s; /* 이 애니메이션은 1초 후에 시작됩니다. */
}

 

  • transform
  • translate : 이동 
  • scale : 확대, 축소 
  • rotate: 회전 
  • skew: 기울이기

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8"> <!-- 문서의 문자 인코딩을 설정하는 meta 태그 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 뷰포트 설정을 위한 meta 태그 -->
    <link rel="stylesheet" href="./index.css"> <!-- 외부 스타일 시트 파일을 연결하는 링크 태그 -->
    <title>Clone coding</title> <!-- 웹 페이지의 제목을 설정하는 태그 -->
</head>
<body>
    <!-- 웹 페이지의 시작 -->

    <!-- 헤더 섹션 -->
    <header>
        <img id="logo" src="./img/comp_0685990 (1).png" alt="fast campus logo"> <!-- 로고 이미지를 표시하는 이미지 태그 -->
        <div id="little-search">
            <button class="little-search_button">언제든지</button><span class="divider"></span> <!-- 검색 옵션 버튼과 구분선을 포함하는 div 요소 -->
            <button class="little-search_button">언제든 일주일</button><span class="divider"></span>
            <button class="little-search_button">게스트 추가</button>
            <div id="magnifying-glass-wrapper">
                <img id="magnifying-glass-icon" src="./img/Magnifying_glass_icon.svg" alt="magnfying-glass-icon"> <!-- 돋보기 아이콘을 표시하는 이미지 태그 -->
            </div>
        </div>
        <div id="header-right-section"> 
            <div id="do-airbnb">
                당신의 강의를 패스트캠퍼스 하세요.
            </div> <!-- "당신의 강의를 패스트캠퍼스 하세요." 텍스트를 포함하는 div 요소 -->
            <div id="profile-section">
                <img width="16" src="./img/list.svg" alt="list icon"> <!-- 목록 아이콘을 표시하는 이미지 태그 -->
                <img width="30" src="img/user-circle.svg" alt="user user-circle"> <!-- 사용자 아이콘을 표시하는 이미지 태그 -->
            </div>
        </div>
    </header>

    <div id="category-bar">
        <!-- 카테고리 버튼들을 나중에 추가할 예정 -->
    </div>

    <main>
        <div id="place-items-wrapper">
            <!-- 숙박 장소 정보를 나중에 추가할 예정 -->
        </div>
    </main>

    <button id="floating-map-button">
        <span>지도 표시하기</span>
        <img width="16" src="./img/map-trifold.svg" alt="map icon"> <!-- 지도 아이콘을 표시하는 이미지 태그와 텍스트를 포함한 버튼 -->
    </button>

    <!-- 웹 페이지의 끝 -->
</body>
<script>
    // 카테고리 버튼을 클릭할 때 활성화 클래스를 설정하는 JavaScript 코드를 여기에 추가할 수 있음
</script>
</html>

 

 

/* CSS 리셋: 기본 스타일 초기화 및 표준 스타일 재정의 */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}

/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
    display: block;
}

body {
    line-height: 1;
}

ol, ul {
    list-style: none;
}

blockquote, q {
    quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

/* 버튼 스타일 초기화: 버튼의 스타일을 초기화 */
button {
    background-color: transparent;
    border: none;
}

/* 로고 스타일 */
#logo {
    height: 64px;
    cursor: pointer;
}

/* 헤더 스타일 */
header {
    display: flex;
    padding: 0 80px;
    height: 80px;
    justify-content: space-between;
    align-items: center;
    box-shadow: rgb(0 0 0 / 8%) 0 1px 0;
}

/* 검색창 스타일 */
#little-search {
    display: flex;
    padding: 0 8px;
    justify-content: center;
    align-items: center;
    border: 1px solid #DDDDDD;
    border-radius: 40px;
    height: 48px;
    box-sizing: border-box;
    min-width: 370px;
    box-shadow: 0 1px 2px rgb(0 0 0 / 8%), 0 4px 12px rgb(0 0 0 / 5%);
    cursor: pointer;
}

/* 작은 검색 버튼 스타일 */
.little-search_button {
    display: block;
    flex-shrink: 0;
    padding: 0 16px;
    white-space: nowrap;
    font-size: 14px;
    font-weight: 600;
    color: rgb(34, 34, 34);
}

/* 검색창 호버 시 스타일 */
#little-search:hover {
    box-shadow: 0 2px 4px rgba(0,0,0,0.18);
}

/* 검색창 하위 요소(버튼 등) 커서 스타일 */
#little-search * {
    cursor: pointer;
}

/* 작은 검색 버튼 중 3번째 버튼 스타일 */
.little-search_button:nth-of-type(3) {
    color: #717171;
}

/* ... (나머지 CSS 규칙들) */
반응형