묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결프로그래밍 시작하기 : 웹 입문 (Inflearn Original)
마지막에 news 관련 질문
.link-group li > a { color: #606060; font-weight: 800; } .link-group li > a:visited { color: #000000; font-weight: 800; } .link-group li > a:hover { color:#ff0000; font-weight: 800; } <footer> <div class="link-group"> <h4> 관련 뉴스 </h4> <ul> <li><a href="#">뉴스 기사1</a></li> <li><a href="#">뉴스 기사1</a></li> <li><a href="#">뉴스 기사1</a></li> <li><a href="#">뉴스 기사1</a></li> <li><a href="#">뉴스 기사1</a></li> </ul> </div> <div class="link-group"> <h4> 인기 뉴스 </h4> <ul> <li><a href="#">뉴스 기사1</a></li> <li><a href="#">뉴스 기사1</a></li> <li><a href="#">뉴스 기사1</a></li> <li><a href="#">뉴스 기사1</a></li> <li><a href="#">뉴스 기사1</a></li> </ul> </div> </footer> </div> </body> </html>영상 보면서 따라 코드를 작성하였습니다. 하지만 밑에 관련 뉴스나 인기 뉴스를 보면 이미 방문한 것처럼 표현 되어있습니다 혹시 무엇이 문제인지 확인 해주실 수 있나요?
-
해결됨React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드
tailwind css 버젼 다름문제
노션에 링크에 들어가면 https://tailwindcss.com/docs/installation/using-vite여기로 옮겨지는데 강의 내용과 완전히 다른 터미널 명령어를 알려줍니다. 홈페이지말고 강의 처럼 따라하니깐 init 부분에서 npm error could not determine executable to runnpm error A complete log of this run can be found in: C:\Users\shin\AppData\Local\npm-cache\_logs\2025-02-11T09_22_29_046Z-debug-0.log이런 오류가 뜨는데 새로 변경된 홈페이지를 따라해야하나요?따라해야한다면 어떻게 하면될까요?
-
미해결웹 애니메이션의 새로운 표준, Web Animations API
vscode에서 svg파일 불러오기 질문
선생님 안녕하세요 svg를 vscode에서 불러오기를 했는데, vscode에서 이미지로 열립니다 소스로 안열리는데 소스로 열리게 하는법이 있을까요?
-
미해결애플 웹사이트 인터랙션 클론!
drawImage(objs.videoImages[sequence], 0, 0); error
function setCanvasImages() { let imgElem; for(let i = 0; i < sceneInfo.values.videoImageCount; i++) { imgElem = new Image(); imgElem.src = `./images/picdiet 1/${1 + i}.jpg`; sceneInfo[0].objs.videoImages.push(imgElem); } // /home/ibmuser01/src/images/picdiet 1/1.jpg } setCanvasImages(); function setLayout() { // 각 스크롤 섹션의 높이 세팅 for (let i = 0; i < sceneInfo.length; i++) { if (sceneInfo[i].type === 'sticky') { sceneInfo[i].scrollHeight = sceneInfo[i].heightNum * window.innerHeight; } else if (sceneInfo[i].type === 'normal') { sceneInfo[i].scrollHeight = sceneInfo[i].objs.content.offsetHeight + window.innerHeight * 0.5; } sceneInfo[i].objs.container.style.height = `${sceneInfo[i].scrollHeight}px`; } yOffset = window.pageYOffset; let totalScrollHeight = 0; for (let i = 0; i < sceneInfo.length; i++) { totalScrollHeight += sceneInfo[i].scrollHeight; if (totalScrollHeight >= yOffset) { currentScene = i; break; } } document.body.setAttribute('id', `show-scene-${currentScene}`); } function calcValues(values, currentYOffset) { let rv; // 현재 씬(스크롤섹션)에서 스크롤된 범위를 비율로 구하기 const scrollHeight = sceneInfo[currentScene].scrollHeight; const scrollRatio = currentYOffset / scrollHeight; if (values.length === 3) { // start ~ end 사이에 애니메이션 실행 const partScrollStart = values[2].start * scrollHeight; const partScrollEnd = values[2].end * scrollHeight; const partScrollHeight = partScrollEnd - partScrollStart; if (currentYOffset >= partScrollStart && currentYOffset <= partScrollEnd) { rv = (currentYOffset - partScrollStart) / partScrollHeight * (values[1] - values[0]) + values[0]; } else if (currentYOffset < partScrollStart) { rv = values[0]; } else if (currentYOffset > partScrollEnd) { rv = values[1]; } } else { rv = scrollRatio * (values[1] - values[0]) + values[0]; } return rv; } function playAnimation() { const objs = sceneInfo[currentScene].objs; const values = sceneInfo[currentScene].values; const currentYOffset = yOffset - prevScrollHeight; const scrollHeight = sceneInfo[currentScene].scrollHeight; const scrollRatio = currentYOffset / scrollHeight; switch (currentScene) { case 0: let sequence = Math.round(calcValues(values.imageSequence, currentYOffset)); objs.context.drawImage(objs.videoImages[sequence], 0, 0); if (scrollRatio <= 0.22) { // in objs.messageA.style.opacity = calcValues(values.messageA_opacity_in, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageA.style.opacity = calcValues(values.messageA_opacity_out, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.42) { // in objs.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.62) { // in objs.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.82) { // in objs.messageD.style.opacity = calcValues(values.messageD_opacity_in, currentYOffset); objs.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageD.style.opacity = calcValues(values.messageD_opacity_out, currentYOffset); objs.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_out, currentYOffset)}%, 0)`; } break; case 2: // console.log('2 play'); if (scrollRatio <= 0.25) { // in objs.messageA.style.opacity = calcValues(values.messageA_opacity_in, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageA.style.opacity = calcValues(values.messageA_opacity_out, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.57) { // in objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; objs.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objs.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } else { // out objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; objs.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objs.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } if (scrollRatio <= 0.83) { // in objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; objs.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objs.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } else { // out objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; objs.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objs.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } break; case 3: // console.log('3 play'); break; } } function scrollLoop() { enterNewScene = false; prevScrollHeight = 0; for (let i = 0; i < currentScene; i++) { prevScrollHeight += sceneInfo[i].scrollHeight; } if (yOffset > prevScrollHeight + sceneInfo[currentScene].scrollHeight){ enterNewScene = true; currentScene++; document.body.setAttribute('id', `show-scene-${currentScene}`); } if(yOffset < prevScrollHeight){ enterNewScene = true; if(currentScene === 0) return; currentScene--; document.body.setAttribute('id', `show-scene-${currentScene}`); } if(enterNewScene) return; playAnimation(); } window.addEventListener('scroll', () => { yOffset = window.pageYOffset; scrollLoop(); }); window.addEventListener('load', setLayout); window.addEventListener('resize', setLayout); })(); main.js:181 Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or OffscreenCanvas or SVGImageElement or VideoFrame)'. at playAnimation (main.js:181:30) at scrollLoop (main.js:292:9) at main.js:297:9이러한 에러가 나요.이미지 파일은 여기에 저장되어있슴돠.
-
미해결쉽고 빠른 스타일링 Tailwind CSS 기초 가이드
tailwind v4
안녕하세요! 25년 1월에 v4가 새롭게 등장했는데, v4로 해도 상관 없겠죠?
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
강의 내용 질문있습니다.
■ 질문 남기실 때 꼭! 참고해주세요.실전 퍼블리싱1 강의 듣고 있는데 표 제작 관련 강의와 예제는 따로없을까요 ?
-
해결됨Figma 디자인부터 퍼블리싱까지
Content Reel에서 Apply All이 안됩니다.
안녕하세요.Content Reel 플러그인을 이용해서하나의 사각형에 이미지 넣거나, 같은 이미지를 여러 사각형에 넣는것은 되는데 Apply All버튼은 반응을 안합니다.텍스트는 되는데 이미지만 안되는것 같은데,이미지의 Apply All을 하기 위한 특수 조건이 있나요?(로그인이 안된것 같아서 컴퓨터 재부팅까지 해보았습니다.)화면 캡쳐 첨부합니다. 확인 부탁드립니다.감사합니다.
-
해결됨React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드
ch9-3 배포하기는 따로 동영상강의가 1월말에 올라온다는 것인가요?
📢 질문을 작성하기 전에 꼭 읽어주세요! 📢질문 전에 준비할 것스스로 먼저 확인하기같은 문제를 겪은 사람이 있는지 인터넷에서 검색해보세요. 대부분의 경우 비슷한 사례를 쉽게 찾을 수 있습니다.오류와 코드를 다시 한번 점검하기간단한 실수나 오타가 없는지 확인해보세요. (예: 변수 이름, 함수 호출 방식 등)문제 상황 정리하기본인이 겪고 있는 문제를 정확히 이해하고, 어떤 상황에서 발생하는지 메모해보세요.질문 작성 시 유의할 점간결하고 명확한 제목문제를 한눈에 이해할 수 있도록 제목을 작성하세요. ("React에서 상태값 초기화 문제"처럼 구체적으로!)상황 설명 포함문제가 발생한 맥락과 이미 시도했던 해결 방법을 간략히 정리해서 알려주세요.코드 공유문제가 발생한 코드를 첨부하여 보여주세요.강의 관련 질문강의 내용과 관련된 질문이라면 문제가 발생한 강의의 시간이나 챕터를 반드시 적어주세요.추가 안내사항답변을 받으면 꼭 확인하고 감사 인사를 남겨주세요. 작은 반응도 답변자에게 큰 동기부여가 됩니다!질문 게시판에서는 서로를 존중하며 커뮤니케이션해주세요.강의 외적인 문의(예: 계정 문제, 결제 등)는 고객센터를 이용해주세요.여러분의 꼼꼼한 질문이 더욱 빠르고 정확한 답변으로 이어질 수 있습니다. 😊
-
해결됨모던 웹 인터렉티브 CSS3 부트캠프 [Full vers.]
자바강의도 하나짜리 full버전이 나오나요?
자바강의 신청하려고하는데 이전사례처럼 하나짜리 통으로 풀버전으로 편집되서 출시될지 궁금해요
-
해결됨React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드
회사 사이트 설명(노션) 사이트 접속 문의
강의중 설명에서 알려주시는노션 사이트는 어떻게 접속해야 하나요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
터미널 npm install -g create-react-app 작성 후 오류
터미널에서 npm install -g create-react-app 작성 후에아래와 같은 메세지가 뜹니다.이럴 경우 어떻게 해야 하나요??adminui-MacBook-Pro:grab-market-web admin$ npm install -g create-react-appnpm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.npm warn deprecated fstream-ignore@1.0.5: This package is no longer supported.npm warn deprecated uid-number@0.0.6: This package is no longer supported.npm warn deprecated rimraf@2.7.1: Rimraf versions prior to v4 are no longer supportednpm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supportednpm warn deprecated fstream@1.0.12: This package is no longer supported.npm warn deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.changed 64 packages in 968ms4 packages are looking for funding run npm fund for detailsadminui-MacBook-Pro:grab-market-web admin$
-
해결됨HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
일정 부분만 주석하는 방법
일정 부분 선택 후, ctrl+shift+/하면 된다고 하셨는데계속 해봐도 반응이 없어요. 다른 방법이 있을까요?ctrl+/ 전체 주석은 잘 됩니다. 비주얼 스튜디오 코드에서 에밋 (15:56)
-
미해결처음 만난 리액트(React)
버튼이 안 뜹니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요 안녕하세요 버튼이 안 떠서 질문드립니다 오타는 없는 것 같은데 버튼이 안 나오네요
-
미해결SCSS(SASS)+FLEX 실전 반응형 웹 프로젝트 with Figma
SCSS에서 @keyframes 사용
질문 주실 때 항상 2가지를 지켜주세요.오류가 나는 부분이나 궁금한 부분의 브라우저 화면 캡쳐해서 올리기HTML+SCSS+JS 코드 캡쳐 말고 텍스트로 붙여넣기 하기만약 코드를 캡쳐해서 올리시면 제가 코드의 오류를 찾는게 너무 어렵습니다. 반드시 텍스트로 붙여넣기 해주세요. 수업 내용에는 없는 질문이긴 한데ㅠㅠSCSS 에서 @keyframes 사용은 어려운건가요? 구글링한 정보로는 적용이 안되서요ㅠㅠ
-
미해결기획자님 이 정도 웹 개발은 배워보면 어떨까요? [이론+실습]
npm 명령어 실행 안됨(윈도우)
질문은 자세하게 적어주실 수록 좋습니다. 어느 부분을 수강중이신지 =>vue 설치 수강 내가 어떻게 했는데, 어떤 결과가 나오기를 기대했는데, 다른 결과가 나왔는지=> terminal에 npm~을 입력했는데 npm : 'npm' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오 라고 표기됨 작성하신 코드 및 오류 스크린샷 npm i -g @vue/cli 을 함께 첨부해주시면 좋아요!
-
미해결카페 24 베스트 쇼핑몰 디자인 클론코딩하기 (HTML + CSS)
form 태그와 input 태그가 헷갈려요.
학습을 하다가 이해가 안되시는 부분이 생겼다면 말씀해주세요! form 태그를 듣다가 생긴 의문인데요. 둘 다 사용자의 정보를 담는 건데form 태그와 input태그는 어떤 차이가 있는 건가요?... form태그가 url 받기 위한 박스(그 밖의 기능 즉, 사용자의 정보는 받지 않음, 송장같이 주소만 적음)이고input 태그는 사용자의 값을 직접 적는 칸(박스 안의 내용물)이라는 말인가요?
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
카카오맵 API 가 안뜹니다...
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>맛집지도</title> <meta name="author" content="동네코딩" /> <meta name="description" content="맛집지도 서비스" /> <meta name="keywords" content="동네코딩, 맛집지도, 유튜버맛집, 맛집유튜버" /> <link rel="stylesheet" href="style.css" /> </head> <body> <nav> <div class="inner"> <div class="nav-container"> <h1 class="nav-title">맛집지도</h1> <button class="nav-contact">Contact</button> </div> </div> </nav> <main> <section id="category"> <div class="inner"> <div class="category-container"> <h2 class="category-title">맛집지도 카테고리를 선택해보세요</h2> <div class="category-list"> <button class="category-item">한식</button ><button class="category-item">중식</button ><button class="category-item">일식</button ><button class="category-item">양식</button ><button class="category-item">분식</button ><button class="category-item">구이</button ><button class="category-item">회/초밥</button ><button class="category-item">기타</button> </div> </div> </div> </section> <!-- 카테고리 --> <div id="map" class="inner"></div> <!-- 카카오지도 --> </main> <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=da893e5911fb51d60018677ccb00c7be" ></script> <script src="script.js"></script> </body> </html> var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스 var options = { //지도를 생성할 때 필요한 기본 옵션 center: new kakao.maps.LatLng(33.450701, 126.570667), //지도의 중심좌표. level: 3 //지도의 레벨(확대, 축소 정도) }; var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴@font-face { font-family: "KyoboHandwriting2020A"; src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2112@1.0/KyoboHandwriting2020A.woff") format("woff"); font-weight: normal; font-style: normal; } * { padding: 0; margin: 0; box-sizing: border-box; } html { font-size: 10px; font-family: "KyoboHandwriting2020A"; } nav { /* background-color: #e69a06; */ } .nav-container { padding: 1rem 0; display: flex; flex-direction: row; justify-content: space-between; align-items: center; } .nav-title { font-size: 3rem; } .nav-contact { font-size: 2.5rem; border: 0; background: none; cursor: pointer; font-family: inherit; } .category-title { font-size: 3.5rem; } .category-item { width: 25%; height: 5rem; background: none; border: none; font-family: inherit; font-size: 1.6rem; } .category-item:hover { color: #e69a06; cursor: pointer; } .inner { padding: 0 1.5rem; } @media all and (min-width: 1024px) { .inner { max-width: 1024px; margin: 0 auto; } } /* 카카오맵 CSS */ body { height: 100vh; } nav { height: 59px; } main { padding-top: 1.5rem; height: calc(100% - 59px); display: flex; flex-direction: column; } #map { flex-grow: 1; width: 100%; height: 100%; }이렇게 작성하였습니다. 자꾸 에러가 나서 자료 그대로 복붙한 후 appkey만 수정해주었습니다! 자꾸 위와 같은 에러가 뜹니다. 사이트 도메인도위와 같이 설정하였고 앱키도위와 같이 설정하였는데 자꾸 에러가 뜨는 이유는 뭔가요..
-
해결됨[코드캠프] 시작은 프리캠프
left_body_header의 자식border-top인데
.left_body_header_line{ border-top: 1px dotted black; background-color: aqua; } left_body_header의 자식(left_body_header_line)border-top이잖아요 그러면 제가 밑줄 친 곳에 점선이 들어가야 하는거 아닌가요?? border의 top이면 상단부분이잖아요
-
미해결GSAP의 ScrollTrigger를 활용한 포트폴리오 제작
5차 완성본 요청합니다.
5차_업데이트(고정된 섹션에 하위 섹션 올라오는 인터렉티브)이 부분 캡쳐 보면서 코드 따라쳐도 오류가 나오네요완성 코드 메일로 부탁드립니다.3326612@naver.com
-
미해결TailwindCSS 완벽 마스터: 포트폴리오부터 어드민까지!
via.placeholder.com 오류
via.placeholder.com가 더이상 없어서 인터넷 찾아보니https://placehold.co/여기가 되더라구요 그래서 <div class="grid grid-cols-3 gap-4"> <img src="https://placehold.co/400x400.png?text=City" alt="City Image" class="w-full h-full rounded-lg shadow-md" /> <img src="https://placehold.co/400x400.png?text=Landscape" alt="Landscape Image" class="w-full h-full rounded-lg shadow-md" /> <img src="https://placehold.co/400x400.png?text=Mountain" alt="Mountain Image" class="w-full h-full rounded-lg shadow-md" /> <img src="https://placehold.co/400x400.png?text=River" alt="River Image" class="w-full h-full rounded-lg shadow-md" /> <img src="https://placehold.co/400x400.png?text=Forest" alt="Forest Image" class="w-full h-full rounded-lg shadow-md" /> <img src="https://placehold.co/400x400.png?text=Ocean" alt="Ocean Image" class="w-full h-full rounded-lg shadow-md" /> <img src="https://placehold.co/400x400.png?text=Desert" alt="Desert Image" class="w-full h-full rounded-lg shadow-md" /> <img src="https://placehold.co/400x400.png?text=Waterfall" alt="Waterfall Image" class="w-full h-full rounded-lg shadow-md" /> <img src="https://placehold.co/400x400.png?text=Beach" alt="Beach Image" class="w-full h-full rounded-lg shadow-md" /> </div>이렇게 주소 설정하니 잘 됩니다.