WIT – NTS UIT Blog

CSS 애니메이션 성능 개선 방법(reflow 최소화, will-change 사용)

Posted by in Research

모바일 네이버 지도 개편을 하면서 검색창 부분과 상세페이지 스크롤 부분에 애니메이션이 추가되었습니다. 초기 검색창 부분 애니메이션은 CSS 속성 중 margin, height을 사용하여 구현했습니다. 하지만 애니메이션이 부자연스러운 현상이 있어 자료를 찾아보니 margin, height 속성은 애니메이션에 사용했을 때 성능 저하를 유발하는 속성 중 하나였습니다. 성능에 영향이 있는 속성들은 페이지 reflow를 일으키는 속성들이였고 이를 수정하여 성능을 향상 시킬 수 있었습니다. 이 글에서는 reflow를 최소화 하는 방법과 will-change를 설명하겠습니다. 검색창 애니메이션 초기에는 아래와 같은 애니메이션을 구현하고자 했습니다. 총 4가지 애니메이션이 들어가있는데요. 검색창이 왼쪽으로 축소되고 아래쪽으로는 확장됩니다. 검색창이 왼쪽으로 계속 축소되고 아래쪽으로는 확장됩니다. 추가로 한 줄 검색창은 fade-out,…read more

Webstorm으로 GIT 쉽게 사용하기

Posted by in Research

Webstorm 기준으로 제작되었지만 다른 JetBrains IDE 에서 모두 동일하게 적용됩니다. Webstorm UI 간단히 살펴보기 프로젝트 목록 및 파일상태 확인 창 파란색 파일명 : 수정된 사항 있음 초록색 파일명 : 신규 추가 빨간색 파일명 : 신규 파일 추가 시 – unstage 상태 merge 등의 작업 후 – 충돌 상태 gulp task 실행 창 에디터 창 git > network 를 보여주는 log 창 Terminal 입력 창 git > branch 리스트 및 관련 기능 창 로컬저장소(Local Repository) 생성 기존의 저장소에서 clone 받기 웹스톰 설치 후 최초 실행인 경우 1. check out from Version Control > Git  선택 2. Clone…read more

HTML 5.1 정리 / HTML 5.2 미리보기

Posted by in Research

HTML 5.1 권고안 공개 2016년 11월 1일 웹표준화단체인 W3C의 웹플랫폼워킹그룹(Web Platform Working Group)이 HTML 5.1을 W3C 권고안으로 공개했다. (W3C의 규격이 W3C 권고안에 이르기까지의 과정은 “초안 (Working Draft)” → “최종 초안 (Last Call Working Draft)” → “권고 후보 (CR : Candidate Recommendation)” → “권고안 (PR : Proposed Recommendation)” → “W3C 권고안 (Rec : Recommendation)” 라는 5개의 단계가 있다.) HTML 권고안의 역사를 간단히 살펴보면 1999년에 HTML 4.01의 권고안이 공개가 됐다. 그러나 HTML 4.01 당시에는 웹 응용프로그램 등이 고려되지 않았고 웹 페이지를 기술하기 위한 포맷이었던 만큼 전면 개정을 거쳐서 W3C가 15년 만인 2014년 10월 28일에 HTML5 권고안을 공개하게 된다. 이번에 권고안을 공개한…read more

웹폰트 사용하기 (웹폰트 101)

Posted by in Research

1. 웹폰트란? 웹 폰트는, 방문자의 로컬 컴퓨터에 서비스 제공자가 원하는 서체가 없을 경우, 온라인의 특정 서버에 위치한 서체 파일을 내려받아 화면에 표현할 수 있도록 해주는 웹 전용 서체입니다. 이 새로운 CSS3 규약을 사용하면 원하는 서체 스타일시트의 @font-face에 등록하고, font-family 속성을 통해 문서 안에서 자유롭게 사용할 수 있습니다. 2. 웹폰트를 사용하기 위해 알아야하는 속성 2-1. @font-face 기본 규칙

위의 코드는 웹폰트를 사용하는 기본적인 방법이며, NanumGothic체를 웹폰트로 사용하기 위한 예제입니다. 2-2. @font-face 속성 설명 font-family : CSS 문서에서 사용할 서체 이름입니다. src: src를 통해 로컬 컴퓨터에 설치 된 서체의 경로를…read more

