나를 제외한 천재들 블로그


- '분류 전체보기' 카테고리의 글 목록 (7 Page) -

분류 전체보기

    [JS] 자판 배열에 따른 가입 조건문 구현하기

    [JS] 자판 배열에 따른 가입 조건문 구현하기

    회원가입 조건문을 만들 때 비밀번호 보안을 위해 키보드 배열에 따른 3개의 연속된 문자를 사용하지 못하는 조건문이 필요했고, JS로 구현해 보았습니다. 위 이미지와 같이, 사용자가 가장 많이 사용하는 문자 조합인 123, qwe, asd ,zxc 등 간단한 조합을 방지하는 기능을 구현해 보았습니다. 코드 const pwChk = (value) => { // 키보드 배열 조건 const keyboard = ["1234567890", "qwertyuiop", "asdfghjkl", "zxcvbnm"]; for (let i = 0; i < value.length-2; i++) { const sliceValue = value.substring(i, i + 3); // 모든 조건을 한번씩 순회 if (keyboa..

    [CSS] text에 테두리(border) 넣기

    [CSS] text에 테두리(border) 넣기

    Text Border Test 위의 HTML 코드를 기준으로 CSS를 이용한 텍스트에 외곽선 효과를 주는 방법을 소개하겠습니다. -webikit-text-stroke h2 { -webkit-text-stroke: 2px red; } 해당 방법은 표준적인 방법이 아니기에 지원하지 않는 브라우저가 존재할 수 있습니다. 하지만 text-stroke라는 속성을 이용해 단순한 width, color 지정으로 테두리를 넣을 수 있습니다. text-stroke는 width가 커질수록 바깥쪽으로 두꺼워지는 것이 아니기에 특정 수치에서는 글자를 먹어버립니다. text-shadow h2 { text-shadow: -1px 0 red, 0 1px red, 1px 0 red, 0 -1px red; } 해당 방법은 text-s..

    [CSS] checkbox, radio, range 색상  바꾸기

    [CSS] checkbox, radio, range 색상 바꾸기

    기존의 CSS로 체크박스, 라디오 등의 색상을 바꾸기 위해서는 appearance 속성을 사용하여 네이티브로 지원되는 모양들을 해제한 후 색상을 입혀야 했습니다. 기존에는 appearance 속성으로 인해서 체크박스, 라디오 같은 상호작용 요소도 사라져 버려, 번거로운 추가 작업이 필요했습니다. 이번에 accent-color 속성이 CSS에 추가됨으로 input의 체크박스(checkbox), 라디오(radio), 레인지(range), 프로그레스(progress) 타입에 손쉬운 색상 변경이 가능해졌습니다. 코드 input, progress { accent-color: red; } appearance 같은 속성을 사용하지 않고, 단순히 accent-color 속성을 사용하여 색을 지정해 주면 됩니다. 그럴 ..

    [JS] 페이지 상단(하단)으로 이동하는 버튼 구현하기

    [JS] 페이지 상단(하단)으로 이동하는 버튼 구현하기

    버튼 클릭 하나만으로 웹 페이지의 상단으로 이동하는 기능을 구현해보겠습니다. 코드 맨 위로 .moveTopBtn { position: fixed; bottom: 1rem; right: 1rem; width: 4rem; height: 4rem; background: #000; color: #fff; } 간단한 HTML 코드로 버튼을 만들어 줍니다. 대부분의 해당 버튼은 페이지 오른쪽 하단에 위치하기에 fixed 속성을 통해 고정시켜주었습니다. const $topBtn = document.querySelector(".moveTopBtn"); // 버튼 클릭 시 맨 위로 이동 $topBtn.onclick = () => { window.scrollTo({ top: 0, behavior: "smooth" }); ..

    [JS] 줄바꿈을 포함한 모든 문자 일치 정규식

    [JS] 줄바꿈을 포함한 모든 문자 일치 정규식

    문제점 단순히 모든문자(.) 정규식을 사용하면 문장이 개행 문자로 인해 하나로 묶이지 않고 개행을 기준으로 나뉘는 문제점이 발생합니다. 정규식에서 . 특수문자는 개행 문자를 제외한 모든 문자를 인식합니다. 하지만 모든 문자에 개행 문자를 포함시켜 인식을 해야 할 때가 존재합니다. 코드 const reg = /^(.|\n)*?$/ 문자에 모든 문자 또는 개행 문자를 찾을 수 있게 묶인 그룹으로 비교하는 정규식입니다. 현재 코드는 임시로 시작점(^)과 끝점($)을 지정해 제한하였습니다. 그 이유는 단순한 .* 정규식은 빈 항목을 판정하기 위해 무한한 판정을 하기 때문입니다. 결과 해당 정규식을 사용하면 개행을 기준으로 분리되었던 문장이 개행도 하나의 문장으로 인식, 묶인 모습을 볼 수 있습니다.

    [JS] 스크롤 방향 감지하기

    [JS] 스크롤 방향 감지하기

    아래로 이동하고 있는지, 위로 이동하고 있는지를 scroll 이벤트로 감지할 수 있습니다. 예제 코드 See the Pen Untitled by hyukson (@hyukson) on CodePen. 이전 위치를 기록하여 비교하기 let lastScrollY = 0; addEventListener("scroll", e => { const scrollY = window.scrollY; // 이전의 스크롤 위치와 비교하기 const direction = scrollY > lastScrollY ? "Scroll Down" : "Scroll Up"; // 현재의 스크롤 값을 저장 lastScrollY = scrollY; console.log(direction); }); 현재의 scroll 된 위치는 window..

    [JS] 클릭한 요소의 index 구하기

    [JS] 클릭한 요소의 index 구하기

    1 2 3 4 5 6 위와 같은 HTML 코드에서 div를 클릭, 클릭한 요소의 index (순서)를 구하는 방법입니다. JS const boxs = document.querySelectorAll(".boxList > div"); boxs.forEach((el, index) => { el.onclick = () => { console.log(index); } }); 가장 쉬운 방법은 다수의 이벤트를 걸어주는 반복문에서 index를 가져오는 방법입니다. 하지만 다수의 이벤트를 걸어주지 못하는 상황에서는 아래와 같은 방법으로 index를 가져올 수 있습니다. const $box = document.querySelector(".boxList"); $box.onclick = (e) => { const nodes..

    [React] 동적으로 HTML 코드 추가하기

    [React] 동적으로 HTML 코드 추가하기

    html 태그를 유동적으로 사용하기 위해서 기존 JavaScript에서는 innerHTML을 사용하여 바꿔주었지만, React에서는 해당 방법을 사용하는 것은 엄청나게 비효율적입니다. 텍스트로 구성된 HTML 태그를 추가하기 위해서는 React에서 정한 특정 규칙을 사용해야 합니다. 코드 React에서 dangerouslySetInnerHTML={{ __html: Code }} 와 같은 형식으로 사용하면 됩니다. const html = "가나다라"; const Main = () => { return ( ); } export default Main;

    [JS] 정규식으로 모든 HTML 태그 제거하기

    [JS] 정규식으로 모든 HTML 태그 제거하기

    코드 const reg = /]*>?/g String.replace(/]*>?/g, ''); HTML 태그의 형식( )에서 에 싸여있는 태그를 모두 감지할 수 있는 정규식입니다. 해당 정규식을 사용하여 HTML 태그를 매치, 제거할 수 있습니다. 예시 가나다라 위와 같은 HTML 태그를 텍스트로 받아와 아래와 같은 코드로 태그를 제거해주면, 태그가 제거된 가나다라 텍스트만 남게 됩니다. // JavaScript const $el = document.querySelector(".box"); const newText = $el.innerHTML.replace(/]*>?/g, ''); console.log(newText);

    [JS] 프로그래머스 로또의 최고 순위와 최저 순위

    [JS] 프로그래머스 로또의 최고 순위와 최저 순위

    출처 https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 문제 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 순서와 상관없이, 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌 걸로 인정됩니다. 알아볼 수 없는 두 개의 번호를 각각 10, 6이라고 가정하면 3..

    [JS] 프로그래머스 제일 작은 수 제거하기

    [JS] 프로그래머스 제일 작은 수 제거하기

    출처 https://programmers.co.kr/learn/courses/30/lessons/12935 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr 문제 정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를 들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴하고, [10] 면 [-1]을 리턴합니다. 제한 조건 ..

    [JS] 스크롤 애니메이션 구현 (Intersection Observer)

    [JS] 스크롤 애니메이션 구현 (Intersection Observer)

    Intersection Observer API로 스크롤 애니메이션을 쉽게 구현할 수 있습니다. Intersection Observer API const options = { root: null, rootMargin: "0px", threshold: 1.0, }; const observer = new IntersectionObserver((entries) => { // 관찰 중인 배열 형식의 객체 리스트 entries.forEach((entry) => { ... }); }, options); // target과 root가 교차되어 화면에 보이게 되었을 때 호출되는 함수 const target = document.querySelector('div'); observer.observe(target); // 새로..