ss '분류 전체보기' 카테고리의 글 목록 (5 Page)
본문 바로가기

카테고리170

[javascript]함수 유형 함수의 유형 함수는 자바스크립트에서 기본적인 구성 중의 하나입니다. 작업을 수행하거나 값을 계산하는 문장 집합 같은 자바스크립트 절차입니다. 함수를 사용하려면 함수를 호출하고자 하는 범위 내에서 함수를 정의해야 합니다. 오늘은 자바스크립트 함수의 유형에 대해 알아보겠습니다. 01. 함수와 매개변수를 이용한 형태 함수와 매개변수를 이용한 형태입니다. 다음은 함수와 매개변수를 이용한 형태의 형식입니다. function func(num, str1, str2){ document.write(num + ". " + str1 + "가 " + str2 + "되었습니다. "); } func("1", "함수", "실행"); func("2", "자바스크립트", "실행"); func("3", "제이쿼리", "실행"); 결과보.. 2022. 8. 22.
[CSS]이미지 스프라이트 / IR 효과 / 백그라운드 표현 이미지 스프라이트(Image Sprite) 이미지 스프라이트란 여러 개의 이미지를 하나의 이미지로 합쳐서 관리하는 이미지를 의미합니다. 이미지를 다운받기 위한 서버 요청과 로딩 시간을 단축해주는 효과가 있습니다. 또한, 많은 이미지 파일을 관리하는 대신 몇 개의 스프라이트 이미지 파일만을 관리하면 되므로 매우 간편합니다. 이미지 스프라이트의 장단점 장점 단점 이미지 로딩 속도가 최적화 됩니다. 상황에 따라 유지보수가 어려울 수 있습니다. HTML 마크업이 간결해지고 스크린 리더의 탐색 속도가 향상됩니다. 데이터 관리에 문제가 생기면 이미지의 로딩이 불가능합니다. 하나의 파일만 관리하면 됩니다. 1. Figma 예시 다음은 피그마를 이용해 제작한 이미지 스프라이트 예시입니다. 아이콘들은 50px씩 간격을 .. 2022. 8. 20.
[웹 사이트 제작]이미지유형 03 이미지유형01 사진 한 장은 수 백 마디의 이야기가 담겨 있습니다. 그리고 현재의 웹사이트 역시 동일한 시각적 영향을 가지고 있습니다. 따라서 데이터의 시각화가 점점 더 중요해지고 있습니다. 이미지 유형 중 세 번째 이미지 유형 제작 방법에 대해 알아보겠습니다. 1. Figma로 디자인하기 Figma를 이용해 그리드를 나누어 전체적인 틀을 만들어줍니다. 왼쪽에 큰 사진이 들어가고 오른쪽에 4구역으로 나누어져 사진이 들어갑니다. 2. HTML 웹표준 준수를 위해 시맨틱 태그를 사용합니다. 이번 유형에서는 img 태그를 이용하여 대부분의 이미지를 삽입하였지만 왼쪽의 큰 사진은 백그라운드를 이용하였습니다. 캐나다 여행 캐나다 여행을 위한 사이트입니다. CANADA Vancouver 페이스북 페이지이동 페이지이.. 2022. 8. 19.
[HTML]블록 / 인라인 레벨 요소 01. 블록 레벨 요소(Block-level Elements) 블록 레벨 요소는 태그를 사용해 삽입했을 때, 혼자 한 줄을 차지하는 요소입니다. 자동으로 줄 바꿈이 일어나고 텍스트오 인라인 요소를 자식 요소로 포함할 수 있습니다. 블록 레벨 요소를 자식 요소로 포함할 수 있는 요소와 없는 요소가 있습니다. 01) 블록 레벨 예시 블록 레벨 요소 블록 레벨 요소 성질 줄 바꿈이 생깁니다. See the Pen 블록 by Kim-chanmi (@kim-chanmi) on CodePen. 02) 블록 레벨 태그 , , , , , , , , , 인라인 요소 인라인 요소는 한 줄로 출력됩니다. See the Pen 인라인 by Kim-chanmi (@kim-chanmi) on CodePen. 02) 인라인 레벨 .. 2022. 8. 19.
[CSS]강아지 애니메이션 강아지 애니메이션 오늘은 아래와 같은 움직이는 강아지를 만들어 보았습니다. 머리와 몸통, 꼬리를 흔드는 아주 귀여운 강아지입니다. 코드펜을 이용하여 평소와 다르게 HTML(Pug)와 CSS(SCSS)를 사용하였는데요. SCSS는 CSS를 간편하게 쓸 수 있습니다. SCSS에 대한 자세한 설명은 따로 포스팅 했으니 참고해 주시기 바랍니다. See the Pen CSS Dog by Kim-chanmi (@kim-chanmi) on CodePen. Pug를 통한 구조 짜기 .dog .dog-body .dog-tail .dog-tail .dog-tail .dog-tail .dog-tail .dog-tail .dog-tail .dog-tail .dog-torso .dog-head .dog-ears .dog-ear.. 2022. 8. 18.
[CSS]SCSS SCSS(Syntactically Awesome StyleSheet CSS는 복잡한 언어는 아니지만 작업이 커지고 코드가 많아질수록 불편함이 생기게 됩니다. 예를들어 선택자의 과용과 연산 기능의 한계, 구문의 부재 등등 프로젝트가 커지면 코드 중복이 많아지고 복잡해져 유지보수가 어려워지게 됩니다. SCSS는 코드의 재활용성을 올리고, 가독성을 올리는 등 CSS에서 보이던 단점을 보완하고, 개발의 효율을 올리기 위해 등장한 CSS 전처리기 언어 입니다. CSS를 편리하게 사용할 수 있도록 하며 추가 기능 또한 있는 확장판 스크립트 언어라고 보시면 됩니다. 여기서 CSS 전처리기 언어는 CSS 문법과 유사하지만 선택자의 중첩이나 조건문, 반복문, 다양한 단위의 연산 등 표준 CSS보다 훨씬 많은 기능을 사용.. 2022. 8. 18.
QUIZ Effect 05 퀴즈 효과05 웹디자인기능사 필기 기출문제를 이용한 객관식(여러 문제) 유형입니다. 정답 확인하기를 누르면 몇 개 맞았는지, 합격인지 불합격인지 확인할 수 있습니다. 원본 소스 보기 원본 사이트 보기 01. 문제 정보 이번에는 문제수가 많기 때문에 문제 정보를 배열 속의 객체로 저장하였습니다. 코드 보기 //문제 정보 const quizInfo = [ { answerType: "웹디자인기능사 2010년 04회", answerNum: "1", answerAsk: "색의 수축, 팽창의 효과에 가장 큰 영향을 주는 요소는?", answerChoice: { 1: "색약", 2: "명도", 3: "잔상", 4: "중량" }, answerResult: "2", answerEx: "색의 수축, 팽창의 효과에 가장 큰.. 2022. 8. 18.
[javascript]includes() includes() includes() 메서드는 문자열 포함 여부를 검색하여 불린(true, false)으로 반환합니다. "문자열".includes(검색값) "문자열".includes(검색값, 시작값) const str1 = "javascript reference"; const currentStr1 = str1.includes("javascript"); const currentStr2 = str1.includes("j"); const currentStr3 = str1.includes("b"); const currentStr4 = str1.includes("reference"); const currentStr5 = str1.includes("reference", 1); const currentStr6 = .. 2022. 8. 17.
[javascript]padStart() / padEnd() padStart() / padEnd() padStart()/padEnd() 메서드는 주어진 길이에 맞게 앞/뒤 문자열을 채우고, 새로운 문자열을 반환합니다. "문자열".padStart(길이) "문자열".padStart(길이, 문자열) const str1 = "456"; const currentStr1 = str1.padStart(1, "0"); const currentStr2 = str1.padStart(2, "0"); const currentStr3 = str1.padStart(3, "0"); const currentStr4 = str1.padStart(4, "0"); const currentStr5 = str1.padStart(5, "0"); const currentStr6 = str1.padStar.. 2022. 8. 17.
[javascript]repeat() repeat() repeat() 메서드는 문자열을 복사하여, 복사한 새로운 문자열을 반환합니다. const str1 = "javascript"; const currentStr1 = str1.repeat(0); const currentStr2 = str1.repeat(1); const currentStr3 = str1.repeat(2); 결과보기 2022. 8. 17.
[javascript]concat() concat() concat() 메서드는 둘 이상의 문자열을 결합하여, 새로운 문자열을 반환합니다. 기존 문자열은 변경하지 않고 추가된 새로운 문자열을 반환합니다. "문자열".concat(문자열); "문자열".concat(문자열, 문자열...); const str1 = "javascript"; const currentStr1 = str1.concat("reference"); const currentStr2 = str1.concat(" ", "reference"); const currentStr3 = str1.concat(", ", "reference"); const currentStr4 = str1.concat(", ", "reference", ", ", "book"); const currentStr5 .. 2022. 8. 17.
[javascript]replace() / replaceAll() replace() / replaceAll() replace() 메서드는 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환합니다. 그 패턴은 문자열이나 정규식(RegExp)이 될 수 있으며, 교체 문자열은 문자열이나 모든 매치에 대해서 호출된 함수일 수 있습니다. "문자열".replace(찾을 문자열, 변경할 문자열) "문자열".replace(정규식) "문자열".replace(정규식, 변경할 문자열) const str1 = "javascript reference"; const currentStr1 = str1.replace("javascript", "자바스크립트"); const currentStr2 = str1.replace("j", "J"); const currentStr3 = s.. 2022. 8. 17.
[javascript]split() split() 문자열에서 원하는 값을 추출하여 배열로 반환합니다. "문자열".split(구분자); "문자열".split(정규식 표현); "문자열".split(구분자, 갯수); const str1 = "javascript reference"; const currentStr1 = str1.split(''); //['j', 'a', 'v', 'a', 's', 'c', 'r', 'i', 'p', 't', ' ', 'r', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e'] const currentStr2 = str1.split(' '); //['javascript', 'reference'] const currentStr3 = str1.split('', 1); //['j'] const curr.. 2022. 8. 17.
[javascript]소문자 / 대문자 / 공백 01. toUpperCase() toUpperCase()는 문자열을 대문자로 변경합니다. 번호 기본값 메서드 리턴값 const str1 = "javascript"; const currentStr1 = str1.toUpperCase(); document.querySelector(".sample02_N1").innerHTML = "1"; document.querySelector(".sample02_Q1").innerHTML = "javascript"; document.querySelector(".sample02_M1").innerHTML = "toUpperCase()"; document.querySelector(".sample02_P1").innerHTML = currentStr1; 02. toLowerCa.. 2022. 8. 17.
[javascript]문자열 결합 / 템플릿 문자열 문자열(string) 결합 문자열을 합칠 때는 "+" 연산자를 사용하면 됩니다. 문자열 변수를 할칠 때도 str1 + str2 + str3 이렇게 "+" 연산자를 사용하면 됩니다. 하지만, 더욱 간단하게 결합할 수 있는 방법이 있습니다. 오늘은 템플릿 문자열에 대해 알아보겠습니다. 템플릿 문자열 템플릿 문자열은 간단하게 말해서 내장된 표현식을 허용하는 문자열 리터럴입니다. 번호 기본값 메서드 리턴값 //01. 문자열(string) 결합 const str1 = "자바스크립트"; const str2 = "제이쿼리"; document.querySelector(".sample01_N1").innerHTML = "1"; document.querySelector(".sample01_Q1").innerHTML = ".. 2022. 8. 17.
[웹 사이트 제작]이미지유형 02 이미지유형01 사진 한 장은 수 백 마디의 이야기가 담겨 있습니다. 그리고 현재의 웹사이트 역시 동일한 시각적 영향을 가지고 있습니다. 따라서 데이터의 시각화가 점점 더 중요해지고 있습니다. 이미지 유형 중 두 번째 이미지 유형 제작 방법에 대해 알아보겠습니다. 1. Figma로 디자인하기 Figma를 이용해 그리드를 나누어 전체적인 틀을 만들어줍니다. 각 구역간의 수치는 정확히 해주는게 중요합니다. 2. HTML 웹표준 준수를 위해 시맨틱 태그를 사용합니다. 이번 유형에서는 img 태그를 이용하여 이미지를 삽입하였습니다. 캐나다 여행 캐나다 여행을 위한 사이트입니다. Vancouver 자세히보기 Quebec 자세히보기 Niagara Falls 자세히보기 3. CSS Figma를 이용해 만든 디자인을 보.. 2022. 8. 17.
[웹 사이트 제작]이미지유형 01 이미지유형01 사진 한 장은 수 백 마디의 이야기가 담겨 있습니다. 그리고 현재의 웹사이트 역시 동일한 시각적 영향을 가지고 있습니다. 따라서 데이터의 시각화가 점점 더 중요해지고 있습니다. 이미지 유형 중 첫 번째 이미지 유형 제작 방법에 대해 알아보겠습니다. 1. Figma로 디자인하기 Figma를 이용해 그리드를 나누어 전체적인 틀을 만들어줍니다. 각 구역간의 수치는 정확히 해주는게 중요합니다. 2. HTML 웹표준 준수를 위해 시맨틱 태그를 사용합니다. 이미지가 두 장만 들어가기 떄문에 간단하게 HTML 구조를 잡을 수 있습니다. 반려견 기르기 반려견을 기르는 분들을 위한 사이트 입니다. 강아지 산책 반려견 산책시의 준비물과 주의사항들입니다. 동네별로 산책하기 좋은 장소들 소개도 있습니다. 강아지.. 2022. 8. 17.
SEARCH Effect 02 검색 효과02 자바스크립트를 이용하여 검색효과 만들 수 있습니다. 사용자가 입력한 키워드를 정확하게 찾을 수 있습니다. includes()메서드를 이용하여 CSS 속성 검색하기를 만들어 보았습니다. 원본 소스 보기 자바스크립트 검색효과를 만들기 위한 자바스크립트 작성법입니다. 여기서는 includes()메서드를 이용하여 출력하였습니다. includes() 메서드는 문자열이 특정 요소를 포함하고 있는지 판별하여 불린(true, false)으로 반환합니다. 따라서, includes() 메서드의 특성을 사용하여 자바스크립트를 작성하였습니다. //선택자 const searchBox = document.querySelector(".search__box input"); //input 박스, 검색 영역 const s.. 2022. 8. 17.
SEARCH Effect 01 검색 효과01 자바스크립트를 이용하여 검색효과 만들 수 있습니다. 사용자가 입력한 키워드를 정확하게 찾을 수 있습니다. 원본 소스 보기 자바스크립트 검색효과를 만들기 위한 자바스크립트 작성법입니다. indexOf()메서드를 이용하여 출력하였습니다. indexOf()는 문자열에서 특정 문자의 위치를 찾아 숫자를 반환하는 메서드입니다. 따라서 indexOf()값이 0(false)이 출력되는 값만 hide를 지워주어 내가 원하는 키워드를 출력할 수 있습니다. //선택자 const searchBox = document.querySelector(".search__box input"); //input 박스, 검색 영역 const searchList = document.querySelectorAll(".search_.. 2022. 8. 16.
[javascript]indexOf() / lastIndexOf() 1. indexOf() 문자열에서 특정 문자의 위치를 찾고 숫자를 반환합니다. 이때, 데이터가 없으면 -1을 출력합니다. "문자열".indexOf(검색값) "문자열".indexOf(검색값, 위치값) 다음은 indexOf() 메서드의 예시입니다. const str1 = "javascript reference"; const currentStr1 = str1.indexOf("javascript"); const currentStr2 = str1.indexOf("reference"); const currentStr3 = str1.indexOf("j"); const currentStr4 = str1.indexOf("a"); const currentStr5 = str1.indexOf("v"); const curren.. 2022. 8. 16.
[javascript]slice() / substring() / substr() 01. slice() 문자열에서 원하는 값을 추출하여 문자열을 반환하는 메서드입니다. "문자열".slice(시작위치) "문자열"slice(시작위치, 끝나는위치) //시작위치의 값은 끝나는 위치 값보다 작아야 합니다. 다음은 slice() 메서드의 예시입니다. const str1 = "javascript reference"; const currentStr1 = str1.slice(0); const currentStr2 = str1.slice(1); const currentStr3 = str1.slice(2); const currentStr4 = str1.slice(0, 1); const currentStr5 = str1.slice(0, 2); const currentStr6 = str1.slice(0, 3.. 2022. 8. 16.
[javascript]정규표현식(RegExp) 객체 정규표현식(RegEx) 객체 정규표현식 객체는 정해진 문자의 패턴을 만들 때 사용합니다. 프로그래밍을 처음 접하는 사람에게는 정규표현식이 이해하기 어려운 객체 중에 하나입니다. 문자나 숫자 패턴 같은 간단한 정규표현식부터 조금씩 연습하는 것이 좋습니다. 정규표현식(RegEx) 객체 생성 방법 var reg = /javascript/; //1. 정규 표현식 리터럴 var reg = new RegExp('javascript'); //2. RegExp 객체의 생성자 호출 정규표현식(RegEx) 객체 주요 패턴 패턴 설명 abc abc 문자열을 검색합니다. /abc/는 'abc' [abc] a, b, c 중 문자 하나를 검색합니다. /[abc]d/는 'ad', 'bd', 'cd' [^abc] a, b, c를 제.. 2022. 8. 16.
[CSS]미디어쿼리 미디어쿼리(Media query) 미디어쿼리란 화면 해상도, 기기 방향 등의 조건으로 HTML에 적용하는 스타일을 전환할 수 있는 CSS의 속성 중 하나입니다. 뷰포트의 해상도에 따라 CSS를 분기시키는 미디어쿼리는 반응형 프로젝트에서 반드시 필요한 기법입니다. 01. 위 예시는 최소 가로폭이 1000px, 즉 1000px 보다 넓은 해상도일 때에 style_pc.css를 연결한다는 뜻입니다. 태블릿이나 모바일 기기마다 가로폭이 다른데, 크롬 브라우저에서 개발자 도구를 열고 Toggle device Toolbar를 누르면 기기마다의 해상도도 확인할 수 있고 기기 모델도 추가할 수 있습니다. 또한 다음 트로이(http://troy.daum.net/)에서는 기기별 해상도를 제공하고 실제 작동 화면을 확인할 .. 2022. 8. 15.
[HTML]구조 관련 요소 구조 관련 요소 기존 HTML에서는 콘텐츠의 구조를 구분할 수 있는 시맨틱한 요소가 제공되지 않았지만, HTML5에서는 구조를 설계할 수 있는 main, nav, section, article, aside, header, footer 등 다양한 구조 관련 요소가 새롭게 추가되었습니다. 오늘은 구조 관련 요소들에 대해 알아보겠습니다. 요소 유형 태그명 태그의 의미 및 특징 블록 레벨 요소 반응형웹&lt/h1> MENU01 MENU02 MENU03 MENU04 MENU05 콘텐츠 그룹01 콘텐츠 그룹02 주요기사 광고 경기도 부천시 오정구 삼정동 032)674-5685 icoxpub@naver.com COPYRIGHT © ALL right reserved. 결과보기 See the Pen html_ex by .. 2022. 8. 14.
[CSS]기본문법 CSS 기본 문법 CSS(cascading Style Sheets)를 정의하는 방법으로는 내부 스타일시트, 외부 스타일시트, 인라인 스타일시트 등이 있습니다. 실제로는 외부 스타일시트를 많이 사용하는 편이지만, 간단한 스타일은 내부 스타일시트만으로 사용할 수 있습니다. 또한 인라인 스타일시트는 대체로 거의 사용하지 않지만, 가장 우선순위가 높아서 꼭 필요한 경우 편리하게 사용할 수 있습니다. 참고로, CSS에서 주석은 /* */로 표현합니다. 01. 내부 스타일시트 CSS를 HTML 문서 안에 태그로 기재하여 HTML 문서 안에 CSS가 함께 저장되도록 하는 형태입니다. 우리를 기쁘게 하는 것들. 결과보기 우리를 기쁘게 하는 것들. 02. 외부 스타일시트 스타일 속성들을 따로 저장하여 HTML 문서에 파.. 2022. 8. 13.
[javascript]내장 함수 내장 함수란? 내장 함수는 기본적으로 자바스크립트에 내장되어 있는 함수들을 말합니다. 01. 인코딩, 디코딩 함수 URL 주소에 쿼리 정보를 전송하여 데이터를 처리해야 되는 프로그램의 경우 한글과 같은 유니코드 문자가 포함되어 있으면 오류가 발생할 수 있습니다. 이런 경우 인코딩 함수를 이용하여 문자를 부호화시키고 부호화된 문자를 다시 디코딩 함수를 이용하여 원래 문자로 되돌릴 수 있습니다. 함수명 설명 encodeURIComponent() 영문, 숫자와 ( ) - _ . ~ * ! ' 을 제외한 문자를 인코딩합니다. decodeURIComponent() encodeURIComponent()의 디코딩 함수 [예시] //인코딩, 디코딩 함수 예시 var encodeStr = '자바스크립트'; console.. 2022. 8. 13.
[javascript]메서드 join(), push(), pop() 배열 Method[join(), push(), pop()] 배열은 다양한 메서드를 제공합니다. 오늘은 join(), push(), pop()메서드에 대해 알아보겠습니다. 1. join() Method join() Method 통해 배열의 모든 요소를 결합해 하나의 문자열로 만들 수 있습니다. 번호 기본값 메서드 리턴값 * script const arrNum = [100, 200, 300, 400, 500]; const text1 = arrNum.join(''); const text2 = arrNum.join(' '); const text3 = arrNum.join('*'); const text4 = arrNum.join('-'); 2. push() Method push() Method는 배열의 끝에 하나.. 2022. 8. 11.
[웹 사이트 제작]카드유형 03 카드유형03 모바일 사용자가 폭발적으로 증가하면서 반응형 디자인이 어쩌면 필수적으로 적용되고 있는 지금, 카드형 디자인은 웹과 모바일 모두 화면크기에 맞게 최적화되는 모듈식 UI 패턴입니다. 수 많은 컨텐츠를 사용자에게 제공하는 서비스가 인기를 끌면서 카드 UI에 대한 관심이 지속적으로 높아지고 있으며, 뉴스나 커머스까지도 카드형 디자인이 다양하게 적용되고 있습니다. 카드 유형 중 세 번째 카드 유형 제작 방법에 대해 알아보겠습니다. 1. Figma로 디자인하기 Figma를 이용해 그리드를 나누어 전체적인 틀을 만들어줍니다. 각 구역간의 수치는 정확히 해주는게 중요합니다. 2. HTML 사진과 사진에 있는 텍스트를 위해 figure 태그와 figurecaption 태그를 사용하였습니다. 레저 스포츠 Su.. 2022. 8. 10.
[웹 사이트 제작]카드유형 02 카드유형02 모바일 사용자가 폭발적으로 증가하면서 반응형 디자인이 어쩌면 필수적으로 적용되고 있는 지금, 카드형 디자인은 웹과 모바일 모두 화면크기에 맞게 최적화되는 모듈식 UI 패턴입니다. 수 많은 컨텐츠를 사용자에게 제공하는 서비스가 인기를 끌면서 카드 UI에 대한 관심이 지속적으로 높아지고 있으며, 뉴스나 커머스까지도 카드형 디자인이 다양하게 적용되고 있습니다. 카드 유형 중 두 번째 카드 유형 제작 방법에 대해 알아보겠습니다. 1. Figma로 디자인하기 Figma를 이용해 그리드를 나누어 전체적인 틀을 만들어줍니다. 각 구역간의 수치는 정확히 해주는게 중요합니다. 2. HTML 화살표 버튼을 넣어주기 위해 svg파일로 저장 후 페이지 소스를 복사해 붙여줍니다. 웹표준 준수를 위해 aria-hid.. 2022. 8. 9.
[CSS]벡터방식과 비트맵방식 01. 비트맵(Bitmap)이란? 비트맵은 웹 상에서 가장 많이 접하는 이미지 포맷입니다. JPG, PNG, GIF 모두 비트맵 확장자입니다. 비트맵은 이미지의 각 점들을 픽셀 단위로 나타낸 형태이며, 사각 픽셀이 모여있기 때문에, 확대 시 '계단현상' 또는 '깨짐현상'이 발생합니다. 비트맵 방식의 이미지 표현은 컴퓨터에게 부담을 덜 주는 구조를 갖고 있기 때문에, 웹에서의 이미지 표시, 사실 표현, 특수효과, 합성, 보정 작업 등에 주로 사용됩니다. 또한, 픽셀 하나당 모두 색상 설정이 되어 있어, 사이즈가 커질수록 용량 또한 무거워집니다. [BMP, JPG, GIF, PNG, webp의 특징] BMP : 픽셀 데이터를 압축하지 않고 그대로 저장합니다. 구조가 간단한 반면, 파일 용량은 커지는 단점이 .. 2022. 8. 9.
728x90

HTML
CSS
JAVASCRIPT

JAVASCRIPT

자세히보기
광고 준비중입니다.