Layer 화면 중앙정렬 방법

Posted by in Research

널리에 작성되어 있던 기존 글을 다듬어 재게시합니다. 마크업 작업을 하다보면 div layer를 화면 정중앙에 정렬해야 하는 경우가 많습니다. layer 사이즈가 고정이면 간단히 표현할수 있지만 가변형일 경우에는 매번 어떤식으로 표현을 할까 생각하곤 합니다. 그래서 어떤 경우의 수들이 있는지 정리 해보았습니다. 1. position:absolute와 margin 마이너스값을 이용한 중앙 정렬 장점 : IE7 이상 모든 브라우저에서 지원 가능합니다. 단점 : width와 height값이 고정사이즈인 상태에서만 사용할 수 있습니다.

See the Pen Layer vertical-align 1 by Kim Tae Hyoung (@myting) on CodePen. 2. position:absolute와 margin:auto를 이용한 중앙 정렬 장점 IE8 이상 모든 브라우저에서 지원 가능합니다. margin…read more

[CSS방법론] SMACSS, BEM, OOCSS

Posted by in Research

세상이 바뀌는 속도보다 약간 더 빠르게 웹은 발전하고 있습니다. 특히 그 중에서도 CSS는 기존에 경험하지 못한 속도로 다양한 부분이 변화하고 있습니다. CSS의 활용도가 높아지고 대규모 프로젝트가 많아짐에 따라, 복잡한 설계의 필요성을 느끼지 못했던 CSS에도 다양한 방법론들이 생기기 시작했습니다. CSS 방법론의 필요성을 사내에서도 느끼고 있었고, 같은 필요성을 느끼고 있던 다른 팀원들과 함께 CSS방법론(SMACSS, BEM, OOCSS)에 대해서 스터디를 하였습니다. 방법론의 특징에 따라서 장단점이 있었으나, 세 방법론 모두 같은 지향점을 갖고 있었습니다. 코드의 재사용성을 높이자 쉽게 유지보수 하자 확장 가능하게 하자 클래스명 만으로도 무슨 의미인지 예측 가능하도록 하자 대부분의 언어에서도 비슷한 지향점을 가지고…read more

하위 버전 브라우저의 HTML5 / CSS3.0 호환성 준수방안

Posted by in Research

‘하위 버전 브라우저의 HTML5 / CSS3.0 호환성을 어떻게 준수할 것인가’ 에 대해 포스팅하겠습니다. 요즘 ‘모바일웹을 PC에서 잘보이게 해달라’는 미션을 많이 받습니다. 즉 HTML5, CSS3.0으로 작성된 코드를 PC에서 잘보이게 해야하는 것이죠. 따지고 보면 “모바일 -> PC” 요구사항에만 해당되는 미션이 아니라 모든 프로젝트에서 고민할 내용입니다. 요즘은 반응형이 대세이고 최신 스펙들은 안쓰기엔 너무 아까우니까요… “webkit이나 CSS3.0을 걷어내야하나?” “따로 한벌 더 만들자” “신경안써도 잘 나오게 하는 방법 없을까?” 방법은 여러가지입니다. 문제는 어떤게 가장 효율적인가를 판단하는 것이죠. 호환성 준수를 위한 방법을 크게 4가지로 분류했습니다. 1. polyfill “polyfill”은 낡은 브라우저에서는 작동 안하는 HTML5 , CSS3.0들을 자바스크립트나…read more

1

[번역] 7 Patterns to Refactor JavaScript Applications

Posted by in Books, Research

이 글은 Michael Phillips 가 2014년 6월,  [Crush&Lovely]에  연재한  ‘자바스크립트 어플리케이션 리팩토링을 위한 7가지 패턴’에 대해  번역한 것이다. 들어가며 2012년 10월 17일, Bryan Helmkamp, Code Climate 설립자가 Ruby on Rails의 액티브 레코드 모델들(대표적인 객체 레이어들)을 리팩토링할 7개의 패턴을 요약하여 블로그 포스트를 작성했다. 여기 [Crush & Lovely]의 포스트는 모든 Rails개발자를 위해 어떻게 문제를 분리하고, 모듈 형으로 작성하며, 간결하면서도 표현적인 코드를 만들고, 매우 간단한 테스트를 만드는 지에 대해 설명하는 핵심 레퍼런스가 될 것이다. 이 시리즈의 포스트들은 자바스크립트 환경에서 다음과 같은 개념에 대해 직접 보여준다 ; 자바스크립트의 데이터 모델보다 더 적합하거나 거기에 필적할 만한 것은 없다. 매주, 일곱 패턴 중…read more

