이상적인 Web IDE 연구(2)
1. 완성화면 바로가기
교육용 Web IDE 가 갖추어야 할 요소를 모두 갖춘 위즈랩과 구름 EDU 의 화면을 참고하여 개발했다.
[2D Web IDE]
[3D Web IDE]
2. 개발 TIP
TIP1. 클래스명은 최대한 간결하게!
클래스명은 요소가 담아내는 내용만이 드러나도록 간결히 작성해야 하는데, 이 때 중복된 이름의 클래스를 작성할 수 있다.
이러한 문제를 해결하기 위해 직계 자손 지정자(‘>’)를 활용하여 스타일에서 요소를 훅할 수 있게 하자.
아래와 같이 클래스 명을 간결하게 작성하고, 직계 자손 지정자로 정리하니 코드가 매우 깨끗해졌다.
<body>
<div class="root">
<div class="studio">
<!-- studio 상단 -->
<div class="header">
<div class="left">
...
</div>
<div class="right">
...
</div>
</div>
<!-- studio 중앙 -->
<div class="body_frame">
<div class="body">
<!-- studio 왼쪽 자습서 -->
<div class="left__tutorial">
<div class="header">...</div>
<div class="body">...</div>
<div class="footer">...</div>
</div>
<!-- studio 오른쪽 에디터 -->
<div class="right__editor">
<div class="header">
<div class="left">
...
</div>
<div class="right">
...
</div>
<!-- studio 하단 -->
<footer class="footer">
<div class="left">
...
</div>
<div class="middle">
...
</div>
<div class="right">
...
</div>
</footer>
</div>
</div>
</body>
/* studio 왼쪽 자습서의 header와 body 예시 */
.studio > .body_frame > .body > .left__tutorial > .header {
position: sticky;
color: #313338;
background-color: #f7f8fa;
padding: 0.5rem 1.25rem;
display: flex;
justify-content: flex-start;
align-items: center;
border-bottom: 1px solid #e7e8ef;
}
.studio > .body_frame > .body > .left__tutorial > .body {
background-color: #fff;
color: #000;
padding: 1.875rem;
overflow: auto;
}
TIP2. @media query 는 최대한 하단에 배치!
media query 를 활용하여, 화면의 크기가 600px 이하일 때 자습서와 에디터의 flex-direction 이 row → column 으로 배치되게끔 코드를 작성했는데, 작동이 되지 않았다.
그 이유를 알아보니, css 의 casecade 작동 방식 때문에 동일한 요소를 지정해서 사용할 수 밖에 없는 media query 에서는 충돌이 발생할 수 밖에 없고 따라서 특정 상황에서 속성이 변화하게 해야하는 query 문은 항상 하단에 배치해야 함을 알 수 있었다.
/* 동일한 요소를 지정하는 경우 가장 마지막 스타일이 적용되므로, 화면 크기가 600이하로 줄어들어도 작동하지 않음. */
@media all and (max-width: 600px) {
.studio > .body_frame > .body {
display: flex;
flex-direction: column;
overflow: scroll;
}
}
.studio > .body_frame > .body {
display: flex;
flex-direction: column;
}
/* 올바른 예 */
.studio > .body_frame > .body {
display: flex;
flex-direction: column;
}
@media all and (max-width: 600px) {
.studio > .body_frame > .body {
display: flex;
flex-direction: column;
overflow: scroll;
}
}
댓글남기기