장면 1:
프로그래머인 주인공 이민재는 책상에 앉아 HTML과 CSS 파일을 작성하고 있었다. 그의 눈은 화면에 떠오른 각 요소의 조화로움에 매료되었다. 그러나 예상치 못한 문제가 발생했다.
"왜 안 되는 거지?" 이민재는 속으로 중얼거렸다. 화면을 살펴보고 다시 코드를 살펴보았지만, 오류는 잡히지 않았다.
그때, 동료 개발자인 박지훈이 다가와서 물었다. "어떤 문제야?"
이민재는 고개를 끄덕였다. "이건 좀 이상해. 내가 스타일을 적용하려고 하는데, 왜 일부 요소들이 제대로 작동하지 않는 걸까?"
박지훈은 웃으며 이야기했다. "CSS를 다루는 것은 예술이야. 때로는 예상치 못한 결과가 나올 수 있어."
[HTML 소스코드]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Code's Aesthetic</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <button class="button">Click me</button>
</body>
</html>

[CSS 소스코드]

.button {
    width: 100px; /* 버튼의 너비 */
    height: 50px; /* 버튼의 높이 */
    background-color: blue;
    color: white;
    padding: 10px; /* 안쪽 여백 */
    margin: 5px; /* 바깥 여백 */
    border-radius: 5px; /* 모서리 둥글게 만들기 */
}

 
장면 2:
이민재는 CSS 코드를 이리저리 수정해보았지만, 문제를 해결할 수 없었다. 그의 마음은 점점 더 괴로워졌고, 프로젝트의 진행이 멈추어 버린 것처럼 느껴졌다.
그때, 회사의 디자이너 김하늘이 들어왔다. "어떻게 도와줄까?" 김하늘이 물었다.
이민재는 문제에 대해 설명하고 코드를 보여주었다. 김하늘은 심각한 표정으로 화면을 살펴보더니, 한숨을 내쉬며 말했다. "이건 정말 까다로운 문제네. 하지만, 내가 도와줄게."
김하늘은 이민재와 함께 코드를 검토했고, 몇 가지 조언을 해주었다. "이 요소를 이렇게 변경해보고, 여기서 조금 더 간격을 줘보는 게 어때?"
[수정된 CSS 소스코드]

.button {
    width: 120px; /* 너비 조정 */
    height: 40px; /* 높이 조정 */
    background-color: blue;
    color: white;
    padding: 15px; /* 패딩 조정 */
    margin: 5px;
    border-radius: 8px; /* 경계선 굴곡도 조정 */
}

 
장면 3:
이민재는 김하늘의 조언을 받아들이고 코드를 수정하기 시작했다. 그의 손은 키보드를 타고, 마우스는 화면을 클릭하며, 코드는 점차 완벽한 모습으로 다가왔다.
마침내, 그는 마지막 수정을 마치고 화면을 다시 살펴보았다. 이번에는 모든 것이 원활하게 작동했다. 그의 얼굴에는 만족한 미소가 번졌고, 프로젝트는 다시 원활하게 진행되었다.
그는 김하늘에게 감사의 말을 전하고, CSS의 아름다움과 까다로움을 깨닫게 되었다. 코드의 미학은 예상치 못한 도전과 협업을 통해 발견되는 것이었다. 그는 이 경험을 통해 더 나은 웹 개발자로 성장하고자 다짐했다.

'잘나가는 웹소설' 카테고리의 다른 글

[웹소설] 격돌과 협업의 길  (2) 2024.03.23
[웹소설] 개발 일정의 갈등  (0) 2024.03.20
[웹소설] 세미콜론의 고난  (0) 2024.03.16

애니메이션 사용하기 @keyframes


웹사이트에서 애니메이션 만드는 방법은 자바스크립트로 제작을 많이들 하시는데요.

오늘은 CSS를 이용해서 애니메이션을 구현하는걸 설명드리겠습니다.

우선 동영상을 보면서 애니메이션 동작 설명부터 하겠습니다.



동영상을 보시면 비쥬얼 이미지가 위 아래로 이동되는 애니메이션 효과가 있는데요.

자바스크립트로도 구현이 가능하나 CSS를 이용하면 보다 적은 코드로 가능하다는걸 알 수 있습니다.


방법은 CSS animation 속성과 @keyframes 함수를 이용하는것인데요.


animation 속성의 하위 속성은 다음과 같습니다.

animation-delay
엘리먼트가 로드되고 나서 언제 애니메이션이 시작될지 지정합니다.
animation-direction
애니메이션이 종료되고 다시 처음부터 시작할지 역방향으로 진행할지 지정합니다.
animation-duration
한 싸이클의 애니메이션이 얼마에 걸쳐 일어날지 지정합니다.
animation-iteration-count
애니메이션이 몇 번 반복될지 지정합니다. infinite로 지정하여 무한히 반복할 수 있습니다.
animation-name
이 애니메이션의 중간 상태를 지정합니다. 중간 상태는  @keyframes 규칙을 이용하여 기술합니다.
animation-play-state
애니메이션을 멈추거나 다시 시작할 수 있습니다.
animation-timing-function
중간 상태들의 전환을 어떤 시간간격으로 진행할지 지정합니다.
animation-fill-mode
애니메이션이 시작되기 전이나 끝나고 난 후 어떤 값이 적용될지 지정합니다.


p {
  animation-duration: 3s;
  animation-name: slidein;
}

@keyframes slidein {
  from {
    margin-left: 100%;
    width: 300%; 
  }

  to {
    margin-left: 0%;
    width: 100%;
  }
}


animation 효과에 대해서 더 자세한 정보를 원하시면 아래 링크로 들어가시면됩니다.


https://developer.mozilla.org/ko/docs/Web/CSS/CSS_Animations/Using_CSS_animations#애니메이션_적용하기

https://www.w3schools.com/css/css3_animations.asp