🏗️ 페이지 구조 & 레이아웃 완전 분석

명함 프로필 페이지의 HTML DOM 구조, 각 요소의 ID/Class, 역할을 완전히 분석합니다.

전체 DOM 트리 구조

<body onclick="resizeImg()">
├── <input type="hidden" id="mem_id">          ← 로그인 사용자 ID
├── <input type="hidden" id="send_ids">        ← 전송 대상 ID 목록
├── <input type="hidden" id="exp_status">      ← 체험판 상태
├── <input type="hidden" id="Gn_contents_limit" value="200">  ← 콘텐츠 제한
├── <iframe id="app" style="display:none">     ← 앱 통신용 숨은 iframe
├── <div id="zoomInVideo">                      ← 비디오 확대 팝업 (숨김)
│   └── <div id="btnZoomOut" onclick="clickZoomOut()">
├── <div id="contents_page">                   ← 콘텐츠 미리보기 (숨김)
│
├── <div id="wrap" class="common-wrap">        ← ★ 메인 래퍼
│   ├── <header id="header" style="position:fixed; z-index:100">
│   │   ├── 언어 선택 드롭다운 (한국어/영어/중국어/일본어/힌디어/프랑스어)
│   │   ├── IAM 로고 (왼쪽)
│   │   ├── 알림 배지 (중앙)
│   │   └── 메뉴 아이콘들 (오른쪽)
│   │       ├── #show_contents_mode (콘텐츠 모드 토글: 핀/이미지)
│   │       ├── #btn_notice (공지사항) → onclick="openNoticeModal()"
│   │       ├── #btn_ai_chat (GPT채팅) → href="[내부페이지]/[GPT채팅]"
│   │       ├── 검색 버튼 → onclick="showSample()"
│   │       ├── #btn_intro (안내) → onclick="showIntro()"
│   │       ├── 장바구니 → onclick="go_cart()"
│   │       └── #btn_login (로그인) → href="[내부페이지]/[로그인]"
│   │
│   ├── <div id="footer_menu" style="position:fixed; bottom:0">
│   │   ├── 앱홈 → onclick="goIamHome()"
│   │   ├── 내명함 → onclick="iam_mystory('...cur_win=my_info')"
│   │   ├── 추천 → onclick="iam_mystory('cur_win=we_story')"
│   │   ├── 명함관리 → onclick="location.href='[내부페이지]/[로그인]'"  ← 현재 활성화
│   │   ├── #btn_notice → 소식
│   │   ├── #btn_ai_chat → GPT채트
│   │   ├── 검색 → showSample()
│   │   └── #btn_intro → showIntro()
│   │
│   ├── <main id="star" class="common-wrap" style="margin-top:52px">
│   │   ├── <section id="middle">              ← ★ 종이명함 검색 & 리스트
│   │   │   ├── 탭 영역 (.tab-content #myTabContent)
│   │   │   └── <div class="tab-pane" id="paper">
│   │   │       ├── 검색바: #paper_search_str (input) + paper_submit() 버튼
│   │   │       ├── 명함 개수 표시: #paper_chk_count
│   │   │       ├── 정렬 드롭다운: paper_range('1'/'3'/'5', label)
│   │   │       ├── 프로필자동검색 설정: toggleAutoExpand(1)
│   │   │       ├── + 버튼: #paper_plus → add_paper_card() (앱에서만 보임)
│   │   │       └── 리스트 영역: #papercard_list (AJAX로 동적 로딩)
│   │   │           └── 각 항목 .list-item
│   │   │               ├── 체크박스 (name=paper_chk)
│   │   │               ├── 이름, 직책, 기관명, 전화번호
│   │   │               └── 수정/삭제/전화 버튼
│   │   │
│   │   └── <section id="bottom">              ← 콘텐츠 그리드 (샘플/몰)
│   │       └── .content_main (AJAX로 동적 로딩)
│   │
│   ├── <div id="ajax_div" style="display:none"> ← AJAX 응답 임시 저장
│   └── <footer id="footer">                   ← 푸터 (거의 빈 공간)
│
├── <div id="ajax-loading">                     ← AJAX 로딩 스피너
├── <div id="tutorial-loading">                 ← 튜토리얼 로딩
│
├── 여러 숨은 input들:
│   ├── #favorite (즐겨찾기)
│   ├── #check_rnum (인증번호 확인)
│   ├── #card_url value="[서비스도메인]/?cur_win=paper_card"
│   ├── #contents_mode value="up"
│   └── #contents_idx
│
└── 모달(Modal)들 (Bootstrap modal, 기본 숨김)
    ├── #settlement_contents_modal (결제/이용내역)
    ├── #card_send_modal (카드 전송)
    ├── #contents_send_modal (콘텐츠 전송)
    ├── #people_iam_modal (사람 IAM)
    ├── #install-modalwindow (앱 설치 안내)
    ├── #group_contents_list_modal (그룹 콘텐츠)
    ├── #paper_list_edit_modal ★ (종이명함 정보입력)
    ├── #paper_sender_edit_modal ★ (AI명함퍼널 발신자정보)
    ├── #show_paper_comment (코멘트 보기)
    ├── #card_con_modal (카드 콘텐츠 메뉴)
    ├── #sns-modalwindow (SNS 공유)
    ├── #mypage-modalwindow (마이페이지)
    └── #preview_aiprompt_modal (AI 프롬프트 미리보기)

핵심 DOM 요소 상세

헤더 (header)

position:fixed로 항상 화면 상단에 고정됩니다. z-index:100으로 다른 요소 위에 표시됩니다.

요소기능
언어 드롭다운한국어/영어/중국어/일본어/힌디어/프랑스어 전환 (set_language)
IAM 로고좌측 브랜드 로고 (클릭 시 홈으로)
#show_contents_mode콘텐츠 표시 모드 토글 (이미지↔핀 모드)
#btn_notice공지사항 모달 열기
#btn_login로그인/회원가입 페이지 링크

푸터 메뉴 (footer_menu)

position:fixed로 항상 화면 하단에 고정됩니다. 높이 60px, 흰 배경에 상단 경계선.

함수 호출대상 창
앱홈goIamHome()/m (모바일홈)
내명함iam_mystory('K956MVFvn43288398&type=image&cur_win=my_info')my_info
추천iam_mystory('cur_win=we_story&type=pin&pre_win=paper_card')we_story
명함관리location.href='[내부페이지]/[로그인]'★ 현재 활성

레이아웃 모드

key1_gwc_show 값에 따라 두 가지 레이아웃이 적용됩니다:

모드 1: 일반 모드 (key1_gwc_show ≠ '4')

모드 2: 와이드 모드 (key1_gwc_show == '4')

반응형 동작

checkMobile() 함수 결과에 따라:

환경카드 너비미디어 최대 높이
모바일49% (2열)350px
데스크탑24% (4열), 최소 130px기본값
💡 핵심 포인트: 페이지의 모든 위치 기반 요소(헤더, 푸터)는 position:fixed로 고정되어 있어 스크롤해도 항상 보입니다. 실제 콘텐츠는 #star 영역(margin-top:52px)에 표시됩니다.

주요 CSS 클래스

클래스파일용도
.common-wrapstyle.css메인 래퍼 (최대너비, 중앙정렬, 패딩)
.squareiam.css110% 비율 박스 (padding-bottom 트릭)
.contentiam.css카드 상단 85% (이미지 영역)
.content2iam.css카드 하단 15% (텍스트 정보)
.btn-activeiam.css활성 버튼 (녹색 #99cc00)