soma0sd

코딩 & 과학 & 교육

반응형

조적조(Masonry) 형식의 레이아웃은 핀터레스트(Pinterest)형식으로 폭이 같지만 높이가 다른 여러 객체를 쌓아나가는 형태의 레이아웃입니다. Masonry라는 자바스크립트 라이브러리를 사용해서 레이아웃을 정렬하는 방법을 많이 사용합니다. 여기서는 라이브러리를 사용하지 않고 직접 스크립트를 작성합니다. 기본 원리 작업을 시작하기 전에 배치할 리스트의 컨테이너와 아이템의 전제를 살펴봅니다. 상대적인 위치를 가진 컨테이너에 배치할 아이템은 절대 좌표를 사용합니다. 각 아이템은 폰트와 이미지를 모두 로드한 뒤에는 높이가 변하지 않습니다. 아이템 배치는 컨테이너의 너비를 벗어나면 안됩니다. 뷰포트의 크기가 변하면 아이템의 너비가 바뀔 수 있습니다. 나중에 스타일을 스크립트로 추가할 수도 있지만 스타일시트..

[TypeScript/JavaScript] 직접 벽돌쌓기 형식의 리스트 레이아웃 만들기

다른 라이브러리의 도움 없이 순수 자바스크립트로 만든 자동목차 생성 기능입니다. 방식 본문 내용이 article-wrap클래스 안에 있다는 가정을 두고 본문에 있는 표제(heading)를 h1, h2, h3의 3단계까지 찾아서 각각의 id를 만들고, 목차에 항목을 추가하는 작업을 합니다. 중복을 피하고자 내부링크는 태그이름과 내용의 조합으로 만들었지만 같은 단계의 같은 제목인 경우 오작동을 피할 수 없습니다. 만든 목차는 ul리스트이며, toc-wrap 클래스를 가지고 있는 컨테이너 안에 들어가게 됩니다. 스킨편집등을 통해 별도로 제작해야 합니다. 소스코드 타입스크립트 // 본문 컨테이너와 목차 컨테이너 선택 var article_wrapper = document.querySelector(".articl..

순수 JavaScript로 만드는 자동 목차 기능

