ol-ext
Version:
A set of cool extensions for OpenLayers (ol) in node modules structure
523 lines (491 loc) • 12.2 kB
CSS
.ol-control.ol-layerswitcher {
position: absolute;
right: 0.5em;
text-align: left;
top: 3em;
max-height: calc(100% - 6em);
box-sizing: border-box;
overflow: hidden;
}
.ol-control.ol-layerswitcher .ol-switchertopdiv,
.ol-control.ol-layerswitcher .ol-switcherbottomdiv {
display: block
}
.ol-control.ol-layerswitcher.ol-collapsed .ol-switchertopdiv,
.ol-control.ol-layerswitcher.ol-collapsed .ol-switcherbottomdiv {
display: none;
}
.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switchertopdiv,
.ol-layerswitcher.ol-forceopen.ol-collapsed .ol-switcherbottomdiv {
display: block;
}
.ol-control.ol-layerswitcher .ol-switchertopdiv,
.ol-control.ol-layerswitcher .ol-switcherbottomdiv {
position: absolute;
top:0;
left:0;
right:0;
height: 45px;
background: #fff;
z-index:2;
opacity:1;
cursor: pointer;
border-top:2px solid transparent;
border-bottom:2px solid #369;
margin:0 2px;
box-sizing: border-box;
}
.ol-control.ol-layerswitcher .ol-switcherbottomdiv {
top: auto;
bottom: 0;
height: 2em;
border-top:2px solid #369;
border-bottom:2px solid transparent;
}
.ol-control.ol-layerswitcher .ol-switchertopdiv:before,
.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before {
content:"";
position: absolute;
left:50%;
top:50%;
border:10px solid transparent;
width:0;
height:0;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
opacity:0.8;
}
.ol-control.ol-layerswitcher .ol-switchertopdiv:hover:before,
.ol-control.ol-layerswitcher .ol-switcherbottomdiv:hover:before {
opacity:1;
}
.ol-control.ol-layerswitcher .ol-switchertopdiv:before {
border-bottom-color: #369;
border-top: 0;
}
.ol-control.ol-layerswitcher .ol-switcherbottomdiv:before {
border-top-color: #369;
border-bottom: 0;
}
.ol-control.ol-layerswitcher .panel-container {
background-color: #fff;
border-radius: 0 0 2px 2px;
clear: both;
display: block; /* display:block to show panel on over */
padding: 0.5em 0.5em 0;
}
.ol-layerswitcher .panel {
list-style: none;
padding: 0;
margin: 0;
overflow: hidden;
font-family: Tahoma,Geneva,sans-serif;
font-size:0.9em;
-webkit-transition: top 0.3s;
transition: top 0.3s;
position: relative;
top:0;
}
.ol-layerswitcher .panel ul {
list-style: none;
padding: 0 0 0 20px;
overflow: hidden;
clear: both;
}
/** Customize checkbox
*/
.ol-layerswitcher input[type="radio"],
.ol-layerswitcher input[type="checkbox"] {
width: 0;
height: 0;
opacity: 0;
position: absolute;
}
.ol-layerswitcher .panel li {
-weblit-transition: -webkit-transform 0.2s linear;
transition: transform 0.2s linear;
clear: both;
display: block;
border:1px solid transparent;
box-sizing: border-box;
}
.ol-layerswitcher .panel li.ol-layer-select {
background-color: rgba(0,60,136,.2);
margin: 0 -.5em;
padding: 0 .5em
}
/* drag and drop */
.ol-layerswitcher .panel li.drag {
opacity: 0.5;
transform:scale(0.8);
-webkit-transform:scale(0.8);
}
.ol-dragover {
background:rgba(51,102,153,0.5);
opacity:0.8;
}
.ol-layerswitcher .panel li.forbidden,
.forbidden .ol-layerswitcher-buttons div,
.forbidden .layerswitcher-opacity div {
background:rgba(255,0,0,0.5);
color:#f00 ;
}
/* cursor management */
.ol-layerswitcher.drag,
.ol-layerswitcher.drag * {
cursor:not-allowed!important;
cursor:no-drop ;
}
.ol-layerswitcher.drag .panel li.dropover,
.ol-layerswitcher.drag .panel li.dropover * {
cursor: pointer ;
cursor: n-resize ;
cursor: ns-resize ;
cursor: grab ;
cursor: grabbing ;
}
.ol-layerswitcher .panel li.dropover {
background: rgba(51, 102, 153, 0.5);
}
.ol-layerswitcher .panel li label {
display: inline-block;
height: 1.4em;
max-width: 12em;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
padding: 0 0 0 1.7em;
position: relative;
}
.ol-layerswitcher .panel li label span {
display: inline-block;
width: 100%;
height: 100%;
overflow: hidden;
text-overflow: ellipsis;
padding-right: .2em;
}
.ol-layerswitcher [type="radio"] + label:before,
.ol-layerswitcher [type="checkbox"] + label:before,
.ol-layerswitcher [type="radio"]:checked + label:after,
.ol-layerswitcher [type="checkbox"]:checked + label:after {
content: '';
position: absolute;
left: 0.1em; top: 0.1em;
width: 1.2em; height: 1.2em;
border: 2px solid #369;
background: #fff;
box-sizing:border-box;
}
.ol-layerswitcher li:has(> div.li-content > .ol-visibility:focus) {
border-color: #369;
box-shadow: inset 0 0 0 1px #369;
}
.ol-layerswitcher [type="radio"] + label:before,
.ol-layerswitcher [type="radio"] + label:after {
border-radius: 50%;
}
.ol-layerswitcher [type="radio"]:checked + label:after {
background: #369 none repeat scroll 0 0;
margin: 0.3em;
width: 0.6em;
height: 0.6em;
}
.ol-layerswitcher [type="checkbox"]:checked + label:after {
background: transparent;
border-width: 0 3px 3px 0;
border-style: solid;
border-color: #369;
width: 0.7em;
height: 1em;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
left: 0.55em;
top: -0.05em;
box-shadow: 1px 0px 1px 1px #fff;
}
.ol-layerswitcher .panel li.ol-layer-hidden {
opacity: 0.6;
}
.ol-layerswitcher.ol-collapsed .panel-container {
display:none;
}
.ol-layerswitcher.ol-forceopen .panel-container {
display:block;
}
.ol-control.ol-layerswitcher .ol-counter {
display: none;
position: absolute;
right: 0.3em;
top: 0;
z-index: 22;
line-height: 1.5em;
text-align: left;
font-size: 0.65em;
}
.ol-control.ol-layerswitcher.ol-counter .ol-counter {
display: block;
}
.ol-control.ol-layer-shop .ol-counter {
transform: translate(50%, -50%);
background: #fff;
line-height: 1.5em;
width: 1.5em;
text-align: center;
border-radius: 50%;
box-shadow: 0.5px 0.5px 2px currentColor;
}
.ol-layerswitcher-image > button,
.ol-layerswitcher > button {
background-color: white;
float: right;
z-index: 10;
position: relative;
font-size: 1.7em;
}
.ol-touch .ol-layerswitcher-image > button,
.ol-touch .ol-layerswitcher > button {
font-size: 2.5em;
}
.ol-layerswitcher-image > button:before,
.ol-layerswitcher-image > button:after,
.ol-layerswitcher > button:before,
.ol-layerswitcher > button:after {
content: "";
position:absolute;
width: .75em;
height: .75em;
-webkit-border-radius: 0.15em;
border-radius: 0.15em;
-webkit-transform: scaleY(.8) rotate(45deg);
-ms-transform: scaleY(.8) rotate(45deg);
transform: scaleY(.8) rotate(45deg);
}
.ol-layerswitcher-image > button:before,
.ol-layerswitcher > button:before {
background: #e2e4e1;
top: .32em;
left: .34em;
-webkit-box-shadow: 0.1em 0.1em #325158;
box-shadow: 0.1em 0.1em #325158;
}
.ol-layerswitcher-image > button:after,
.ol-layerswitcher > button:after {
top: .22em;
left: .34em;
background: #83bcc5;
background-image: -webkit-radial-gradient( .85em .6em, circle, #70b3be 0, #70b3be .65em, #83bcc5 .65em);
background-image: -o-radial-gradient( .85em .6em, circle, #70b3be 0, #70b3be .65em, #83bcc5 .65em);
background-image: radial-gradient( circle at .85em .6em, #70b3be 0, #70b3be .65em, #83bcc5 .65em);
}
.ol-layerswitcher-buttons {
display:block;
float: right;
text-align:right;
}
.ol-layerswitcher-buttons > div {
display: inline-block;
position: relative;
cursor: pointer;
height:1em;
width:1em;
margin:2px;
line-height: 1em;
text-align: center;
background: #369;
vertical-align: middle;
color: #fff;
}
.ol-layerswitcher .panel li > div {
display: inline-block;
position: relative;
}
/* line break */
.ol-layerswitcher .ol-separator {
display:block;
width:0;
height:0;
padding:0;
margin:0;
}
.ol-layerswitcher .layerup {
float: right;
height:2.5em;
background-color: #369;
opacity: 0.5;
cursor: move;
cursor: ns-resize;
}
.ol-layerswitcher .layerup:before,
.ol-layerswitcher .layerup:after {
border-color: #fff transparent;
border-style: solid;
border-width: 0.4em 0.4em 0;
content: "";
height: 0;
position: absolute;
bottom: 3px;
left: 0.1em;
width: 0;
}
.ol-layerswitcher .layerup:after {
border-width: 0 0.4em 0.4em;
top:3px;
bottom: auto;
}
.ol-layerswitcher .layerInfo {
background: #369;
border-radius: 100%;
}
.ol-layerswitcher .layerInfo:before {
color: #fff;
content: "i";
display: block;
font-size: 0.8em;
font-weight: bold;
text-align: center;
width: 1.25em;
position:absolute;
left: 0;
top: 0;
}
.ol-layerswitcher .layerTrash {
background: #369;
}
.ol-layerswitcher .layerTrash:before {
color: #fff;
content: "\00d7";
font-size:1em;
top: 50%;
left: 0;
right: 0;
text-align: center;
line-height: 1em;
margin: -0.5em 0;
position: absolute;
}
.ol-layerswitcher .layerExtent {
background: #369;
}
.ol-layerswitcher .layerExtent:before {
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
content: "";
display: block;
position: absolute;
left: 6px;
right: 2px;
top: 6px;
bottom: 3px;
}
.ol-layerswitcher .layerExtent:after {
border-left: 1px solid #fff;
border-top: 1px solid #fff;
content: "";
display: block;
position: absolute;
bottom: 6px;
left: 2px;
right: 6px;
top: 3px;
}
.ol-layerswitcher .expend-layers,
.ol-layerswitcher .collapse-layers {
margin: 0 2px;
background-color: transparent;
}
.ol-layerswitcher .expend-layers:before,
.ol-layerswitcher .collapse-layers:before {
content:"";
position:absolute;
top:50%;
left:0;
margin-top:-2px;
height:4px;
width:100%;
background:#369;
}
.ol-layerswitcher .expend-layers:after {
content:"";
position:absolute;
left:50%;
top:0;
margin-left:-2px;
width:4px;
height:100%;
background:#369;
}
/*
.ol-layerswitcher .collapse-layers:before {
content:"";
position:absolute;
border:0.5em solid #369;
border-color: #369 transparent transparent;
margin-top:0.25em;
}
.ol-layerswitcher .expend-layers:before {
content:"";
position:absolute;
border:0.5em solid #369;
border-color: transparent transparent transparent #369 ;
margin-left:0.25em;
}
*/
.ol-layerswitcher .layerswitcher-opacity {
position:relative;
border: 1px solid #369;
height: 3px;
width: 120px;
margin:5px 1em 10px 7px;
box-sizing: border-box;
border-radius: 3px;
background: #69c;
background: -webkit-linear-gradient(left, rgba(0,60,136,0), rgba(0,60,136,0.6));
background: linear-gradient(to right, rgba(0,60,136,0), rgba(0,60,136,0.6));
cursor: pointer;
box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
}
.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor,
.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before {
position: absolute;
width: 20px;
height: 20px;
top: 50%;
left: 50%;
background: rgba(0,60,136,0.5);
border-radius: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
z-index: 1;
}
.ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor:before {
content: "";
position: absolute;
width: 50%;
height: 50%;
}
.ol-touch .ol-layerswitcher .layerswitcher-opacity .layerswitcher-opacity-cursor {
width: 26px;
height: 26px;
}
.ol-layerswitcher .layerswitcher-opacity-label {
display:none;
position: absolute;
right: -2.5em;
bottom: 5px;
font-size: 0.8em;
}
.ol-layerswitcher .layerswitcher-opacity-label::after {
content:"%";
}
.ol-layerswitcher .layerswitcher-progress {
display:block;
margin:-4px 1em 2px 7px;
width: 120px;
}
.ol-layerswitcher .layerswitcher-progress div {
background-color: #369;
height:2px;
display:block;
width:0;
}