diff options
| -rw-r--r-- | index.html | 2 | ||||
| -rw-r--r-- | main.js | 1 | ||||
| -rw-r--r-- | style.css | 67 | 
3 files changed, 48 insertions, 22 deletions
@@ -7,8 +7,8 @@    </head>    <body>      <div id="map"></div> +    <div id="zoom-control"></div>      <div id="map-control-container" aria-hidden="true"> -      <div id="zoom-control"></div>        <div id="layer-selection-panel"></div>        <div id="map-legend-panel"></div>        <div id="map-menu"></div> @@ -157,6 +157,7 @@ const featureOverlaySource = new VectorSource();  const container = document.getElementById('map-control-container');  (function() {    const container0 = map.getViewport().getElementsByClassName('ol-overlaycontainer-stopevent')[0]; +  container0.appendChild(document.getElementById('zoom-control'));    container0.appendChild(container);    container0.appendChild(document.getElementById('modal-info')); @@ -21,10 +21,11 @@ html, body {    top: 0;    bottom: 0;    width: 100%; +  --map-container-padding: 1rem;  }  #map-control-container { -  --map-container-padding: 1rem; +  --map-menu-spacing: .5em;    position: absolute;    padding: var(--map-container-padding);    display: flex; @@ -32,15 +33,16 @@ html, body {    width: 100%;    height: 100%;  } -@media screen and (max-width: 576px) { -  #map-control-container { +@media screen and (max-width: 767px), screen and (max-height: 767px) { +  #map {      --map-container-padding: .5rem;    }  }  #zoom-control { -  display: block; -  margin-right: auto; +  position: absolute; +  margin-left: var(--map-container-padding); +  margin-top: var(--map-container-padding);  }  #zoom-control .ol-zoom {    position: relative; @@ -111,21 +113,29 @@ html, body {    margin: 0;  } -#map-menu, #zoom-control { +#map-menu {    position: relative;  } +@media screen and (min-width: 576px) { +  #map-menu > .ol-control > button { +    font-size: 150%; +  } +}  @media screen and (min-width: 768px) {    #map-menu > .ol-control > button {      font-size: 200%;    } +  #zoom-control > .ol-zoom > button { +    font-size: 120%; +  }  }  #map-menu > * { -  margin-bottom: .5rem; +  margin-bottom: var(--map-menu-spacing);    pointer-events: auto;  }  @media screen and (max-width: 767px) { -  #map-menu > * { -    margin-bottom: .25rem; +  #map-control-container { +    --map-menu-spacing: .25rem;    }    .ol-scale-line-inner {      font-size: 70%; @@ -189,11 +199,11 @@ html, body {    /*min-width: min-content;*/    /*max-width: 35%;*/    /*width: revert;*/ -  width: 360px; +  max-width: 360px;    margin-left: var(--map-container-padding);    margin-right: var(--map-container-padding);    font-size: medium; -  z-index: 0; +  z-index: 11;    --bs-modal-color: var(--bs-body-color);    --bs-modal-padding: .75rem;  } @@ -211,7 +221,29 @@ html, body {    display: block;  } -@media screen and (max-width: 350px) { +@media screen and (max-aspect-ratio: .75), screen and (max-width: 460px) { +  /* 4/3 in portrait mode, likely mobile in portrait mode */ +  #map-control-container { +    flex-direction: column-reverse; +  } +  #map-menu { +    display: flex; +    justify-content: flex-end; +  } +  #map-menu > * { +    margin-bottom: 0; +    margin-left: var(--map-menu-spacing); +  } +  #map-menu .ol-full-screen { +    display: none; +  } +  #layer-selection-panel, +  #map-legend-panel { +    margin: var(--map-menu-spacing) 0 0 auto; +  } +} + +@media screen and (max-width: 200px) {    #layer-selection-button,    #map-legend-button,    #export-to-image, @@ -221,19 +253,12 @@ html, body {      display: none;    }  } -@media screen and (min-width: 350px) and (max-width: 576px) { -  #info-button { -    bottom: 0; -    right: 0; -    position: absolute; -  } -} -@media screen and (max-height: 576px), (max-width: 500px) { +@media screen and (max-height: 576px), screen and (max-width: 500px) {    #zoom-control .ol-zoomslider {      display: none;    }  } -@media screen and (max-height: 300px) { +@media screen and (max-width: 300px), screen and (max-height: 300px) {    body {      --bs-body-font-size: .8rem;    }  | 
