Files
PM_test/libs/gsimViewer/style.css
2026-06-12 17:14:03 +09:00

1126 lines
21 KiB
CSS

@charset "utf-8";
/* js를 위한 id값 ===== ===== ===== ===== ===== */
#mapContainer {
position: absolute;
width: 100dvw;
height: 100dvh;
margin: 0;
padding: 0;
overflow: hidden;
z-index: 0;
}
/* #slider { position: absolute; left: 50%; top: 0px; background-color: #FF5C00; width: 5px; height: 100%; z-index: 99; } */
#slider:hover {
cursor: ew-resize;
}
#sub-gsim {
display: none;
position: absolute;
width: 18.75rem;
max-height: 50rem;
background-color: rgba(0, 0, 0, 0.7);
left: 0.938rem;
top: 0.938rem;
border-radius: 1.125rem;
padding: 0.625rem;
}
#sub-gsim ul {
list-style-type: none;
gap: 0.313rem;
}
#btn-group {
display: flex;
flex-direction: column;
width: 25rem;
height: 7.5rem;
position: absolute;
right: 0.938rem;
top: 0.938rem;
padding: 0.313;
border-radius: 1.125rem;
background-color: rgba(0, 0, 0, 0.7);
}
#progress {
display: none;
position: relative;
width: 100dvw;
height: 100dvh;
background-color: #222222cc;
justify-content: center;
align-items: center;
flex-direction: column;
}
#progress img {
width: 7.5rem;
padding-bottom: 3.125rem;
}
/* 라디오박스 스타일 변경 ===== ===== ===== ===== ===== */
input[type="radio"] {
display: none;
}
.radio-label {
display: inline-flex;
align-items: center;
cursor: pointer;
font-size: 0.75rem;
line-height: 1rem;
color: #fff;
}
.radio-custom-inbox {
width: 0.75rem;
height: 0.75rem;
border: 0.0625rem solid #aaa;
border-radius: 50%;
display: inline-block;
position: relative;
margin-right: 0.5rem;
transition: all 0.1s;
}
.radio-label input[type="radio"]:checked+.radio-custom-inbox::before {
content: "";
width: 0.375rem;
height: 0.375rem;
background: #fff;
border-radius: 50%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
input[type="radio"]:checked~.radio-custom-inbox {
border-color: #fff;
}
/* 체크박스 스타일 변경 ===== ===== ===== ===== ===== */
input[type="checkbox"] {
display: none;
}
input[type="checkbox"]:checked~.checkbox-content {
opacity: 0.4;
}
.checkbox-label {
display: flex;
justify-content: space-between;
color: #fff;
cursor: pointer;
font-size: 0.75rem;
line-height: 1rem;
}
.checkbox-label.layer {
/* opacity: 0.2; */
flex-grow: 1;
transition: all 0.1s;
}
.checkbox-label-left {
display: flex;
align-items: center;
gap: 0.25rem;
flex-grow: 1;
}
.checkbox-label-left h6 {
max-width: 6.25rem;
min-width: 6.25rem;
flex-grow: 1;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
}
/* z-스케일바 디자인 ===== ===== ===== ===== ===== */
.z-scaleBar {
width: fit-content;
height: 2.375rem;
border-radius: 0.25rem;
border: 0.0625rem solid rgba(119, 119, 199, 0.2);
background: rgba(17, 17, 17, 0.60);
backdrop-filter: blur(1rem);
padding: 0.5rem;
display: flex;
flex-direction: column;
align-items: center;
gap: 0.25rem;
pointer-events: all;
}
.z-scaleBar-gauge {
display: flex;
align-items: center;
}
.z-scale-number-rem {
width: 24.25rem;
}
.slider {
-webkit-appearance: none;
width: 25rem;
height: 0.25rem;
background: #777;
border-radius: 0.25rem;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 0.75rem;
height: 0.75rem;
background: #fff;
border-radius: 50%;
cursor: pointer;
}
.label-opacity-number {
width: 98%;
padding-left: 2%;
padding-top: 0.125rem;
}
/* 스타일 시작 ===== ===== ===== ===== ===== */
/* 레이아웃 */
main {
display: flex;
flex-direction: column;
justify-content: flex-end;
pointer-events: none;
position: absolute;
top: 2.25rem;
overflow: hidden;
margin: 0;
padding: 0;
overflow: hidden;
height: 100%;
width: 100%;
}
header,
footer {
overflow: hidden;
}
footer {
/* background: #333 !important; */
}
.top {
display: flex;
justify-content: space-between;
gap: 0.5rem;
position: absolute;
top: 0.5rem;
left: 0.5rem;
right: 0.5rem;
}
.top-right {
display: flex;
gap: 0.5rem;
}
.bottom-up {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 0.5rem;
}
.bottom {
display: flex;
justify-content: space-between;
align-items: flex-end;
}
/* 라벨속성에 있는 컬러피커 디자인 */
.color-picker {
display: flex;
justify-content: space-between;
}
.color-swatch {
width: 1.125rem;
height: 1.125rem;
border-radius: 50%;
display: inline-block;
border: 0.125rem solid transparent;
cursor: pointer;
}
.color-picker input[type="radio"]:checked+.color-swatch {
border: 0.125rem solid rgba(0, 0, 0, 0);
box-shadow: 0 0 0 0.125rem #fff;
transition: all 0.1s;
}
/* 모델기반에 있는 컬러피커 디자인 */
input[type="color"] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: transparent;
border-radius: 50%;
overflow: hidden;
display: block;
vertical-align: middle;
margin-right: 0.5rem;
width: 1.125rem;
height: 1.125rem;
inline-size: 1.125rem;
block-size: 1.125rem;
}
input[type="color"]::-webkit-color-swatch {
border-radius: 50%;
border: 0.0625rem solid #777;
}
input[type="color"]::-webkit-color-swatch:hover {
cursor: pointer;
}
input[type="color"]::-webkit-color-swatch-wrapper {
padding: 0;
}
/* 툴킷 디자인 */
.right-tool-kit,
.center-tool-kit {
width: fit-content;
height: fit-content;
border-radius: 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
backdrop-filter: blur(1rem);
background: rgba(17, 17, 17, 0.60);
padding: 0.5rem;
gap: 0.5rem;
display: flex;
pointer-events: all;
}
/* 아이콘버튼 디자인 */
.xs-icon-btn {
display: flex;
justify-content: center;
background: rgba(17, 17, 17, 0.60);
backdrop-filter: blur(1rem);
border-radius: 0.25rem;
padding: 0 0.25rem 0 0.125rem;
gap: 0.125rem;
cursor: pointer;
align-items: center;
}
.xs-icon-btn:hover {
background: #444;
transition: all 0.1s;
}
.xs-icon-btn p {
color: #fff;
font-weight: 200;
}
.xs-icon-btn .z-scaleBar-gauge {
padding: 0 0.5rem;
}
.xs-icon-btn.on {
display: flex;
justify-content: center;
background: #111;
border-radius: 0.25rem;
padding: 0 0.25rem 0 0.125rem;
gap: 0.125rem;
cursor: pointer;
filter: invert(1);
}
.xs-icon-btn.on p {
color: #fff;
}
.big-btn {
display: flex;
flex-grow: 1;
background: rgba(17, 17, 17, 0.60);
justify-content: center;
align-items: center;
border-radius: 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
padding: 0.25rem 0;
cursor: pointer;
color: #fff;
}
.big-btn:hover {
background-color: #fff;
color: #111;
transition: all 0.1s;
}
#modal-issue-cancel:hover,
#modal-label-delete:hover {
background-color: #111;
color: var(--color-dahong);
}
.type-em-red {
padding-left: 0.125rem;
}
/* 창 디자인 */
.window {
width: 10.75rem;
height: fit-content;
display: flex;
flex-direction: column;
border-radius: 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
background: rgba(17, 17, 17, 0.60);
backdrop-filter: blur(1rem);
pointer-events: all;
}
.window-fit {
height: fit-content;
display: flex;
gap: 0.5rem;
border-radius: 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
background: rgba(17, 17, 17, 0.60);
backdrop-filter: blur(1rem);
padding: 0.5rem;
pointer-events: all;
}
.window-big {
width: 19.25rem;
height: fit-content;
flex-direction: column;
border-radius: 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
background: rgba(17, 17, 17, 0.60);
backdrop-filter: blur(1rem);
pointer-events: all;
}
.window-relative {
border-radius: 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
background: rgba(17, 17, 17, 0.60);
backdrop-filter: blur(1rem);
pointer-events: all;
display: flex;
position: absolute;
bottom: 6.125rem;
left: 50%;
transform: translateX(-50%);
min-height: 32rem;
}
.window-img-container {
width: 32rem;
height: 32rem;
height: fit-content;
overflow: hidden;
position: relative;
}
.window-img-container .cliping-image {
width: 32rem;
height: 32rem;
object-fit: contain;
}
.window-relative .window-footer {
display: flex;
gap: 0.5rem;
overflow: hidden;
overflow-y: auto;
max-height: 100%;
min-width: 15rem;
background: rgba(17, 17, 17, 0.60);
}
.window-img-container .icon {
position: absolute;
top: 0;
right: 0;
padding: 0.5rem;
height: auto;
cursor: pointer;
}
.window-header {
display: flex;
justify-content: space-between;
cursor: pointer;
padding: 0.5rem 0.5rem 0.5rem 1rem;
}
.window-header h3 {
color: #fff;
}
.window-body {
display: flex;
flex-direction: column;
gap: 1rem;
padding: 0.5rem 0.5rem 1rem;
}
.not {
overflow: hidden;
overflow-y: auto;
max-height: calc(100dvh - 10.75rem);
}
.window-body p {
color: #aaa !important;
}
.window-body h4 {
color: #fff;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: fit-content;
display: inline-block;
}
.window-body li {
cursor: pointer;
}
.window-body-content {
display: flex;
flex-direction: column;
gap: 0.5rem;
padding-left: 0.5rem;
}
.window-content {
padding: 0 0.5rem;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.window-content input[type="text"] {
background: rgba(17, 17, 17, 0.60);
border-radius: 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
padding: 0.5rem 1rem;
width: 100%;
color: #fff;
font-size: 0.875rem;
font-weight: 300;
height: 2.25rem;
}
.window-content input::placeholder {
color: #777;
font-size: 0.875rem;
}
.window-content .file-title {
padding-bottom: 0;
}
.window-content-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.window-footer {
display: flex;
gap: 0.5rem;
overflow: hidden;
overflow-y: auto;
max-height: calc(100dvh - 10.75rem);
min-width: 15rem;
border-top: 0.0625rem solid rgba(170, 170, 170, 0.2);
padding: 0.5rem;
}
.window-footer ul {
padding: 0.25rem 0;
width: 100%;
}
.window-footer li {
display: flex;
gap: 0.125rem;
color: #fff;
cursor: pointer;
padding: 0.25rem 0 0.25rem 0.25rem;
align-items: center;
}
.window-footer li h4 {
width: 11.75rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.window-btn-wrap {
display: flex;
gap: 0.5rem;
padding: 0 0.25rem;
}
/* 이슈 텍스트 에어리얼 */
.issue-txt {
width: 100%;
height: 11.5rem;
resize: none;
overflow: auto;
padding: 0.5rem 1rem;
font-family: 'pretendard';
font-size: 0.875rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
border-radius: 0.25rem;
box-sizing: border-box;
line-height: 1.25rem;
background: rgba(17, 17, 17, 0.60);
color: #fff;
}
.issue-txt:focus {
outline: none;
border: 0.0625rem solid #fff;
}
.file-click {
display: flex;
justify-content: space-between;
background: rgba(17, 17, 17, 0.60);
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
border-radius: 0.25rem;
padding: 0.5rem 1rem;
gap: 1rem;
overflow: hidden;
overflow-y: auto;
max-height: calc(100dvh - 41.5rem);
min-height: 2rem;
color: #fff;
min-height: 2.25rem;
}
.file-click input {
background: none !important;
border-radius: none !important;
border: none !important;
padding: 0 0 0 0.25rem !important;
width: 7.75rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.file-click input:focus {
outline: none;
box-shadow: none;
border-color: inherit;
}
.file-click p {
color: #777;
}
.file-click ul {
width: 100%;
}
.file-click ul li {
display: flex;
justify-content: space-between;
padding: 0.5rem;
}
.file-click h4 {
width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.file-click.subfit {
padding: 0.5rem;
}
.bottom-up-left {
padding-right: 11.25rem;
}
.bottom-up-right {
display: flex;
align-items: flex-end;
gap: 0.5rem;
margin-left: auto;
}
.bottom-up-center {
position: absolute;
bottom: 3.375rem;
left: 50%;
transform: translateX(-50%);
}
.center-tool-kit {
position: absolute;
bottom: -0.688rem;
left: 50%;
transform: translate(-50%, -50%);
}
.font-size {
display: flex;
border: 0.0625rem solid rgba(#777, 0.2);
border-radius: 0.25rem;
overflow: hidden;
background: rgba(17, 17, 17, 0.60);
}
.font-size label {
position: relative;
cursor: pointer;
flex: 1;
text-align: center;
}
.font-size .btn {
display: inline-block;
padding: 0.5rem 1rem;
color: white;
font-size: 0.875rem;
}
.font-size label:first-child .btn {
border-left: none;
}
.font-size input[type="radio"]:checked+.btn {
background: #fff;
color: #111;
border-radius: 0.25rem;
width: 100%;
transition: all 0.1s;
}
li:hover {
background: rgba(255, 255, 255, 0.20);
border-radius: 0.25rem;
transition: all 0.1s;
}
.select-list .list-title {
background-color: #fff;
border-radius: 0.25rem;
}
.select-list h4 {
color: #111;
font-weight: 500;
}
.list-title {
display: flex;
align-items: center;
padding: 0.5rem 0.5rem;
gap: 0.25rem;
}
.list-title p {
min-width: 3.125rem;
}
.list-box {
padding: 0.5rem 1rem;
display: flex;
flex-direction: column;
gap: 0.5rem;
border-radius: 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
background: rgba(17, 17, 17, 0.40);
}
.list-box-section {
display: flex;
align-items: center;
gap: 0.5rem;
}
.list-box-section .z-scaleBar-gauge .slider {
width: 6rem;
}
#changeCursor {
display: none;
position: absolute;
left: 50%;
top: 50%;
width: 2.5rem;
height: 2.5rem;
background-image: url('./img/crosshair.png');
background-repeat: no-repeat;
background-size: contain;
z-index: 100;
pointer-events: none;
}
.split-slider {
position: fixed;
left: 50%;
width: 0.125rem;
height: 100dvh;
background-color: #fff;
z-index: 1;
cursor: ew-resize;
pointer-events: all;
position: absolute;
box-shadow: 0rem 0rem 1rem 0rem #111;
}
.split-icon {
background-color: #fff;
width: 2rem;
height: 2rem;
display: flex;
align-items: center;
justify-content: center;
border-radius: 0.25rem;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border: 0.0625rem solid #aaa;
}
#layer-modal .layer.disabled {
cursor: not-allowed;
opacity: 0.2;
}
/* 텍스트라벨 */
.measureLabel {
text-align: center;
pointer-events: all;
position: absolute;
top: 50%;
left: 50%;
transform: translateY(-0.625rem);
color: #fff;
pointer-events: none;
}
.measureLabel p {
color: #aaa;
width: max-content;
}
.point-title::before {
content: "";
position: absolute;
bottom: -0.938rem;
left: 50%;
transform: translateX(-50%);
width: 1.25rem;
height: 0.875rem;
background: rgba(17, 17, 17, 0.60);
backdrop-filter: blur(1rem);
clip-path: polygon(50% 100%, 0 0, 100% 0);
border-bottom-left-radius: 0.125rem;
border-bottom-right-radius: 0.125rem;
}
/* .point-title::after {
content: "";
position: absolute;
bottom: -12px;
left: 50%;
transform: translateX(-50%);
width: 18px;
height: 12px;
clip-path: polygon(50% 100%, 0 0, 100% 0);
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
z-index: 2;
} */
.point-title {
border: 0.0625rem solid #111;
padding: 0.5rem 1rem;
border-radius: 0.25rem;
width: max-content;
position: relative;
border-radius: 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
background: rgba(17, 17, 17, 0.60);
backdrop-filter: blur(1rem);
text-align: left;
isolation: isolate;
}
.point-wrap {
display: grid;
grid-template-columns: 4.25rem 1fr;
gap: 0.5rem;
text-align: left;
align-items: center;
}
.point-wrap-fit {
display: flex;
gap: 1rem;
text-align: left;
align-items: center;
}
/* '라벨'텍스트라벨 */
.point-title-color {
border: 0.0625rem solid #111;
padding: 0.5rem 1rem 0.5rem 0.5rem;
border-radius: 0.25rem;
width: max-content;
position: relative;
border-radius: 0.25rem;
background: var(--color-brown);
/* 컬러값조정하시면 됩니다. */
text-align: left;
border: none;
}
.point-title-color h6 {
padding-left: 0.5rem;
font-weight: 500;
}
.point-title-color::before {
content: "";
position: absolute;
bottom: -0.875rem;
left: 50%;
transform: translateX(-50%);
width: 1.25rem;
height: 0.875rem;
background: #444;
clip-path: polygon(50% 100%, 0 0, 100% 0);
background: var(--color-brown);
/* 컬러값조정하시면 됩니다. (같이 적용해야함) */
border-bottom-left-radius: 0.125rem;
border-bottom-right-radius: 0.125rem;
}
/* 스크롤바 */
::-webkit-scrollbar {
width: 0.5rem !important;
height: 0.5rem !important;
}
::-webkit-scrollbar-track {
background: transparent !important;
}
::-webkit-scrollbar-thumb {
background: rgba(17, 17, 17, 0.40) !important;
border: 0.0625rem solid #444;
border-radius: 0.25rem;
}
::-webkit-scrollbar-thumb:hover {
background: #aaa !important;
cursor: pointer;
}
.dropdown {
position: relative;
display: inline-block;
padding: 0 0.25rem;
}
.dropdown-toggle {
width: 100%;
padding: 0.5rem 0.5rem 0.5rem 1rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
background: rgba(17, 17, 17, 0.60);
color: #fff;
border: none;
border-radius: 0.25rem;
cursor: pointer;
display: flex;
justify-content: space-between;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
display: none;
margin-left: 0.25rem;
min-width: 17.625rem;
border-radius: 0 0 0.25rem 0.25rem;
border: 0.0625rem solid rgba(170, 170, 170, 0.2);
/* background: rgba(17, 17, 17, 0.90); */
background-color: #111;
}
.dropdown-menu ul {
overflow: hidden;
overflow-y: auto;
max-height: calc(100dvh - 20rem);
}
.dropdown-menu li {
display: block;
padding: 0.5rem 1rem;
text-decoration: none;
color: #fff;
font-size: 0.875rem;
font-weight: 300;
line-height: 1.25rem;
}
.dropdown-menu li:hover {
background-color: #fff;
border-radius: 0.25rem;
color: #111;
font-weight: 500;
}
.dropdown.open .dropdown-menu {
display: block;
}
.fixed-width {
min-width: 3.125rem;
max-width: 3.125rem;
text-align: center;
}
#modal-label-size label:hover {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 0.25rem;
transition: all 0.1s;
}
/* 나머지 */
.header-icon {
width: 2.875rem;
}
.footer-icon {
width: 4.625rem;
}
.split-icon-img {
width: 1.25rem;
}
html {
/* font-size: clamp(12px, 1dvw, 16px); */
}
.icon {
width: 1rem
}
.min-set {
min-width: 51.25rem;
}
@media screen and (max-width:932px) {
.top-right,
.split-slider,
.window-relative,
.bottom-up-center,
.z-scaleBar,
.center-tool-kit,
footer,
.bottom-up-left {
display: none !important;
}
.right-tool-kit {
margin-left: auto;
}
main {
height: calc(100dvh - 2.25rem) !important;
}
html {
font-size: 2.4999999dvw !important;
}
.icon {
width: 1rem;
height: 1rem;
}
.not {
max-height: calc(100dvh - 8.5rem);
}
}
.footer-left {
/* font-family: sans-serif; */
}
.footer_indicator_latitude,
.footer_indicator_longitude {
display: block;
/* text-align: right; */
min-width: 7.5rem;
max-width: 7.5rem;
width: 7.5rem;
/* letter-spacing: 1px; */
}
.footer_indicator_coord-sys {
display: block;
text-align: right;
min-width: 3rem;
max-width: 3rem;
width: 3rem;
}
.footer_indicator_scale {
display: block;
text-align: right;
min-width: 3.25rem;
max-width: 3.25rem;
width: 3.25rem;
/* letter-spacing: 1px; */
}
.footer_indicator_gpu-memory {
padding-left: 1rem;
}