객관식 퀴즈나 간단한 심리테스트 등에 이용할 수 있는 마크업 규칙과 그것을 작동하게 하는 스크립트를 만들어보려고 합니다. 이전 글 오늘의 JS 놀이: 정적 페이지를 위한 퀴즈 엔진을 만들 계획에 이어서, 계획을 실제로 작동하게 하는 스크립트를 제작합니다. 스크립트는 초기화 단계와 작동 단계로 나눌 수 있습니다. 퀴즈 초기화 document.addEventListener('DOMContentLoaded', (event) => { // 컨텐츠 로드 후에 할 일 }); 웹 페이지가 모든 요소를 표시할 준비가 끝나면 퀴즈를 초기화하도록 합니다. 모종의 이유로 마크업을 모두 표시하기 전에 작동해버리면 오류로 인해 멈출 수 있거든요. document.addEventListener('DOMContentLoaded',..

오늘의 JS 놀이: 정적 페이지를 위한 퀴즈엔진 제작

복잡한 일은 최대한 스크립트에 맞기고 간단한 마크업만 사용하여 객관식 퀴즈를 구현하고 총점을 확인할 수 있는 자바스크립트 엔진을 만들어보려고 합니다. 티스토리에 써볼 생각이니 하나의 정적 페이지 안에서 출제와 결과가 모두 나와야 합니다. 간단한 마크업 대충 문제라는 내용 대충 답안이라는 내용 대충 10점짜리 답이라는 내용 대충 결과페이지라는 내용 적당히 점수: / 다시하기 이런 식으로 만들 수 있도록 스크립트를 구현할 생각입니다. 태그 자체가 다르니 스타일시트에서 관리하기에도 나쁘지 않을 듯하고, 굳이 있는 태그 안에 class니 id니 data-quiz니 넣어가며 불편하게 만들고 싶은 생각이 없어요. 만들때 만큼은 간단했으면 좋겠습니다. 간단한 기능 문제를 내는 페이지는 각각 태그로 구분합니다. 봐야 ..

오늘의 JS 놀이: 정적 페이지를 위한 퀴즈엔진을 만들 계획

목표 ```python print("python") 마크다운 문법으로 코드 블록을 사용한 예시입니다. 티스토리를 기준으로 마크다운 코드 블록은 다음과 같이 변환됩니다. ```html print("python") 구문 강조 도구인 highlight.js를 사용하면 구문 강조를 위한 태그와 도구가 다녀갔다는 흔적인 클래스를 남기게 됩니다. print("python") 오늘은 변환한 코드블럭이 어떤 언어를 사용하는지 보여주는 박스를 추가했습니다. 사용한 트릭 & 팁 티스토리 외부 자바스크립트에서 스킨 URL을 다루는 방법 images에 추가하는 스킨 파일은 skin.html에서는 상대경로 표기로 접근할 수 있지만 외부에서 불러오는 스크립트 파일은 변환 대상이 아니기 때문에 곤란합니다. 그래서 한 가지 트릭을 ..

오늘의 스킨제작: highlight.js, 구문강조 박스 꾸미기

콘솔에서 가지고 놀기 highlight.js highlight.js는 웹 문서에 있는 코드 블록의 프로그래밍 언어에 맞춰 문법 강조를 할 수 있도록 해주는 자바스크립트와 스타일시트입니다. 웹페이지에 불러오면 hljs라는 이름의 오브젝트를 사용하여 기능을 사용할 수 있습니다. 지원하는 기본 언어 별다른 옵션 없이 지원하는 언어는 hljs.listLanguages()를 통해 알 수 있습니다. 크롬 웹브라우저를 사용하는 경우에는 개발자도구( F12 )의 Console 탭을 이용하여 사용할 수 있습니다. highlight.js의 9.16.2 기준으로 다음 내용을 출력합니다. (34) ["apache", "bash", "coffeescript", "cpp", "cs", "css", "diff", "go", "ht..

오늘의 스킨제작: highlight.js 가지고 놀기

highlight.js는 다양한 언어, 다양한 테마를 제공하는 자바스크립트 기반 문법 강조 도구입니다. 오늘은 스킨에 highlight.js을 적용하는 방법과 제게 필요한 몇 가지 응용을 해볼 생각입니다. highlight.js 불러오기 스타일시트나 라이브러리를 제공하는 CDN CDN(콘텐츠 전송 네트워크; Content Delivery Network)는 많은 사람들이 사용하는 콘텐츠를 미리 여러 지역의 네트워크에 저장해놨다가 접속자가 요청하면 콘텐츠를 가장 빠르게 보내줄 수 있는 곳과 자동으로 연결하는 서비스입니다. 스킨의 파일크기 20MB 제한도 있으니 유명한 스타일시트나 자바스크립트 라이브러리 등은 CDN을 이용하는 것을 추천합니다. CDN을 통해 highlight.js 적용하기 우선 데모페이지를 ..

오늘의 스킨제작: highlight.js, 소스코드 하이라이팅

플러그인을 사용하지 않더라도 티스토리에서 그림을 클릭하면 원본 크기의 그림을 어두운 배경과 함께 볼 수 있는 라이트박스(Ligthbox)를 적용합니다. 오늘은 자바스크립트를 이용하여 기능을 변경합니다. 목표 포스트에 그림을 추가하면 티스토리에서는 아래와 같은 마크업으로 변환합니다. 여기서 라이트박스 이벤트는 span이 담당합니다. 우리는 이 span을 img와 분리해서 별도의 버튼으로 만들게 됩니다. 크게보기 스크립트 function lightbox_modify() { let wrapper = article.querySelectorAll('figure.imageblock'); wrapper.forEach(function(elem){ let img = elem.querySelector(&#3..

오늘의 스킨제작: 라이트박스수정하기

소제목을 기준으로 목차를 생성하는 스크립트를 작성합니다. 순수 자바스크립트로 작성했습니다. 항상 자바스크립트를 이용해서 무언가를 하려고 할 때면 제이쿼리(jQuery)를 먼저 불러왔었는데요. 생각해보니 제가 만드는 대부분의 기능은 굳이 라이브러리의 도움이 있어야만 하는 것도 아니고, 라이브러리를 사용했을 때 스크립트의 길이가 극적으로 줄어드는 것도 아니었습니다. 지금 제작하는 스킨을 시작으로 제이쿼리에서 벗어나려고 합니다. 방식 artlcle_wrapper라는 클래스가 있습니다. 이 클래스는 블로거가 작성한 블로그 포스트의 본문을 담는 컨테이너입니다. 이 클래스에서 제목을 3단계(h1, h2, h3)까지 찾은 후 목차 마크업을 만들어 toc_wrapper 켄테이너에 담으면 됩니다. 스크립트 var art..

오늘의 스킨제작: 자바스크립트로 목차 생성하기

End of content

No more pages to load

◀ PREVNEXT ▶