라벨이 Web Design인 게시물 표시

Safari의 100vh 문제

Safari의 100vh 문제 100vh? CSS의 vh 단위는 1% of Viewport Height 이다. vw 는 1% of Viewport Width 이고. 나는 이 단위를 알게 된 시점부터 지금까지 꾸준히 즐겨 사용하고 있었다. 이전에는 html, body 에 width, height 를 각각 100%로 지정하고, 하위 엘리먼트에서 또 적용하고 하는 식으로 페이지가 뷰포트에 꽉 차게 구현해야 했었지만 1 이 단위가 나오고 나서는 간단하게 뷰포트에 꽉 채울거면 너비는 100vw 로, 높이는 100vh 로 지정하면 됐기 때문이다. vw, vh가 만능은 아니다. 하지만 위 이야기는 데스크탑 버전의 웹 페이지를 작업할 때만 해당되는 말이다. 반응형 웹이랍시고 데스크탑과 모바일 모두에서 예쁘게 잘 보여야 제대로 만들어진 페이지란 소리를 듣는 요즘 세상에서는 vw, vh 도 만능은 아니다. 어디까지가 Viewport인가 그 이유는 바로 모바일 브라우저들의 지랄맞은 Address Bar(또는 Navigation Bar) 때문이다. 화면 크기가 제한적인 모바일 브라우저의 특성 때문에 모바일 브라우저의 주소창 영역은 그 높이가 일정하지 않다. 크롬, 사파리, 오페라, 웨일, 파이어폭스, 키위 등 브라우저마다 높이가 다른 것 은 둘째 치더라도, 하나의 브라우저에서도 주소창이 스크롤 중에 위나 아래로 쏙 들어가버리는 경우 가 생기기 때문에 항상 높이가 변한다고 봐도 무방하다. 문제는, 이런 상황에서 vh 유닛을 사용할 때 발생한다. Viewport는 Address Bar 영역도 포함한다. 이게 정말 사람을 미치게 하는 부분이다. 데스크탑용 브라우저에서 뷰포트라 하면 주소창 및 메뉴 영역을 제외한, 실제로 페이지가 렌더링되는 부분을 말한다. 즉 document 가 렌더링될 수 있는 영역만을 뷰포트라고 정의하고 이를 통해 직관적으로 vw, vh 를 사용할 수 있다. 그러나 모바일은 다르다. 일부 모바일 브라우저...

HTMLInputElement.files를 리셋하는 방법

  input[type=file,multiple] 요소가 있고, 파일이 선택될 때마다(onchange) 큐에 파일을 쌓고 input 요소는 초기화해야 하는 경우가 생겼습니다.   처음엔 HTMLFormElelment.reset()으로 해결을 할까 했는데, 그렇게 되면 다른 폼 구성요소들도 모두 초기화가 되기 때문에 안 되겠더라고요.   그래서 혹시나 하고 input 요소의 value를 ""(empty string)으로 설정하니 files 필드 역시 비워지는 것을 확인 했습니다.   즉, value를 비워버리면 files 필드 역시 비워진다는 의미입니다. 생각보다 간단하죠? 저도 그래서 놀랬습니다.

[HTML/CSS] CSS만 사용해서 텍스트 드래그 방지하는 방법

드래그 방지의 필요성?   많은 분께서 드래그 방지 하면 불펌방지 를 떠올리실 거라 생각합니다. 하지만, 사실상 불펌방지는 드래그 방지만으로 막을 수 있는 것이 아닐 뿐더러, 애초에 불펌방지라는 말 자체가 이상하기도 합니다. 누구나 볼 수 있으며 정보 공유를 목적으로 하는 블로그에서 불펌방지라니...   아무튼, 제가 이 글을 쓰는 목적은 쓸데없는 드래그로 의도한 디자인이 망쳐지는 경우 를 방지하기 위함입니다. 예를 들어, 사이드메뉴를 예쁘게 만들어 색상 조합도 완벽하게 디자인해놨는데 메뉴를 클릭하다 실수로 드래그라도 하면 영 보기 좋지 않은 색상으로 드래그된 채 색상 조합이 다 망쳐지게 되죠. 바로 이럴 때 드래그 방지를 하면 됩니다. 드래그 방지 방법. CSS만으로!   매-우 간단합니다. user-select 혹은 touch-callout 프로퍼티를 none으로 설정하면 됩니다.  -webkit-touch-callout: none; user-select: none; -moz-user-select: none; -ms-user-select: none; -webkit-user-select: none;   해당 CSS가 적용된 엘리먼트는 이제 드래그를 할 수 없게 됩니다. 참 쉽죠?

