HTML로 데스크톱 앱 같은 화면 구조를 구축하는 베스트(?) 프랙티스
웹에서 데스크톱 앱 같은 화면 구조를 구축하는 베스트(?) 프랙티스
최근, 일로 Web가게의 흉내를 했다(어떤 툴을 만들었지만, 그 UI를 Web어플리로 할 필요가 있었다).
데스크톱 앱과 같은 화면을 다수 만들 필요가 있었으므로, 효율을 요구해 여러가지 방법을 시도한 가운데, 가장 좋았다고 생각하는 방법을 정리한다.
데스크톱 앱 같은 화면 구조란?
다음과 같은 스타일을 가진 화면 구조.
Qiita의 투고 화면도 그러한 구조군요.
네이
소수의 CSS 클래스를 정의하는 것만으로, 대부분의 화면 레이아웃에 대응할 수 있는 것.
개발 효율도 보수성도 떨어지므로 가능한 한 화면마다 CSS를 쓰고 싶지 않다.
HTML(DOM) 구조가 복잡하지 않을 것.
DOM이 복잡해지면 역시 개발 효율도 보수성도 떨어진다.
브라우저 개별 대책이 최소한으로 끝나는 것
까다로운 일을하지 않습니다. 어느 정도 시들어진 기술을 사용한다.
기법
FlexBox를 사용한다.
최근 브라우저라면 거의 대응 . 벤더 프리픽스도 붙이지 않아도 좋을 정도.
IE도 11은 대응. IE 10도 (수상하지만 일단) FlexBox 대응.
구현
결국, 이런 느낌으로 했다.
See the Pen DesktopAppLike by hogegex ( @hogegex )
on CodePen .
해설
-
화면 전체를 덮기 위해서, 최상위 요소에 matchParent 클래스를 지정한다.
-
화면을 세로로 분할하고 싶은 경우는 stackVertical 클래스를, 옆으로 분할하고 싶은 경우는 stackHorizontal 클래스를 지정해, 페인이 되는 아이 요소를 추가한다.
-
일반 창은 내용에 따라 크기가 결정됩니다. 사이즈를 고정 혹은 제약하고 싶은 경우는, 대상 요소에 (max-/min-) width/height를 지정한다.
-
stretchable 클래스를 지정하면, 그 페인은, 여백 가득 퍼진다. 복수로 지정한 경우는, 여백을 등분으로 나눈다.
-
창의 내용을 스크롤 시키고 싶은 경우는, verticalScrollable 클래스를 지정한다.
-
분할창을 재분할하려는 경우 분할창의 요소에 stackVertical/stackHorizontal을 지정합니다.
주의사항
브라우저에 따라서는, 페인내의 일부의 요소(textarea, select등)가 묘하게 신축해지는 일이 있었다.
이것은 일부 요소에 디폴트로 flex-shrink가 설정되어 있기 때문이었다.
아래와 같이 명시적으로 취소하거나 리셋 CSS를 적용하는 것이 좋습니다.
textarea, select {
flex-shrink: 0;
}
Reference
이 문제에 관하여(HTML로 데스크톱 앱 같은 화면 구조를 구축하는 베스트(?) 프랙티스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hogegex/items/2a259a922a9b2e6ef3fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)