찾다
웹 프론트엔드CSS 튜토리얼프론트엔드 챌린지에 대한 나의 제출물(12월&#

프런트엔드 챌린지 - 12월 에디션, Glam Up My Markup: Winter Solstice

에 대한 제출물입니다.

내가 만든 것

웹사이트는 여기 있습니다: https://plutonium-239.github.io/dev.to-frontend-challenge/
내 목표는 주어진 일반 HTML을 더욱 대화식으로 만드는 것이었습니다. 그리고 유용합니까?. 모든 섹션에 일관된 스타일을 추가하고, 중요 용어를 강조하여 콘텐츠를 더 빠르게 파악하는 동시에 대비를 더 추가했습니다. 또한 모바일 레이아웃에 맞게 사이트를 최적화했으며 상호 작용이 적음에도 불구하고 사이트의 테마가 잘 구성되어 있고 유용합니다.

데모

소스 코드는 https://github.com/plutonium-239/dev.to-frontend-challenge에서 공개적으로 제공됩니다

여행

테마/CSS

동지가 북반구에서 일년 중 낮이 가장 짧은 날을 경험하게 되기 때문에 밤하늘을 테마로 하고 싶었습니다. 그래서 저는 우리의 오랜 친구인 Particles.js를 기억했습니다. 지금은 메모리 누수 수정, 최적화 및 TypeScript 재작성을 통해 tsParticles로 변환되었습니다. 이는 페이지의 배경을 형성합니다. 산만하지 않으면서도 생기있고 심미적으로 보기 좋게 구성했습니다. 이 설정을 얻는 것은 예상하지 못한 고통이었습니다. 최신 버전에는 필요한 모든 것이 포함되어 있고 한 줄로 시작할 수 있도록 전역을 내보내는 tsparticles.bundle.js가 있지만 그렇지 않았습니다. tsparticles.engine.js를 사용하는 동안 수동으로 설정을 호출하려고 했지만 소용이 없었습니다. 이는 유용한 문서 부족으로 인해 어려움을 겪고 있습니다. 나는 또한 하나의 예제 사용법이 있는 슬림 버전을 시도했지만 작동하지 않았습니다. 나는 버전을 이전 버전으로 교체하려고 시도했고(필요한 것은 대부분 새로운 기능이 아니라 기본적인 동작이었기 때문에) 1.43.1로 금을 얻었습니다. Readme의 지침을 따르면 라이브가 가능할 것으로 예상할 수 있지만 여기서는 그렇지 않았습니다.

색 구성표를 선택한 것은 일종의 재미있는 우연이었습니다. 나는 텀블러 게시물/밈의 스크린샷을 보았고 그 안에 있는 색상이 정말 마음에 들었습니다. 말 그대로 Google Lens를 통해 고해상도 이미지를 검색하고 색상을 추출했습니다. 이를 통해 3가지 기본 색상(표면, 기본, 활성)이 제공되었습니다. 다른 색상의 경우 그중 하나는 빨간색-분홍색 음영이고 다른 하나는 녹색/청록색이기를 원했습니다. 나는 이 범위에서 몇 가지 색상을 선택하고 현재 색상 팔레트와 일치하도록 음영을 일치시켰습니다. 대체 색상 팔레트를 사용해 볼 수 있는 Colormind와 같은 훌륭한 도구에 대해 배웠습니다.

My submission for the Frontend Challenge (Dec

타이포그래피에 관해서는 오랫동안 Readex Pro 글꼴을 알고 있었는데 정말 마음에 듭니다. 제목의 표시 글꼴과 일반 텍스트의 기본 글꼴로 모두 잘 작동합니다. 나는 다른 몇 가지(Noto, Raleway)를 시도했지만 결국 Readex Pro를 사용하게 되었습니다. 모든 텍스트에 고정 폭 글꼴을 사용하는 것도 고려했지만 이 페이지의 콘텐츠가 해당 스타일과 호환되지 않았습니다.

다음은 스크롤 기반 애니메이션입니다! 나는 이것을 한동안 실제 웹사이트에서 사용하고 싶었고 목차와 제목에 포함시켰습니다. Firefox (여전히) 애니메이션 범위를 지원하지 않는 문제(그리고 스크롤 기반 애니메이션 자체는 기본적으로 플래그 뒤에서 비활성화됩니다1). 그래서 해킹을 구현해야 했습니다. -ish 수정(그러나 여전히 플래그를 활성화해야 함).

콘텐츠/HTML(JS를 통해)/CSS

콘텐츠에 와서 저는 두 가지 방법으로 이를 수행했습니다.

  1. JS를 통해 텍스트에 하이라이트 추가 - 본질적으로 innerHTML을 대체해야 하는데 기분이 좋지 않지만 HTML을 수정할 수 없다는 점은 상당히 제한적입니다. JS를 사용하여 요소를 삽입하여 소개에 이미지도 추가했습니다. 약간의 페이드인 효과를 추가하고 싶어서 이렇게 했습니다. 처음에는 섹션의 ::after에서 CSS 배경을 통해 이 작업을 수행했지만 다양한 데스크톱 크기와 모바일에서 페이드가 일관되게 (즉, 이미지의 상단 가장자리가 눈에 띄게 선명하지 않도록) 되도록 했습니다. 불가능한 것으로 밝혀졌습니다. 그래서 섹션에 새 요소를 추가한 다음 이미지 자체에 제한된 ::after 의사 요소의 스타일을 지정해야 했습니다. 이는 매우 잘 작동합니다.
  2. CSS를 통해 축하 이미지 추가 - 네 가지 축하 각각에 대해 다양한 소스(제공)를 통해 적합한 그림을 찾아 의사 요소를 통해 추가했습니다. 나는 그들에게 멋진 시차 스타일을 부여하고 호버 상호 작용에 대한 전체 이미지 표시도 추가했습니다. 이미지가 다양하기 때문에 최선을 다해 고해상도의 이미지를 찾은 후 ImageMagick을 사용하여 800px의 균일한 너비를 갖도록 크기를 조정했습니다. 저는 .celebration 클래스를 사용하여 프레임워크를 정의하고 각 특정 축하에 대한 CSS 변수를 사용하여 이미지 URL(및 크레딧 텍스트)을 정의하는 영리한 방법으로 이를 구현했습니다.

전통 페이지의 경우 목록 마커를 사용자 정의 @counter 스타일로 변경하고 사용 방법을 배웠습니다. 이는 매우 멋진 기능입니다!

상호작용: IntersectionObserver API를 사용하여 TOC에 스크롤 표시기를 추가했습니다. 이는 매우 간단했습니다. 교차로를 확인하고 클래스를 설정하면 끝입니다!

또한 축하 목록 항목에 호버 효과가 있어 해당 이미지 전체가 드러납니다. CSS를 통해 이미지를 ::after의 콘텐츠로 설정하고 마우스 오버 시 표시되도록 하여 이 작업을 수행했습니다.

?페이지 마지막에 멋진 작은 비밀을 추가했을 수도 있습니다?

캔버스 API와 스크롤 리스너를 사용합니다. 꽤 멋있어 보이지만 나머지 스타일링과도 잘 어울리는지는 100% 확신할 수 없었습니다.


결론

저는 직업상 UI 디자이너/웹 개발자가 아닙니다. 사실 저는 ML 연구원입니다. 하지만 저는 앱/웹사이트를 디자인했고 창의적인 것을 좋아합니다!

그래서 챌린지 포스팅을 보고 재미있겠다는 생각은 들었지만 너무 심각하게 받아들일 생각은 없었습니다. 그런데 우연히 위에서 얘기한 스크린샷과 오래된 입자.js 효과를 사용하는 웹사이트를 보았는데, 그 둘은 어느 순간 클릭됐을 겁니다. 그것을 크리스마스의 기적이라고 부르세요! ?

향후 계획은 딱히 없고, 계획했던 일 이상을 한 것 같은 기분이에요.

다른 사람들의 제출물을 살펴보면 HTML을 직접 편집할 수 없다는 것이 명확하지 않은 것 같습니다. 저는 이 설정된 규칙을 따르고 실제 마크업 콘텐츠를 편집하지 않고 CSS용 스크립트 태그와 링크 태그만 추가했습니다.

코드는 MIT 라이선스에 따라 사용할 수 있습니다.


  1. firefox/기반 브라우저(예: Zen)를 사용하는 경우 about:config ↩에서 레이아웃.css.scroll-driven-animations.enabled를 활성화하세요.

위 내용은 프론트엔드 챌린지에 대한 나의 제출물(12월&#의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
CSS 그리드는 무엇입니까?CSS 그리드는 무엇입니까?Apr 30, 2025 pm 03:21 PM

CSS 그리드는 복잡하고 반응이 좋은 웹 레이아웃을 만드는 강력한 도구입니다. 디자인을 단순화하고 접근성을 향상 시키며 이전 방법보다 더 많은 제어를 제공합니다.

CSS Flexbox 란 무엇입니까?CSS Flexbox 란 무엇입니까?Apr 30, 2025 pm 03:20 PM

기사는 반응 형 설계에서 공간의 효율적인 정렬 및 분포를위한 레이아웃 방법 인 CSS Flexbox에 대해 설명합니다. Flexbox 사용을 설명하고 CSS 그리드와 비교하고 브라우저 지원 세부 사항을 설명합니다.

CSS를 사용하여 웹 사이트를 반응하게 만드는 방법은 무엇입니까?CSS를 사용하여 웹 사이트를 반응하게 만드는 방법은 무엇입니까?Apr 30, 2025 pm 03:19 PM

이 기사는 Viewport Meta 태그, 유연한 그리드, 유체 미디어, 미디어 쿼리 및 상대 장치를 포함하여 CSS를 사용하여 반응 형 웹 사이트를 만드는 기술에 대해 설명합니다. 또한 CSS 그리드 및 Flexbox를 함께 사용하여 CSS 프레임 워크를 권장합니다.

CSS 박스 크기 부동산은 무엇을합니까?CSS 박스 크기 부동산은 무엇을합니까?Apr 30, 2025 pm 03:18 PM

이 기사는 요소 치수 계산 방법을 제어하는 ​​CSS 박스 크기 속성에 대해 설명합니다. Content-Box, Border-Box 및 Padding-Box와 같은 값과 레이아웃 설계 및 형태 정렬에 미치는 영향을 설명합니다.

CSS를 사용하여 어떻게 애니메이션 할 수 있습니까?CSS를 사용하여 어떻게 애니메이션 할 수 있습니까?Apr 30, 2025 pm 03:17 PM

기사는 CSS, 주요 특성 및 JavaScript와 결합 된 애니메이션 작성에 대해 논의합니다. 주요 문제는 브라우저 호환성입니다.

CSS를 사용하여 프로젝트에 3D 변환을 추가 할 수 있습니까?CSS를 사용하여 프로젝트에 3D 변환을 추가 할 수 있습니까?Apr 30, 2025 pm 03:16 PM

기사는 3D 변환, 주요 속성, 브라우저 호환성 및 웹 프로젝트에 대한 성능 고려 사항에 대한 CSS 사용에 대해 논의합니다. (문자 수 : 159)

CSS에 기울기를 추가 할 수있는 방법은 무엇입니까?CSS에 기울기를 추가 할 수있는 방법은 무엇입니까?Apr 30, 2025 pm 03:15 PM

이 기사는 CSS 그라디언트 (선형, 방사형, 반복)를 사용하여 웹 사이트 비주얼을 향상시키고 깊이, 초점 및 현대적인 미학을 추가합니다.

CSS의 의사 요소는 무엇입니까?CSS의 의사 요소는 무엇입니까?Apr 30, 2025 pm 03:14 PM

기사는 CSS의 의사 요소, HTML 스타일을 향상시키는 데 사용 및 의사 급의 차이점에 대해 설명합니다. 실제 사례를 제공합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.