Putton Project v1

한강섭·2025년 6월 27일

Putton 프로젝트

목록 보기
1/3
post-thumbnail

3D Button Effects 크롬 확장 프로그램 기획서


1. 프로젝트 개요

목표

웹사이트의 버튼 요소들에 시각적으로 매력적인 3D 효과를 자동으로 적용하여 사용자의 웹 브라우징 경험을 향상시키는 크롬 확장 프로그램 개발

타겟 사용자

  • 웹 디자인에 관심이 있는 일반 사용자
  • 웹사이트 인터페이스를 개선하고 싶은 사용자
  • 시각적 효과를 즐기는 사용자

2. 핵심 기능

주요 기능

  1. 자동 버튼 감지 및 3D 효과 적용

    • 웹페이지의 모든 버튼 요소 자동 감지
    • 실시간 3D 변환 효과 적용
  2. 다양한 3D 효과 스타일

    • 클래식 3D (그림자 + 변형)
    • 네온 글로우 3D
    • 글래스모피즘 3D
    • 메탈릭 3D
  3. 사용자 커스터마이징

    • 효과 강도 조절 (약함/보통/강함)
    • 색상 테마 선택
    • 애니메이션 속도 조절
  4. 스마트 제어

    • 전체 on/off 토글
    • 사이트별 화이트리스트/블랙리스트
    • 특정 요소 제외 기능
    • 자동 추천 기능

부가 기능

  • 효과 미리보기
  • 설정 내보내기/가져오기
  • 사용 통계 (적용된 버튼 수 등)

3. 기술적 구현 방법

핵심 컴포넌트

1. Manifest.json

{
  "manifest_version": 3,
  "name": "3D Button Effects",
  "version": "1.0.0",
  "permissions": [
    "activeTab",
    "storage",
    "scripting"
  ],
  "content_scripts": [...],
  "action": {...},
  "options_page": "options.html"
}

2. Content Script (JavaScript)

  • 버튼 감지 로직: querySelector를 통한 버튼 요소 탐지
  • MutationObserver: 동적 생성 버튼 감지
  • 스타일 적용: CSS 클래스 동적 추가/제거
  • 사용자 설정 적용: Storage API를 통한 설정 반영

3. CSS 스타일 시스템

/* 기본 3D 효과 */
.btn-3d-classic {
  transform: perspective(1000px) rotateX(0deg);
  box-shadow: 0 5px 15px rgba(0,0,0,0.3);
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 호버 효과 */
.btn-3d-classic:hover {
  transform: perspective(1000px) rotateX(-5deg) translateY(-2px);
  box-shadow: 0 8px 25px rgba(0,0,0,0.4);
}

4. 팝업 UI (Vue.js 기반)

// popup.js (Vue.js 스타일)
const { createApp } = Vue;

createApp({
  data() {
    return {
      isEnabled: true,
      currentStyle: 'classic',
      intensity: 'medium'
    }
  },
  methods: {
    toggleEffect() {
      // 효과 토글 로직
    },
    changeStyle(style) {
      // 스타일 변경 로직
    }
  }
}).mount('#app');

4. 기술 스택

프론트엔드

  • HTML5: 팝업 및 옵션 페이지 구조
  • CSS3: 3D 변환 및 애니메이션
  • Vanilla JavaScript: Content Script 로직
  • Vue.js 3: 팝업 UI 컴포넌트 (CDN 방식)

브라우저 API

  • Chrome Extension APIs: Storage, Tabs, Scripting
  • Web APIs: MutationObserver, IntersectionObserver

개발 도구

  • Chrome Extension CLI: 개발 환경 구축
  • ESLint: 코드 품질 관리
  • Webpack: 번들링 (필요시)

5. 파일 구조

3d-button-effects/
├── manifest.json
├── icons/
│   ├── icon16.png
│   ├── icon48.png
│   └── icon128.png
├── popup/
│   ├── popup.html
│   ├── popup.js
│   └── popup.css
├── options/
│   ├── options.html
│   ├── options.js
│   └── options.css
├── content/
│   ├── content.js
│   └── styles/
│       ├── classic.css
│       ├── neon.css
│       ├── glass.css
│       └── metallic.css
├── background/
│   └── service-worker.js
└── utils/
    ├── storage.js
    └── button-detector.js

6. 주요 도전 과제 및 해결 방안

도전 과제

  1. 기존 웹사이트 스타일과의 충돌

    • 해결: CSS 우선순위 조절 및 !important 최소 사용
    • 스타일 격리를 위한 고유 클래스명 사용
  2. 성능 최적화

    • 해결: 디바운싱을 통한 DOM 조작 최소화
    • 가시 영역 내 요소만 처리하는 IntersectionObserver 활용
  3. 다양한 버튼 형태 감지

    • 해결: 포괄적인 CSS 셀렉터 및 머신러닝 기반 감지 로직
  4. 브라우저 호환성

    • 해결: 최신 CSS 기능 사용 시 폴백 제공
profile
기록하고 공유하는 개발자

2개의 댓글

comment-user-thumbnail
2025년 6월 27일

프로젝트를 몇개를 하는거죠..? 미쳤다

1개의 답글