CSS: flexbox(플렉스박스)

이미지
편리한 엘리먼트 배치   작년 중후반이었습니다. 좀비 서바이벌 어드민 여러분들이 게임 외에서도 편하게 유저를 관리할 수 있도록 웹 관리 툴을 만드려고 했는데, 제 절망적인 디자인 감각이 망설이게 만들었었죠. 재작년이었나 재재작년이었나, Ruby on Rails 상에서 돌아가는 웹 도구를 만드려고 하다가 미친듯한 색감과 배치에 포기했던 아픈 기억이 있었기 때문입니다. 당시의 절망적인 디자인 배치   뭐, 결론부터 말하자면 지금도 디자인은 똥망이지만! 그래도 작업하는 속도는 확실히 빨라졌습니다. 당시 위 절망적인 디자인을 하며 왼쪽 사이드 메뉴와 오른쪽 콘텐츠 영역을 딱 보기 좋게 한번에 나누고, 모바일 접속을 대비해 CSS 미디어 쿼리로 반응형으로 만드는 데 굉장히 많은 수정 노가다가 필요했었는데, 지금부터 알려드릴 Flexbox 를 쓰시면 그런 노가다가 상당히 줄어들게 됩니다. Flexbox?   처음엔 플렉스박스란 게 생긴지도 모르고 있었습니다. 디자인에 참고하려고 새롭게 바뀐 애드센스 페이지를 분석하다가 display 프로퍼티에 처음 보는 녀석이 있길래 조사하다가 알게 되었죠. Flexbox를 사용한 새로운 애드센스   그리고 display:flex에 대해 찾아보니, 기존엔 CSS로 굉장한 노가다를 해야 했던 작업을 flex를 사용해 간단하게 처리할 수 있는 사실을 알게 되었습니다. 뷰포트 사이즈에 따른 자동 비율 설정, 특정 엘리먼트는 뷰포트에 상관없이 일정 크기 유지 등등... 당시 저에겐 신세계였죠.   물론 저것 말고도 많은 기능이 들어있습니다. A Complete Guide To Flexbox - CSS Tricks 에 접속해 자세한 사용 방법과 기능을 실시간으로 테스트해보세요. 몰랐던 분이라면 앞으로 자주 사용하게 될 겁니다.

웹 페이지의 색상 손쉽게 따오기 (Chrome/ColorZilla)

이미지
원하는 웹 페이지의 색 배치를 손쉽게 따와보자   웹 디자인 중에, 참고할 만한 사이트를 돌아다니다가 너무나도 맘에 드는 색상 배치를 발견했는데 색상 값을 알아내려면 포토샵을 키고 스포이드를 찍어야 한다면 너무 귀찮죠.    크롬의 확장 프로그램인 ColorZilla 는 웹 페이지 상에서 바로 마우스 위치의 색상 값을 알려주고 클릭하면 자동으로 클립보드에 복사 까지 해 주는 유용한 디자인 쪽 확장 프로그램입니다. 그 외의 기능으로는 손쉽게 CSS 그라디언트를 만들어주는 기능이 있습니다. 다운로드 및 설치   ColorZilla 확장 프로그램 페이지 에 접속해서 설치하시면 바로 사용할 수 있습니다. ColorZilla 사용법   ColorZilla를 설치하면 오른쪽 위에 ColorZilla 아이콘이 생깁니다. 클릭하고 마우스를 웹 페이지에서 움직이면 마우스가 위치한 곳의 색상이 표시 됩니다. 클릭하면 바로 해당 색상의 HEX값이 클립보드에 복사 됩니다.   물론, 옵션에서 복사될 형식을 변경할 수도 있습니다.  (Auto Copy 항목 변경)   CSS Gradient Generator 를 사용하면 복잡한 그라디언트도 간단히 만들어 적용할 수 있습니다. 자바스크립트 없이, CSS만으로!   ColorZilla와 Adobe Color CC를 동시에 사용하면 색상 배치는 더 이상 고민거리가 되지 않을 겁니다. 저처럼 타고난 색상 센스가 영 좋지 않지 않다면요.