본문 바로가기

CSS

chatGPT가 생각하는 가장 아름다운 CSS는 무엇일까? (1)

반응형

가장 아름다운 CSS (1)


chatGPT에게 가장 아름다운 CSS 코드를 작성해달라고 질문을 해보았다.
처음에는 반장난으로 해본 것인데 하다보면 참고할만한 스타일이 나오진 않을까 싶어서 아주 약간 기대 중이다.
과연 chatGPT가 생각하는 아름다운 스타일이 무엇일까

❓ Q. 너가 생각했을 때 가장 아름다운 CSS 코드를 작성해줘

😎 A. CSS는 디자인을 꾸며주는 중요한 언어입니다. 이 중에서도 가장 아름다운 CSS 코드 중 하나는 다음과 같습니다.

<div class="container">
  <div class="box"></div>
</div>

.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #e0e0e0;
}

.box {
  width: 100px;
  height: 100px;
  background-color: #ff5722;
  border-radius: 50%;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  transform: scale(0.5);
  animation: pulse 2s infinite alternate;
}

@keyframes pulse {
  from {
    transform: scale(0.5);
    opacity: 0.7;
  }
  to {
    transform: scale(1.2);
    opacity: 0.1;
  }
}

위 코드는 중앙에 작은 원형 박스를 표시하는 것으로, flexbox를 사용하여 요소들을 가운데 정렬합니다. 배경 색상은 #e0e0e0으로 지정합니다.
박스는 100px x 100px의 크기를 가지며, 원형을 만들기 위해 border-radius 속성을 50%로 지정합니다. 박스의 색상은 #ff5722이며, 박스에 그림자 효과를 주기 위해 box-shadow 속성을 사용합니다.
박스는 초기 상태에서 transform: scale(0.5)로 지정하고, 2초 간격으로 크기를 조정하는 애니메이션을 사용합니다. 이를 위해 keyframes를 사용하여 애니메이션 효과를 정의합니다.
이 코드는 작고 간단하지만, 요소들을 정렬하고 박스에 애니메이션을 추가하여 아름다운 CSS 코드를 만들어냅니다. 또한, 가운데 정렬과 그림자 효과를 사용하여 요소들을 더욱 생동감 있게 만들어냅니다.


아래는 chatGPT가 작성해준 코드를 사용한 결과물이다.

🪄 Result

 

오... 뭔가 로딩 화면에 어울릴 것 같은 것을 만들어냈다.
디자인에 썩 재능이 없는 나는 로딩 화면에 말고는 어디에 써야할 지 도저히 모르겠다. 하하....
그렇다면 chatGPT는 왜 저게 아름답다고 생각했을까?

❓ Q. 왜 저게 아름답다고 생각했어?

😎 A. 저 코드가 아름다운 이유는, 다음과 같은 이유들이 있습니다.

  • 단순함과 균형: 이 코드는 매우 간단한데도, 균형잡힌 디자인을 구현했습니다. 하나의 div에 두 개의 요소만 있으며, 이들은 서로 균형을 이루고 있습니다.
  • 생동감: 박스의 애니메이션은 생동감을 더해줍니다. 이러한 애니메이션은 요소들을 더욱 활기차고 생동감 있게 만듭니다.
  • 적절한 색상: 배경색은 은은하고 부드러운 회색으로, 박스의 색상은 선명한 주황색으로 설정되어 있습니다. 이 두 가지 색상은 서로 어울리며, 시선을 붙잡는 효과를 만들어냅니다.
  • 적절한 애니메이션: 박스의 애니메이션은 간단하면서도 효과적입니다. 변화하는 크기와 투명도, 반전되는 애니메이션 방향 등이 조화롭게 결합되어, 자연스러운 느낌을 주며 눈길을 사로잡습니다.

간단하지만 균형잡힌 디자인, 생동감, 시선을 집중시키는 효과 등의 이유가 있다고 한다.
이렇게 받아보기만 한다면 재미없으니 해당 코드를 활용하여 무언가를 만들어보자.
위에서 말했듯이 디자인에 재능이 없는 나는 로딩 화면 밖에 생각이 나지 않는다...하하...
(블로그 소개문을 읽어보신 분들은 아시겠지만, 나는 전문 개발자가 아니고 취미로 코딩을 배우고 있다.)
현업이 개발자이신 분들은 그냥 재미로만 봐주시길 바란다...하하...
카페에서 글을 작성하는 중에 위층에 당구장이 있길래 당구장 컨셉으로 로딩 화면을 만들어보았다.

단순하게 색을 구분하는 class를 추가하고 각 색별로 딜레이만 0.5s 차이나게 추가해주었다.
뭔가 심심해서 당구장 공이라는 것을 그나마 인지할 수 있게 검정색 공은 트레이드 마크인 8번 공으로 만들어보았다.

 
 
 
8


  <div class="ball-container">
    <div class="ball-box ball-red"></div>
    <div class="ball-box ball-blue"></div>
    <div class="ball-box ball-green"></div>
    <div class="ball-box ball-black">
      <div class="number-8">8</div>
    </div>
  </div>


.ball-container {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 50px;
  margin-bottom: 50px;
  gap: 10px;
}

.ball-box {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  transform: scale(0.5);
  animation: ball-pulse 2s infinite alternate;
}

.ball-red{
  background-color: #f30c0c;
  animation-delay: 0s;
}

.ball-blue{
  background-color: #1c43f3;
  animation-delay: 0.5s;
}

.ball-green{
  background-color: #37f382;
  animation-delay: 1s;
}

.ball-black{
  background-color: #212121;
  animation-delay: 1.5s;
  display: flex;
  align-items: center;
  justify-content: center;
}

.number-8{
  width: 22px;
  height: 22px;
  background-color: white;
  text-align: center;
  border-radius: 100%;
  font-size: 0.8rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
@keyframes ball-pulse {
  from {
    transform: scale(0.6);
    opacity: 0.7;
  }
  to {
    transform: scale(1.2);
    opacity: 0.1;
  }
}
반응형

loading