2

[JSer.info#번역] 2014-01-28 자바스크립트 주요 소식

Posted by in Research

Vivaldi Techinial Preview Chromium 기반의 브라우저인 Vivaldi의 Techinial Preview 버전이 공개됐습니다. 이 브라우저는 전 Opera의 CEO인 jon Stephenson von Tetzchner가 설립한 Vivaldi Technologies에서 개발하고 있습니다. 2014년 3월경 오페라 소프트웨어에 의해 My Opera가 폐쇄 됐고 이를 탐탁치 않아 했던  jon Stephenson von Tetzchner는 My Opera를 대신할 가상 커뮤니티 사이트로써 Vivaldi를 만들었던 것이 시발점이 되어 여기까지 오게됐다고 합니다. Meet Vivaldi, A New Browser From the Former CEO of Opera Former Opera CEO Launches Vivaldi, A New Browser For Power Users Opera 12 유저를 대상으로한 기능이 많이 구현돼 있는 느낌이며 Chronium 기반으로 개발됐으므로…read more

0

[JSer.info#번역] 2014-01-20 자바스크립트 주요 소식

Posted by in Research

TypeScript 1.4 릴리즈 TypeScript 1.4가 릴리즈 됐습니다. 이전 TypeScript and the Read to 2.0(로드맵)에 작성돼 있었던 것 처럼, Union Types, Type Aliases, Const Enums 등의 기능이 추가됐으며 ES6의 구문 지원의 개선, ES6의 코드를 출력하는 모드도 추가됐습니다. 자세한 사항은 TypeScript 1.4.1 변경 사항(일본어)을 참고해주세요. 또, TypeScript의 Compiler API에 관한 문서가 첨삭(添削)되고 있습니다. io.js 1.0.0 릴리즈 Node.js를 fork한 io.js 1.0.0이 릴리즈 됐습니다. io.js – FAQ에도 작성돼 있습니다만 1.0은 semver 이므로 Node.js에서의 메이저 업데이트라는 의미입니다. production-ready라는 의미는 아닙니다. jser.info 4주년(일본어)에서 간단히 언급했듯이 오픈 거버넌스 모델을 바탕으로 예측 가능한 릴리즈 사이클의 제공을 목적하고 있으며 이와…read more

0

[JSer.info#번역] 2014-01-13 자바스크립트 주요 소식

Posted by in Research

6to5 공식 홈페이지 리뉴얼 ES6의 코드를 ES5로 변환하는 도구인 6to5의 공식 홈페이지가 리뉴얼됐습니다. 또한, ES6의 코드를 변환하는 도구인 esnext의 팀이 6to5에 합류할 것으로 보입니다. 때마침 ES6로 작성한 라이브러리를 6to5를 사용해 공개하는 과정에 관한 “라이브러리를 ES6로 작성해 공개하는 것부터 시작하자(일본어)”라는 아티클도 작성했으므로 참고하여 6to5를 사용해 보면 좋을 것 같습니다. JavaScript in 2015 – Glen Maddern: Internet Pro JavaScript in 2015 – Glen Maddern: Internet Pro라는 기사에는 jspm 패키지 관리 도구에 관해 소개하고있습니다. jspm은 npm이나 Github에서 라이브러리를 설치하는 커맨드라인 도구와 SystemJS를 사용한 모듈 로더로 구성돼 있습니다. 위 동영상에는 jspm을 이용해 reddit에서 gif를…read more

0

한글에 ‘-thin’ 폰트를 사용할 수 있을까?(모바일)

Posted by in Research

iOS에 AppleSDGothicNeo-Thin 폰트를 적용하고, 안드로이드에도 역시 얇은 폰트를 적용해 달라는 요청을 받았습니다. 해외 사이트에 나와 있는 스펙 문서를 보고 진행을 했지만 특히 안드로이드에서 한글은 스펙과 전혀 다른 길을 가고 있다는 것을 깨달았습니다. 그리고 결국 전체적인 폰트와 크기를 수정할 수 밖에 없었답니다. AppleSDGothicNeo-XXX 와 Helvetica Neue-XXX 로  iOS에서 폰트 굵기를 조절했다면, 안드로이드에서는 어떻게 조절할 수 있을까요? ‘-thin’ 폰트에 대한 버그는 없을까요? ☞ 모바일 폰트 시뮬레이션 iOS iosfonts.com 에도 나와 있듯이, iOS7 부터는 AppleSDGothicNeo-Thin 폰트를 사용할 수 있습니다. 하지만 font-family : AppleSDGothicNeo-Thin; 인 상태에서 가로모드로 돌려 보면(제일 오른쪽 이미지) 한글에서 ‘스’의 ‘ㅡ’가 살짝 안보입니다. 이 버그는 iOS7에서만 재현됩니다….read more

0

[JSer.info#번역] 2014-01-06 자바스크립트 주요 소식

Posted by in Research

ESLint 0.11.0 릴리즈 JavaScript Lint 도구 ESLint 0.11.0이 릴리즈됐습니다. ES6나 JSX 등을 지원하기 위해 Esprima에서 fork한 Espree로 파서를 변경하고 있습니다. 또한, ECMAScript5가 기본 검증 설정으로 변경됐으며 설정을 package.json(Configuring ESLint)에 작성할 수 있도록 됐습니다. browserify for webpack users 위 아티클에는 webpack의 각 기능을 Browserify에서 실현하는 방법을 비교해 소개하고 있습니다. 소개하는 방법이 꼭 동일한 기능이라고는 할 수 없지만, 각각의 설계 철학의 차이를 알 수 있는 디자인을 볼 수 있습니다. webpack은 모든 기능을 포함하고 그것을 활용한 최적화가 가능한 개발 방식을 취하고 있고, Browerify는 외부에서 기능을 구현하도록 하고 필요시 조합해 사용하는 UNIX 철학을 근간으로…read more

0

vh 사용 예 – 네이버 증권 모바일

Posted by in Research

ios7에서 height 100% 인 딤드 팝업 먼 미래의 단위인 것 같았던 vh 를 처음 사용했습니다. 아직 안드로이드 4.3 이하에서 지원하지 않아 적극적으로 사용하기엔 조심스럽긴 합니다. 저 역시 어떤 버그나 사이드 이펙트가 있을지 두근두근했는데, 배포한지 일주일이 지난 지금까지 다행히도 아무런 이슈가 없어서 기쁜 마음에 정리해봤어요. 그리고 다시 한번 느꼈지만 ‘뷰포트의 크기를 재는 스크립트 처리를 대신 할 수 있는 신박한 단위’ 인건 분명한 것 같습니다. 이슈 아이폰에서 키보드 노출 상태로 팝업 딤드가 보이는 경우, 위 아래로 꽉 차지 않는 이슈가 있었습니다 input 박스에 포커싱이 된 상태 + 키패드가 올라옴 + 스크롤 후,…read more

0

CSS3로 구현된 페이지의 IE7~9 대응 이야기

Posted by in Research

들어가기 CSS3를 활용한 모바일 페이지를 최대한 HTML 수정없이 IE 하위 버전에서도 정상노출하기 위한 테스트를 진행하였었습니다. 이를 위해 조사해보니 다양한 방법이 있어, 그 중 몇가지 적용 사례를 소개합니다. 가상선택자(:before, :after, …), box-sizing:border-box (IE7) 하위 버전 IE에서 지원하지 않는 속성을 지원하기 위한 스크립트를 사용하였습니다. 아래 코드를 head 안에 넣어서 사용합니다.

가상 선택자는, CSS3문법인 더블콜론(::)과 CSS2문법인 싱글콜론(:) 문법을 가지고 있습니다. IE 하위 버전에서는 CSS2문법인 싱글콜론만 지원하여, 더블콜론을 싱글콜론으로 변환해주어야합니다.

더 자세한 사용법은 아래 URL에서 확인할 수 있습니다. https://code.google.com/p/ie7-js/ background-size:cover (IE7/IE8) IE8 이하 버전에서 background-size:cover 속성을 지원하지 않습니다. 이 경우 두가지 방법을…read more