set-resizable
Version:
A small JS library to convert any HTML element into a resizable element.
115 lines (90 loc) • 2.05 kB
CSS
:root{
--resizable-color:blue;
}
.resizable {
display: var(--resizable-display);
position: relative;
min-width: var(--resizable-min-size);
min-height: var(--resizable-min-size);
overflow: visible;
}
.resizable .control {
border-collapse: collapse;
border: 1px solid var(--resizable-color);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.resizable .control .c {
width: 100%;
height: 100%;
}
.resizable .control .c span.info {
color: #fff;
background-color: var(--resizable-color);
padding: 3px;
border-radius: 3px;
position: absolute;
bottom: 15px;
right: 15px;
}
.resizable .control .w:hover,
.resizable .control .e:hover {
cursor: ew-resize;
}
.resizable .control .s.e:hover,
.resizable .control .n.w:hover {
cursor: nwse-resize;
}
.resizable .control .s:hover,
.resizable .control .n:hover {
cursor: ns-resize;
}
.resizable .control .n.e:hover,
.resizable .control .s.w:hover {
cursor: nesw-resize;
}
.resizable .control td {
padding: 5px;
text-align: center;
}
/* Nodes */
.resizable .control.nodes td::after{
content:"";
display:inline-block;
width: 10px;
height: 10px;
border-radius: 10px;
background-color: var(--resizable-color);
position: absolute;
}
.resizable .control.nodes td.c::after{
display: none;
}
.resizable .control.nodes td.w::after{
margin-left: -10px;
}
.resizable .control.nodes td.n::after{
margin-top: -10px;
}
.resizable .control.nodes td.e::after{
margin-right: -10px;
}
.resizable .control.nodes td.s::after{
margin-bottom: -10px;
}
/* Debug Styles */
/* .resizable .control {
background-color: rgba(0,255,0,0.5);
}
.resizable .control td {
outline: 1px solid red;
}
.resizable .control td:hover {
background-color: blue;
}
.resizable .control td.mc:hover {
background: none;
} */