<div class="container">
<div id="zoom-div">
a div
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.2.26/rx.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.2.26/rx.async.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.2.26/rx.coincidence.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.2.26/rx.binding.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.2.26/rx.time.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs-dom/2.0.7/rx.dom.js"></script>
.container div {
background: burlywood;
display: inline-block;
width: 100px;
height: 200px;
border: 1px solid aquamarine;
transform-origin: top left;
transition: all 300ms linear;
}
let zoom = 1.0;
const dbclick = () => {
if (zoom > 2.5) {
return;
}
zoom = zoom + 0.1;
document.getElementById("zoom-div").style["transform"] = `scale(${zoom})`;
};
const triclick = () => {
if (zoom <= 0.5) {
return;
}
zoom = zoom - 0.1;
document.getElementById("zoom-div").style["transform"] = `scale(${zoom})`;
};
const zoomDiv = document.querySelector("#zoom-div");
const clickStream = Rx.Observable.fromEvent(zoomDiv, "click");
const multiClickStream = clickStream
.buffer(() => clickStream.throttle(300))
.map((list) => list.length)
.filter((x) => x >= 2);
multiClickStream.subscribe((clickNums) => {
if (clickNums === 2) {
dbclick();
console.log("双击");
} else {
triclick();
console.log("三连");
}
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.