라벨이 CSS인 게시물 표시

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 를 사용할 수 있다. 그러나 모바일은 다르다. 일부 모바일 브라우저...

[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 에 접속해 자세한 사용 방법과 기능을 실시간으로 테스트해보세요. 몰랐던 분이라면 앞으로 자주 사용하게 될 겁니다.