Tag: CSS

  • Div에서 이미지 가운데 맞추기

    Div에서 이미지 가운데 맞추기

    웹 페이지의 프론트 엔드에서 작업할 때 이미지를 div(컨테이너) 내 중앙에 배치해야 하는 경우가 있습니다.

    이것은 때때로 까다로울 수 있습니다. 그리고 특정 조건에 따라 특정 방법이 어느 시점에서 작동하지 않을 수 있으므로 대안을 찾아야 합니다.

    div이 기사에서는 CSS 를 사용 하여 이미지를 중앙에 배치하는 방법을 배웁니다 .

    DIV에서 CSS를 사용하여 중앙에 배치하는 방법

    div가로 및 세로의 두 가지 방법으로 이미지를 중앙에 배치합니다. 이 두 가지 방법을 함께 사용하면 완전히 중앙에 배치된 이미지를 갖게 됩니다.

    기본적으로 웹 콘텐츠는 항상 화면의 왼쪽 상단 모서리에서 시작하여 ltr(왼쪽에서 오른쪽으로) 이동합니다. 아랍어와 같은 특정 언어는 rtl(오른쪽에서 왼쪽으로) 제외됩니다.

    div수평 으로 이미지를 중앙에 맞추는 방법부터 시작하겠습니다 . 그런 다음 세로로 가운데 정렬하는 방법을 알아보겠습니다. 마지막으로 두 가지를 함께 수행하는 방법을 살펴보겠습니다.

    텍스트 정렬을 사용하여 Div의 이미지를 가로로 가운데에 맞추는 방법

    div다음 과 같이 이미지를 배치하는 위치 가 있다고 가정합니다 .

    <div class="container">
        <img src="./fcc-logo.png" alt="FCC Logo" />
    </div>

    이미지가 보이도록 기본 CSS 스타일을 적용합니다.

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
    }
    .container img {
        width: 100px;
    }

    이 text-align방법은 일반적으로 텍스트를 가운데에 맞추는 데 사용하므로 모든 경우에 작동하지는 않습니다. 그러나 와 같은 블록 수준 컨테이너 내에 이미지가 있는 div경우 이 방법이 작동합니다.

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
        text-align: center;
    }
    
    .container img {
        width: 100px;
    }

    이것은 이미지 자체가 아닌 컨테이너에 text-align값과 함께 속성 을 추가하여 작동 합니다.center

    Margin-auto를 사용하여 Div의 이미지를 수평으로 가운데에 맞추는 방법

    div(컨테이너) 내에서 이미지를 수평으로 중앙에 배치하는 데 사용할 수 있는 또 다른 방법 margin은 값이 인 속성입니다 auto.

    그러면 요소가 지정된 width 을 차지하고 나머지 공간은 왼쪽과 오른쪽 여백 사이에 균등하게 분할됩니다.

    일반적으로 이 방법을 컨테이너가 아닌 이미지 자체에 적용합니다. 그러나 불행히도 이 속성만으로는 작동하지 않습니다. width또한 먼저 촬영할 이미지 를 지정해야 합니다 . 이렇게 하면 여백이 컨테이너의 나머지 너비를 알 수 있으므로 균등하게 분할할 수 있습니다.

    둘째, img인라인 요소이며 margin-auto속성 집합은 인라인 수준 요소에 영향을 주지 않습니다. display즉, 속성이 로 설정된 블록 수준 요소로 먼저 변환해야 합니다 block.

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
    }
    
    .container img {
        width: 100px;
        margin: auto;
        display: block;
    }

    Position 및 Transform 속성을 사용하여 Div에서 이미지를 수평으로 가운데에 맞추는 방법

    이미지를 수평으로 배치하는 데 사용할 수 있는 또 다른 방법은 position속성 옆에 있는 transform속성입니다.

    이 방법은 매우 까다로울 수 있지만 작동합니다. 먼저 컨테이너 position를 로 설정 relative한 다음 이미지를 로 설정해야 합니다 absolute.

    left이렇게 하면 이제 이미지의 , topbottom또는 right속성을 사용하여 원하는 위치로 이미지를 이동할 수 있습니다 .

    이 경우 이미지를 가로 중앙으로만 이동하려고 합니다. 즉, 이미지를 left50% 또는 right-50%로 이동합니다.

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
        position: relative;
    }
    
    .container img {
        width: 100px;
        height: 100px;
        position: absolute;
        left: 50%;
    }

    그러나 이미지를 확인할 때 이미지가 여전히 중앙에 완벽하게 배치되지 않았음을 알 수 있습니다. 센터 포지션인 50%대부터 시작했기 때문이다.

    이 경우 transform-translateX속성을 사용하여 수평으로 완벽한 중심을 얻도록 조정해야 합니다.

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
        position: relative;
    }
    
    .container img {
        width: 100px;
        height: 100px;
        position: absolute;
        left: 50%;
        transform: translateX(-50%);
    }

    Display-Flex를 사용하여 Div의 이미지를 수평으로 가운데에 맞추는 방법

    CSS flexbox를 사용하면 부동 또는 위치 지정을 사용하지 않고도 유연하고 반응이 빠른 레이아웃 구조를 더 쉽게 디자인할 수 있습니다. 또한 이것을 사용하여 flex를 값으로 하는 display 속성을 사용하여 컨테이너의 수평 중앙에 이미지를 배치할 수 있습니다.

    그러나 이것만으로는 작동하지 않습니다. 또한 이미지를 원하는 위치를 정의해야 합니다. 이것은 center, left또는 아마도 right:

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
        display: flex;
        justify-content: center;
    }
    
    .container img {
        width: 100px;
        height: 100px;
    }

    참고: 이 display: flex속성은 이전 버전의 브라우저에서 지원되지 않습니다. 여기에서 더 많은 것을 읽을 수 있습니다 . 또한 이미지가 축소되지 않도록 이미지의 너비와 높이가 정의되어 있음을 알 수 있습니다.

    div이제 이미지를 세로 로 가운데에 맞추는 방법을 알아보겠습니다 . 나중에 우리는 이미지를 div수평 및 수직으로 중앙에 배치하여 완벽한 중앙으로 만드는 방법을 볼 것입니다.

    Display-Flex를 사용하여 수직으로 Div에서 이미지를 가운데에 맞추는 방법

    display-flex 방법으로 이미지를 수평으로 중앙에 정렬할 수 있었던 것처럼 수직으로도 동일한 작업을 수행할 수 있습니다.

    그러나 이번에는 justify-content속성을 사용할 필요가 없습니다. 오히려 다음 align-items속성을 사용합니다.

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
        display: flex;
        align-items: center;
    }
    
    .container img {
        width: 100px;
        height: 100px;
    }

    height이 방법이 작동하려면 컨테이너 에 높이를 계산하고 중심 위치를 아는 데 사용할 지정된 컨테이너가 있어야 합니다 .

    Position 및 Transform 속성을 사용하여 수직으로 Div에서 이미지를 가운데에 맞추는 방법

    position이전에 및 속성 을 사용 transform하여 이미지를 수평으로 중앙에 배치한 것과 유사하게 수직으로도 동일하게 수행할 수 있습니다.

    하지만 이번에는 left또는 를 사용하지 않습니다 right,. 대신 다음 대신 또는 top함께 bottom사용 합니다 .translateYtranslateX

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
        position: relative;
    }
    
    .container img {
        width: 100px;
        height: 100px;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
    }

    div가능한 모든 방법을 사용하여 가로 및 세로 로 이미지를 가운데에 맞추는 방법을 배웠습니다 . 이제 가로와 세로 모두 가운데 정렬하는 방법을 알아보겠습니다.

    Display-Flex를 사용하여 Div의 이미지를 가로 및 세로로 가운데에 맞추는 방법

    display-flex속성은 이미지를 세로 및 가로로 가운데에 맞추는 방법의 조합입니다 .

    justify-contentflex 메서드의 경우 다음으로 설정된 및 align-items속성을 모두 사용하게 됩니다 center.

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
        display: flex;
        justify-content: center;
        align-items: center;
    }
    
    .container img {
        width: 100px;
        height: 100px;
    }

    Position 및 Transform 속성을 사용하여 Div의 이미지를 가로 및 세로로 가운데에 맞추는 방법

    이것은 또한 매우 유사합니다. 당신이 해야 할 일은 수직 및 수평 중앙에 둘 수 있는 두 가지 방법을 결합하기만 하면 되기 때문입니다.

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
        position: relative;
    }
    .container img {
        width: 100px;
        height: 100px;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translateX(-50%) translateY(-50%);
    }

    다음 을 사용하여 translateXand 를 결합할 수도 있습니다 .translateYtranslate(x,y)

    .container {
        width: 200px;
        height: 200px;
        background-color: #0a0a23;
        position: relative;
    }
    .container img {
        width: 100px;
        height: 100px;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }

    마무리

    이 기사에서는 div의 이미지를 세로, 가로 또는 둘 다 가운데에 맞추는 방법을 배웠습니다.

    positionFlexbox 방법 은 웹 페이지를 왜곡하고 매우 까다롭게 작동하기 때문에 이미지를 중앙으로 이동할 때 종종 Flexbox 방법을 사용합니다 .

    여기에서 CSS 위치 방법 에 대해 자세히 알아볼 수 있고 여기 에서 flexbox 방법에 대해 자세히 알아볼 수 있습니다.

    즐거운 코딩하세요!

  • HTML 페이지 Scroll Animation 구현

    HTML 페이지 Scroll Animation 구현

    기본적으로 HTML, CSS, Javascript 세 가지 구성으로 웹 페이지 내에서 스크롤시에 애니메이션을 구현할 수 있다. 아래의 예제는 대표적인 것으로 이해하면 된다. 기타 다양한 상황과 원하는 레이아웃에서의 구성으로 인해 구현 방법은 다를 것으로 예상되지만 대표적으로 많이 사용되는 사례들을 아래에 나열하였다. 부족할 경우 구체적인 구글링으로 원하는 것을 찾아 응용하면 될 것으로 생각된다.

    아래 코드에 이해를 돕기 위해 각주 처리를 참고하여 이해하면 좋을 듯싶다.

    /* 첫 번째 섹션 시작 */
    <section>
      <h1>아래로 스크롤하여 개체 요소 표시하기 ↓</h1>
    </section>
    /* 첫 번째 섹션 끝 */
    /* 두 번째 섹션 시작 */
    <section>
      <div class="container reveal">
        <h2>두 번째 섹션</h2>
        <div class="text-container">
          <div class="text-box">
            <h3>Section Text</h3>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
              eius molestiae perferendis eos provident vitae iste.
            </p>
          </div>
          <div class="text-box">
            <h3>Section Text</h3>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
              eius molestiae perferendis eos provident vitae iste.
            </p>
          </div>
          <div class="text-box">
            <h3>Section Text</h3>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
              eius molestiae perferendis eos provident vitae iste.
            </p>
          </div>
        </div>
      </div>
    </section>
    /* 두 번째 섹션 끝 */
    /* 세 번째 섹션 시작 */
    <section>
      <div class="container reveal">
        <h2>세 번째 섹션</h2>
        <div class="text-container">
          <div class="text-box">
            <h3>Section Text</h3>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
              eius molestiae perferendis eos provident vitae iste.
            </p>
          </div>
          <div class="text-box">
            <h3>Section Text</h3>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
              eius molestiae perferendis eos provident vitae iste.
            </p>
          </div>
          <div class="text-box">
            <h3>Section Text</h3>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
              eius molestiae perferendis eos provident vitae iste.
            </p>
          </div>
        </div>
      </div>
    </section>
    /* 세 번째 섹션 끝 */
    /* 네 번째 섹션 시작 */
    <section>
      <div class="container reveal">
        <h2>네 번째 섹션</h2>
        <div class="text-container">
          <div class="text-box">
            <h3>Section Text</h3>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
              eius molestiae perferendis eos provident vitae iste.
            </p>
          </div>
          <div class="text-box">
            <h3>Section Text</h3>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
              eius molestiae perferendis eos provident vitae iste.
            </p>
          </div>
          <div class="text-box">
            <h3>Section Text</h3>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
              eius molestiae perferendis eos provident vitae iste.
            </p>
          </div>
        </div>
      </div>
    </section>
    /* 네 번째 섹션 끝 */
    @import url('https://fonts.googleapis.com/css2?family=Asap&display=swap');
    *{
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-family: "Asap", sans-serif;
    }
    body{
      background: #42455a;
    }
    section{
      min-height: 100vh;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    section:nth-child(1){
      color: #e0ffff;
      }
    section:nth-child(2){
      color: #42455a;
      background: #e0ffff;
    } 
    section:nth-child(3){
      color: #e0ffff;
    }
    section:nth-child(4){
      color: #42455a;
      background: #e0ffff;
    }
    section .container{
      margin: 100px;
    }
    section h1{
      font-size: 3rem;
      margin: 20px;
    }
    section h2{
      font-size: 40px;
      text-align: center;
      text-transform: uppercase;
    }
    section .text-container{
       display: flex;
    }
    section .text-container .text-box{
      margin: 20px;
      padding: 20px;
      background: #00c2cb;
    }
    section .text-container .text-box h3{
      font-size: 30px;
      text-align: center;
      text-transform: uppercase;
      margin-bottom: 10px;
    }
    
    @media (max-width: 900px){
      section h1{
        font-size: 2rem;
        text-align: center;
      }
      section .text-container{
        flex-direction: column;
      }
    }
    
    .reveal{
      position: relative;
      transform: translateY(150px);
      opacity: 0;
      transition: 1s all ease;
    }
    
    .reveal.active{
      transform: translateY(0);
      opacity: 1;
    }
    function reveal() {
      var reveals = document.querySelectorAll(".reveal");
      for (var i = 0; i < reveals.length; i++) {
        var windowHeight = window.innerHeight;
        var elementTop = reveals[i].getBoundingClientRect().top;
        var elementVisible = 150;
        if (elementTop < windowHeight - elementVisible) {
          reveals[i].classList.add("active");
        } else {
          reveals[i].classList.remove("active");
        }
      }
    }
    window.addEventListener("scroll", reveal);

    고정 Header / Footer 스크롤시 애니메이션 처리

    스크롤시 TEXT 애니메이션 처리

    스크롤시 이미지 Parallax 스크롤에 SVG Mask 처리

    3D EBook Flip Animation

    Cross Color Text Reveal

    스크롤시 좌측 이미지 전환

    스크롤시 타이틀 애니메이션

    Efficient Scroll Zoom

    Physic Milestones Timeline

    Side in on Scroll