묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 시작은 프리캠프
복사붙여녛기가 끝인데
피그마 css에 나오는 부분을 복사붙여넣기 하면 끝인데 과제라는 의미가 있나요? 복붙만 하는 건데 도움이 되는 건가요?
-
미해결처음 만난 리액트(React)
여기서 백틱으로 감싸주는 이유가 궁금합니다.
const Wrapper = ~~~ 아래에 백틱으로 감싸주는 이유가 궁금합니다.그리고 왜 저는 강사님처럼 안나오고 전부 붉게 나올까요..?
-
미해결실전! 웹사이트제작! Step by Step! ('크루알라모드'_반응형웹 제작)
수업자료 오류
안녕하세요.수업자료 다운시 내용이 없습니다.압축폴더가 올바르지 않다며 풀리지도 않습니다.jaja29@naver.com으로 보내주실 수 있을까요?
-
미해결초보자도 만들 수 있는 스크롤 인터렉션. 1편 자바스크립트
섹션12 보너스 챕터에 관한 질문입니다!
섹션12에서 텍스트가 나타나고 사라지는 인터렉션에서 처음 텍스트를 스크롤 하지 않고 처음 텍스트만 보이다가 스크롤이 시작되고 나서 사라지고 다음텍스트가 보이게 하려면 어떻게 코드를 작성해야할까요?
-
미해결[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
결과 계산하기에서 콘솔이 다르게 찍힙니다.
다른 분들도 비슷한 오류가 있었는데 봐도 해결이 안되어서 질문드립니다.현재 결과 계산하기 파트에서 오류가 생겨 이후 강의는 작성하지 않은 상태입니다. 질문1goResult 함수에서 const select = [] 로 정의된 변수를 실행시키니 0번 인덱스가 비어있음으로 뜹니다. 어떻게 해야 첫번째 인덱스도 함께 나올수 있을까요?function goResult(){ qna.style.WebkitAnimation = "fadeOut 1s" qna.style.animation = "fadeOut 1s" setTimeout(() => { result.style.WebkitAnimation = "fadeIn 1s" result.style.animation = "fadeIn 1s" setTimeout(() => { qna.style.display = "none"; result.style.display = "block"; }, 450) }) console.log(select) calResult() }function goNext(qIdx){ if(qIdx === endPoint){ goResult() return } let q = document.querySelector(".qBox"); q.innerHTML = qnaList[qIdx].q; for (let i in qnaList[qIdx].a){ addAnswer(qnaList[qIdx].a[i].answer, qIdx, i); }; let status = document.querySelector(".statusBar") status.style.width = (100/endPoint) * (qIdx+1) + "%" } 질문 2calResult 함수에서 console.log(resultArray)를 찍으니 아무것도 나오지 않습니다.어디서부터 잘못된지 모르겠습니다..ㅠ function calResult() { let pointArray = [ { name: "mouse", value: 0, key: 0 }, { name: "cow", value: 0, key: 1 }, { name: "tiger", value: 0, key: 2 }, { name: "rabbit", value: 0, key: 3 }, { name: "dragon", value: 0, key: 4 }, { name: "snake", value: 0, key: 5 }, { name: "horse", value: 0, key: 6 }, { name: "sheep", value: 0, key: 7 }, { name: "monkey", value: 0, key: 8 }, { name: "chick", value: 0, key: 9 }, { name: "dog", value: 0, key: 10 }, { name: "pig", value: 0, key: 11 } ]; for (i = 0; i < endPoint; i++) { let target = qnaList[i].a[select[i]]; for (j = 0; j < target.type.length; j++) { for (k = 0; k < pointArray.length; k++) { if (target[j] === pointArray[k].name) { pointArray[k].value += 1; } } } } let resultArray = pointArray.sort(function (a, b) { if (a.value > b.value) { return -1; } if (a.value < b.value) { return 1; } return 0; }); console.log(resultArray); let resultword = resultArray[0].key; return resultword; } 소스 코드만 보내드리면 보시기 힘들어하시는것같아 깃 파일도 같이 첨부하였습니다!https://github.com/kihet77/psychologyTestWeb/tree/main/MyMBTI-main/start
-
미해결처음 만난 리액트(React)
chap05) 저는 왜 폰트가 사진에 딱 붙어서 나올까요?
CSS 코드는 올바르게 짠 것 같은데저는 사진에 착 달라붙어서 폰트가 출력되네요..뭐가 문제일까요?
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
트리거메뉴 제이쿼리
<!doctype html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,700' rel='stylesheet' type='text/css'> <title>DesignWorks Architecture Agency</title> <!-- Page Scroll Effects JS & CSS --> <script src="/js/jquery-2.1.4.js"></script> <script src="js/velocity/modernizr.js"></script> <script src="js/velocity/velocity.min.js"></script> <script src="js/velocity/velocity.ui.min.js"></script> <script src="js/velocity/main.js"></script> <link rel="stylesheet" href="/js/velocity/velocity.css"> <!-- Custom JS & CSS --> <script src="/custom.js"></script> <link rel="stylesheet" href="/style.css"> <link rel="stylesheet" href="/reponsive.css"> </head> <!-- hijacking: on/off - animation: none/scaleDown/rotate/gallery/catch/opacity/fixed/parallax --> <body data-hijacking="on" data-animation="rotate"> <div class="container"> <section class="cd-section visible" id="home"> <div> <div class="content"> <img src="/images/temp-section-01.jpg"> </div> </div> </section> <section class="cd-section" id="about"> <div> <div class="content"> <img src="/images/temp-section-02.jpg"> </div> </div> </section> <section class="cd-section" id="project"> <div> <div class="content"> <img src="/images/temp-section-03.jpg"> </div> </div> </section> <section class="cd-section" id="plan"> <div> <div class="content"> <img src="/images/temp-section-04.jpg"> </div> </div> </section> <section class="cd-section" id="awards"> <div> <div class="content"> <img src="/images/temp-section-05.jpg"> </div> </div> </section> <section class="cd-section" id="location"> <div> <div class="content"> <img src="/images/temp-section-06.jpg"> </div> </div> </section> <section class="cd-section" id="content"> <div> <div class="content"> <img src="/images/temp-section-07.jpg"> </div> </div> </section> <header> <div class="gnb-inner"> <div class="logo"> <a href="#none"><img src="/images/logo.png"></a> </div> <div class="gnb"> <div class="menu"> <a href="#home">Home</a> <a href="#about">About</a> <a href="#project">Project</a> <a href="#plan">Plan & History</a> <a href="#awards">Awards</a> <a href="#location">Location</a> <a href="#contact">Contact</a> </div> <div class="slogan">We design places, not projects.</div> </div> <div class="trigger"> <span></span> <span></span> <span></span> </div> </div> </header> </div> <nav> <ul class="cd-vertical-nav"> <li><a href="#0" class="cd-prev inactive">Next</a></li> <li><a href="#0" class="cd-next">Prev</a></li> </ul> </nav> </body> </html>@media (max-width: 768px) { /* Entire Layout */ .cd-section { height: auto; } .cd-section > div { height: auto; } .content { position: static; width: 100%; height: 100%; } /* Header */ .menu { display: block; } .slogan { display: none; } .gnb { background-color: #fff; position: fixed; top: 0; right: -270px; width: 250px; height: 100vh; box-shadow: -5px 0 10px #0000002a; transition: 0.3s; } .gnb.active { right: 0; } .menu { line-height: 40px; margin-top: 60px; } .menu a { display: block; text-align: right; padding-right: 20px; color: black; font-size: 20px; } /* Trigger */ .trigger { display: block; width: 24px; height: 14px; position: absolute; right: 20px; top: 20px; } .trigger span { position: absolute; height: 1px; width: 100%; background-color: black; transition: 0.3s; } .trigger span:nth-child(1) { top: 0; } .trigger span:nth-child(2) { top: 50%; width: 90%; } .trigger span:nth-child(3) { top: 100%; } .trigger.active span:nth-child(1) { top: 50%; transform: rotate(45deg); } .trigger.active span:nth-child(2) { top: 50%; width: 90%; opacity: 0; } .trigger.active span:nth-child(3) { top: 50%; transform: rotate(-45deg); } }$(function(){ /* Trigger */ $('.trigger').click(function(){ $(this).toggleClass('active') $('.gnb').toggleClass('active') }) $('section, .menu a').click(function(){ $('.gnb').removeClass('active') }) }) 모바일에서 트리거메뉴 클릭시 제이쿼리(아이콘X로 변경 슬라이더메뉴 나오기)가 적용되지 않는데 왜 이럴까요 ㅠ 클레스네임부분에서 틀린게 없습니다
-
해결됨처음 만난 리액트(React)
알림이 1초마다 두 개씩 뜹니다.
분명히 코드를 그대로 따라 쳤는데 1초에 두 번씩 알림이 나오는 경우도 존재하나요?Warning: Each child in a list should have a unique "key" prop. 오류도 떴습니다. 각각 notification.jsx, notificationList.jsx 코드입니다import React from "react" const styles = { wrapper: { margin: 8, padding: 8, display: 'flex', flexDirection: 'row', border: '1px solid grey', borderRadius: 16 }, messageText: { color: 'black', fontSize: 16 } } class Notification extends React.Component { constructor(props) { super(props) this.state = {} } render() { return ( <div style={styles.wrapper}> <span style={styles.messageText}>{this.props.message}</span> </div> ) } } export default Notificationimport React from 'react' import Notification from './notification' const reservedNotifications = [ { message: '안녕하세요, 오늘 일정을 알려드립니다.' }, { message: '점심식사 시간입니다.' }, { message: '이제 곧 미팅이 시작됩니다.' }, { message: '안녕하세요, 오늘 일정을 알려드립니다.' }, { message: '점심식사 시간입니다.' }, { message: '이제 곧 미팅이 시작됩니다.' }, { message: '안녕하세요, 오늘 일정을 알려드립니다.' }, { message: '점심식사 시간입니다.' }, { message: '이제 곧 미팅이 시작됩니다.' }, { message: '안녕하세요, 오늘 일정을 알려드립니다.' }, { message: '점심식사 시간입니다.' }, { message: '이제 곧 미팅이 시작됩니다.' }, ] var timer class NotificationList extends React.Component { constructor(props) { super(props) this.state = { notifications: [] } } componentDidMount() { const { notifications } = this.state timer = setInterval(() => { if(notifications.length < reservedNotifications.length) { const index = notifications.length notifications.push(reservedNotifications[index]) this.setState({ notifications: notifications }) } else { clearInterval(timer) } }, 1000) } render() { return ( <div> {this.state.notifications.map(v => { return <Notification message={v.message}/> })} </div> ) } } export default NotificationList
-
미해결SCSS(SASS)+FLEX 실전 반응형 웹 프로젝트 with Figma
figma 파일 임포팅이 되지 않습니다.
beyond insight > 피그마 원본 > 수강생 참고자료, 파일 임포팅이 되지 않습니다 ㅜ 파일명이 수강생 참고자료(Beyond Insight).fig..fig..fig 입니다.
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
트리거메뉴 제이쿼리
모바일에서 트리거메뉴 클릭시 제이쿼리(아이콘X로 변경 슬라이더메뉴 나오기)가 적용되지 않는데 왜 이럴까요 ㅠ 클레스네임부분에서 틀린게 없습니다
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
선생님 궁금합니다
■ 질문 남기실 때 꼭! 참고해주세요.- 먼저 유사한 질문이 있었는지 검색해주세요.- 궁금한 부분이 있으시면 해당 강의의 타임라인 부분을 표시해주시면 좋습니다.- HTML, CSS, JQUERY 코드 소스를 텍스트 형태로 첨부해주시고 스크린샷도 첨부해주세요.- 다운로드가 필요한 파일은 해당 강의의 마지막 섹션에 모두 있습니다. input type=radio 는 어차피 화면에 안보이게 할껀데왜 작성하나요? 화면에 보이는건 label만 인 것 같은데 궁금합니다!
-
미해결모바일 웹 퍼블리싱 포트폴리오 with Figma
개별페이지 HTML+CSS+JS 퍼블리싱(프리로딩)에서 배경 이미지 관련 질문
안녕하세요.모바일 웹 퍼블리싱 수업을 차근차근 잘 듣고 있습니다.강의 중간중간 설명해주시는 부분이 많은 도움이 되고 있습니다. ^^오늘 프리로딩 퍼블리싱 파트를 들었는데요,배경 이미지가 피그마에서 완성한 디자인과 배율이 달라보이는데 이 부분을 효과적으로 조절하려면 css background 에서 어떻게 조절하면 좋은지 궁금합니다.
-
미해결초보자도 만들 수 있는 스크롤 인터렉션. 1편 자바스크립트
5-3-1 강좌 섹션 질문 합니다.
안녕하세요, 수식 설명 강좌까지도 몇번이고 돌려봐도, 브러우저 스크롤 관점에서도, 애니메이션되는 요소 관점에서도 당최 명확하게 이해가 되지 않아서요,브라우저 스크롤 애니메이션 관련해서 이 강좌만큼 자세한 내용의 것이 없어서, 꼭 이해하고 싶어 이렇게 문의 드립니다.제가 이해한 것은1. 요소의 offsetTop과 scrollTop 값을 통해서 계산한 위치값 포인트에서, 모든 애니메이션이 시작한다(모든 애니메이션의 시작)2. 패럴럭스 애니메이션을 위해서, 해당 이미지가 일어날 섹션이 아닌, 그 위의 섹션 위치에서 애니메이션을 실행한다.3. 값은 1000이든 2000이든 어떤 값에서 0으로 줄어드는 로직으로 계산한다.이 세가지 내용입니다. parallaxThisTop = winScrollTop - parallaxOffsetTop; //패럴럭스가 시작될 위치값을 구함.해당 구문 이후로는 계속 이해가 가질 않아서요 텍스트로 길게 장황하게 라도 설명해주시면, 작성해주신 텍스트 내용 안에서 다시 이해해보는데 큰 도움이 될 듯합니다. 감사합니다.var parallaxSpeed = 1200; // 패럴럭스 요소의 스피드[질문]parallaxSpeed를 거리라고 강좌에서 말씀해주셨는데, 1200로 초기화 될 때, 이때 1200이란 어디를 start로, 기준으로 해서 이미지 요소가 반응하는 걸까요?숫자 1200은 브라우저를 스크롤 할 경우, 이미지 요소들이 반응?하기까지의 간격, 거리 라고 이해하고 있습니다.혹시 이 1200이란 숫자가 작동하기 시작하는 출발점이 parallaxThisTop인가요?거리라고 말씀하셨는데, parallaxSpeed 어디에서 어디까지의 거리를 의미하는지 궁금합니다.parallaxPercent = parallaxThisTop / parallaxSpeed * 100; // 이동할 거리 백분율 값을 담음[질문]여기서 이동할 거리가 브라우저 스크롤를 할 수 있는 거리라는 의미일까요?,이동하는 거리라면, 어디를 출발점으로 시작되는 간격(거리)일까요?강의에서 말씀하시는 거리라는 의미가 브라우저가 스크롤되는 거리와 이미지 요소가 반응하는 거리를 구분해서 의미하면 될까요var parallaxStartValue = 1000; //패럴럭스요소가 200 위치에서 시작하도록 설정합니다.[질문]패럴럭스 요소라 함은 이미지 요소라고 이해하고 있는데요, 200 위치라고 하는 게 어디를 시작점으로 200만큼 y축 아래로 내려온 것인가요?변수명의 의미와 용도에 대해서 다시 한번 설명 해주실 수 있을까요?패럴럭스가 시작할 위치라고 강좌에서 설명해주셨는데요, parallaxThisTop도 패럴럭스가 시작된 위치인 것과 어떤 차이점이 있는지요?var parallaxSpeed = 1200; // 패럴럭스 요소의 스피드var parallaxMoveDistance; // 패럴럭스 요소가 움직일 거리를 담을 변수 선업합니다[질문]첫번째 변수(parallaxSpeed)를 강좌에서 거리라고 설명해주셨는데, 변수명 parallaxMoveDistance의 거리랑 각각 어떤 다른의미의 거리인가요?parallaxPercent = parallaxThisTop / parallaxSpeed * 100; // 이동할 거리 백분율 값을 담음parallaxMoveDistance = Math.max(parallaxStartValue - parallaxStartValue, Math.min(parallaxStartValue, parallaxStartValue - (parallaxStartValue * (parallaxPercent/100)))); //패럴럭스 요소가 움직일 거리를 구함[질문]parallaxPercent는 브라우저의 스크롤되는 거리는 구하는 것이고,parallaxMoveDistance는 브라우저 스크롤 할때, 패럴럭스 되는 요소의 거리를 구하는 것인지요? 모든 변수명에 para~가 있어서 어떤 요소의 거리를 의미하는지 헷갈립니다.
-
해결됨[코드캠프] 강력한 CSS
섹션 5. position 강의 중 absolute와 relative의 사용법에 대한 질문 있습니다!
제가 06-04-z-index 실습을 진행하다가 position 속성에 대해 의문이 들어서 글을 쓰게 됐습니다. <body> <div class="container"> <div class="item item1"> z-index: 4 </div> <div class="item item2"> z-index: 2 </div> <div class="item item3"> z-index: 1 </div> <div class="item item4"> z-index: auto </div> </div> </body>.container { width: 100%; height: 400px; border: 2px solid blue; padding: 30px; } .item { width: 160px; height: 140px; border: 2px solid black; background: #dddddd; } .item1 { position: relative; z-index: 4; } .item2 { position: absolute; top: 70px; left: 70px; z-index: 2; }제가 추가적으로 웹 서핑을 통해 position: absolute와 position: relative의 차이를 공부하였고 'absolute'는 "가장 가까운 위치 지정 조상 요소에 대해 상대적으로 배치합니다. 단, 조상 중 위치 지정 요소가 없다면 초기 컨테이닝 블록을 기준으로 삼습니다."의 특성을 가진다는 것을 학습하였습니다. 그런데 item1의 css 코드에 position:relative가 부여되는 것에 대해 강사님께서 item1이 기준이 된다고 말씀하셔서 item2가 상위 요소인 container가 아닌 item1을 기준으로 한 것인가 생각이 들었는데, 웹페이지의 배치를 보니 item2는 container를 기준으로 한 것으로 보입니다. 그래서 item1이 "기준"이 되게 한다는 설명이 어떤 요소의 기준이 되는 것인지 자세히 알고 싶어 질문 드립니다! 참고로 해당 부분은 position 강의 21분경에 언급되었습니다
-
미해결[웹 개발 풀스택 코스] HTML&CSS 기초
spellcheck true 밑줄이 안생겨요
spellcheck 를 true로 놓고 저장해도 밑줄이안생겨요
-
미해결처음 만난 리액트(React)
chapter 6 실습
같은 실습 코드를 mac에서 돌렸을 경우에는 잘 작동되고 윈도우에서 돌리면 오류는 뜨지 않으나 작동되지 않고 빈화면만 출력되는데 이유가 무엇인가요?
-
미해결GSAP의 ScrollTrigger를 활용한 포트폴리오 제작
제이쿼리 플로그인을 쓰나요?
강의듣고 자바스크립트로 코드 변경해보고싶은데... 질문글에 있는글을 보니 제이쿼리뿐아니라 제이쿼리를 사용한 플로그인을 사용한다고 되어있던데 제이쿼리를 사용한 플로그인을 사용하나요?...제이쿼리를 사용한 플로그인은 따로 자바스크립트로 교체가 안되는건가요?
-
미해결처음 만난 리액트(React)
챕터 6 실습 "./Notification" 경고
3번째 줄 "./Notification"에 왜 경고창이 뜨는걸까요? 실행은 잘 됩니다
-
미해결GSAP의 ScrollTrigger를 활용한 포트폴리오 제작
이 코드를 모르겠어요
이 코드를 처음 보는데 이게 왜 여기에 넣어지는지 모르겠어요.content: attr(data-char);*혹시 이 선생님 수업 영상 중에 기초가 될 수 있는 강의가 있을까요. 처음 보는 코드가 많이 보여서 공부를 해보고 싶습니다.
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
메인슬라이드 오류문의
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>조이컨트리클럽</title> <link rel="stylesheet" href="/css/style.css"> </head> <body> <div class="container"> <div class="main-content"> <div class="left"> <header> <div class="header-logo"><img src="images/logo.png" alt="조이컨트리클럽"></div> <div class="navi"> <!-- navigation --> <ul class="menu"> <li> <a href="#">CLUB</a> <div class="sub-menu"> <a href="#">클럽소개</a> <a href="#">시설안내</a> </div> </li> <li> <a href="#">BOOKING</a> <div class="sub-menu"> <a href="#">요금안내</a> <a href="#">예약안내</a> <a href="#">위약안내</a> </div> </li> <li> <a href="#">INFORMATION</a> <div class="sub-menu"> <a href="#">명예의전당</a> <a href="#">이벤트</a> <a href="#">자료실</a> <a href="#">포토갤러리</a> </div> </li> <li> <a href="#">COMMUNITY</a> <div class="sub-menu"> <a href="#">공지사항</a> <a href="#">Q&A</a> </div> </li> </ul> </div> <div class="spot-menu"> <a href="#">로그인</a> <span>|</span> <a href="#">회원가입</a> </div> </header> </div> <div class="right"> <!-- 슬라이드 비주얼 --> <div class="slide"> <div class="slide-image"> <div class="slide-image-inner slide-items"> <a class="slide-item" href="#"><img src="images/slide_01.png" alt="slide1"></a> <a class="slide-item" href="#"><img src="images/slide_02.png" alt="slide2"></a> <a class="slide-item" href="#"><img src="images/slide_03.png" alt="slide3"></a> </div> </div> <!-- 슬라이드 배너 --> <div class="slider-banner"> <a href="#"><img src="images/icon_01.png" alt="예약일정">예약일정</a> <hr> <a href="#"><img src="images/icon_02.png" alt="멤버십">멤버십</a> <hr> <a href="#"><img src="images/icon_03.png" alt="오시는길">오시는길</a> <!-- 이미지만 고퀄로 변경 --> </div> </div> <div class="items"> <div class="shortcut"> <img src="images/ad.png" alt="카카오광고"> <div class="shortcut-content"> <h3>조이컨트리클럽 X 카카오골프</h3> <p>국내 최대 규모 골프장 조이컨트리 클럽과 카카오골프가 함께하는 10주년 행사! 카카오골프로 조이컨트리 클럽 신규가입시 라운드 30만원 상당의 쿠폰과 카카오골프 굿즈를 선물드려요.</p> </div> <a href="#"><img src="images/more_button.png" alt="더보기버튼"></a> </div> <div class="new"> <!-- 탭메뉴 --> <div class="tab-inner"> <div class="btn"> <a href="#" class="active">공지사항</a> <a href="#">갤러리</a> </div> <div class="tabs"> <div class="tab1"> <a href="#" class="open-modal">가을 맞이 신규 회원가입 특전을 안내드립니다.<b>2023.10.01</b> </a> <a href="#">9월 임시휴무 안내<b>2023.08.11</b> </a> <a href="#">카카오 골프 제휴 이벤트 안내<b>2023.05.11</b> </a> <a href="#">사이트가 리뉴얼 되었습니다.<b>2023.01.11</b> </a> </div> <div class="tab2"> <a href="#"> <img src="images/gallery-01.png" alt="이미지1"> <span>이미지1</span> </a> <a href="#"> <img src="images/gallery-02.png" alt="이미지2"> <span>이미지1</span> </a> <a href="#"> <img src="images/gallery-03.png" alt="이미지3"> <span>이미지1</span> </a> <a href="#"> <img src="images/gallery-04.png" alt="이미지4"> <span>이미지1</span> </a> <a href="#"> <img src="images/gallery-05.png" alt="이미지5"> <span>이미지1</span> </a> </div> </div> </div> </div> </div> </div> </div> <footer> <div class="foot-logo"> <a href="#"><img src="images/foot_logo.png" alt="조이컨트리클럽"></a> </div> <div class="copyright"> (주)조이컨트리클럽 | 대표자 : 전현무 | 개인정보관리책임자 : 박나래 | 사업자등록번호 : 000-000-0000 | 주소 : 서울특별시 송파구 송파대로 22길 조이컨트리클럽 copyright(c)2023.(주)조이컨트리클럽 </div> <div class="sns"> <a href="#"><img src="images/youtube.png" alt="유튜브"></a> <a href="#"><img src="images/facebook.png" alt="페이스북"></a> <a href="#"><img src="images/twitter.png" alt="트위터"></a> </div> </footer> </div> <!-- 팝업창 --> <div class="modal"> <div class="modal-content"> <h2>가을 맞이 신규 회원가입 특전을 안내드립니다.</h2> <p>조이컨트리 클럽은 가을맞이 신규회원 가입 특전을 실시합니다.<br/> 주요 특전혜택은 아래와 같으니 참고 부탁드립니다.<br/> <br/> - 가입 특전 -<br/> 1. 라운딩 오후4시 이후 무료입장 가능<br/> 2. 캐디비용 지원<br/> 3. 식사 쿠폰 10매 제공<br/> <br/> 감사합니다. </p> <a class="close-modal" href="#none">닫기</a> </div> </div> <script src="script/jquery-1.12.4.js"></script> <script src="script/main.js"></script> </body> </html> @charset "utf-8"; body{ margin: 0; color:#333; background-color:#fff; font-size: 16px; } a{text-decoration:none; color:inherit;} /* Entire Layout */ .container{ } .main-content{ display:flex; } .main-content > div{ } .main-content > div{ } .main-content .left{ width: 200px; background-color:#eee; } .main-content .right{ flex:1; } /* header */ header{} header > div{} header .header-logo{ border:1px solid #000; } /* Navigation */ header .navi{ height: 300px; width: 200px; } header .menu{ list-style:none; padding:0; margin:0; } header .menu li{ width: 200px; box-sizing:border-box; text-align:center;} header .menu li > a{ display:block; width: 200px; border:1px solid #444; transition:0.5s; padding:5px; background-color:#fff; color:#333; } header .menu li:hover > a{ color:#fff; background-color:#333; } header .menu .sub-menu{ display:none; } header .menu .sub-menu a{ display:block; padding:5px; box-sizing:border-box; } header .menu .sub-menu a:hover{ background-color:#333; color:#fff; } header .spot-menu{ text-align:center; margin-top:30px; font-size: 14px; } header .spot-menu a:hover{ text-decoration:underline; } /* shortcut */ .right{} .right .slide{ height: 400px; } /* 슬라이드이미지 */ .slide { height: 400px; position: relative; } .slide-image{ height: 400px; position: relative; overflow: hidden; } /* Slide Animation */ .slide-image-inner { /* 실제로 움직이는 요소 */ position: absolute; top: 0; left: 0; font-size: 0; animation: slide 0.5s linear ease-in-out; height: inherit; } .slide-image-inner a { /* 움직이는 .slide-image-inner에 포함된 요소 */ height: inherit; } .slide-image-inner a img { width: 100%; height: inherit; /* 부모요소인 a의 너비에 유동적으로 맞춰지게 하는 속성 */ object-fit: cover; } .slide .slider-banner{ background-color:#efefef; position:absolute; top: 0; right: 0; width: 50px; height:250px; padding:10px; text-align:center; } .slide .slide-banner hr{ } .slide .slider-banner a{ font-size:12px; font-weight:500; } .slide .slider-banner a:nth-child(3){ border-bottom:none; } .slide .slider-banner img{ width:50px; display:block; } /* shortcut */ .items{} .items .shortcut{display:flex; align-items:center;height:200px;} .items .shortcut img{} .items .shortcut a{position:absolute; right:20px;} .items .shortcut .shortcut-content{} .items .shortcut .shortcut-content h3{font-size: 20px;font-weight:900;} .items .shortcut .shortcut-content p{font-size:16px; font-weight:200;} /* news&gallery */ .items .new{ height: 250px; } .items .new .tab-inner{ width: 95%; margin: 0 auto; margin-top: 25px; } .items .new .tab-inner .btn{} .items .new .tab-inner .btn a{ border:1px solid #000; display:inline-block; width: 100px; padding: 5px; border-radius:5px 5px 0 0; margin-right: -6px; border-bottom:none; margin-bottom:-1px; background-color:#000; color:#fff; text-align:center; font-size: 14px; padding:8px; box-sizing:border-box; } .items .new .tab-inner .btn a.active{ background-color:#fff; color:#000; } .items .new .tab-inner .tabs{border:1px solid #333;} .items .new .tab-inner .tabs .tab1 a{ display:block; padding:3px; border-bottom:1px dashed #bbb; font-size: 15px; margin:10px; } .items .new .tab-inner .tabs .tab1 a:first-child{margin-top:20px;} .items .new .tab-inner .tabs .tab1 a:last-child{ border-bottom:none; } .items .new .tab-inner .tabs .tab1 a b{ float:right; font-weight: normal; } .items .new .tab-inner .tabs .tab2{ display:none; height: 170px; text-align:center; padding-top: 20px; box-sizing:border-box; } .items .new .tab-inner .tabs .tab2 a{ display:inline-block; text-align:center; margin:0 18px; } .items .new .tab-inner .tabs .tab2 a img{ height:120px; border-radius:5px; } .items .new .tab-inner .tabs .tab2 a span{ display:block; } /* footer */ footer{ display:flex; background-color:#222; align-items:center; color:#666; height:100px; } footer .foot-logo{ width: 200px; } footer .copyright{ padding:10px; flex:1; } footer .sns{ width: 230px; text-align:center; } footer .sns a img{ width: 35px; border-radius:10px; margin-right:10px; } /* 팝업 */ .modal { background-color: rgba(0, 0, 0, 0.19); position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 100; display: none; } .modal-content { width: 450px; background-color: #fff; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; border-radius: 10px; box-shadow: 0 0 20px rgba(0, 0, 0, 0.13); } .close-modal { float: right; border: 1px solid #000; padding: 5px 10px; } /* 이건 하면 좋고 안해도 괜찮습니다. */ .modal-content h2 { text-align: center; font-size: 18px; color: #111; padding: 7px; } .modal-content p{ text-align:center; } .modal-content .close{ background-color:#000; color:#fff; padding:5px; font-size: 15px; } // Navigation (1차메뉴 색상 활성화 고정) $('.menu li').mouseenter(function(){ $(this).children('.sub-menu').stop().slideDown() }) $('.menu li').mouseleave(function(){ $(this).children('.sub-menu').stop().slideUp() }) // 메인비주얼슬라이드 // setInterval(콜백함수, 시간); // animate(속성값, 콜백함수); setInterval(function(){ $('.slide-item').animate({top: '-100%'}, function(){ $('.slide-item').css({top: 0}); $('.slide-item:first-child').appendTo('.slide-item'); }); }, 3500); // Tab Menu $('.items .new .tab-inner .btn a:first-child').click(function(){ $('.tab1').show() $('.tab2').hide() $(this).addClass('active') $(this).siblings().removeClass('active') }) $('.items .new .tab-inner .btn a:last-child').click(function(){ $('.tab2').show() $('.tab1').hide() $(this).addClass('active') $(this).siblings().removeClass('active') }) // 팝업창 열고닫기 $('.open-modal').click(function(){ $('.modal').fadeIn() }) $('.close-modal').click(function(){ $('.modal').fadeOut() })