123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <title>Resize Detector</title>
- <style>
- *,
- *::before,
- *::after {
- box-sizing: border-box;
- }
- html {
- font-size: 12px;
- color: #999;
- }
- #container {
- width: 600px;
- }
- #pusher {
- float: left;
- width: 100px;
- height: 100px;
- line-height: 100px;
- text-align: center;
- background: #eee;
- cursor: pointer;
- transition: width 2s, background-color .3s;
- }
- #pusher:hover {
- width: 300px;
- }
- :checked + #pusher {
- width: 400px;
- background: #eec;
- }
- #el {
- position: relative;
- overflow: hidden;
- height: 100px;
- background: #9ca;
- line-height: 100px;
- text-align: center;
- color: #fff;
- font-weight: 700;
- }
- #wrapper {
- width: 300px;
- height: 200px;
- transition: width .5s;
- }
- #wrapper.expanded {
- width: 450px;
- }
- #r1,
- #r2 {
- width: 100%;
- height: 100px;
- }
- #r1 {
- background: #acc;
- }
- #r2 {
- background: #cca;
- }
- #output {
- white-space: pre-wrap;
- }
- .log {
- display: inline-block;
- padding: 2px 5px;
- margin: 0 1px 1px 0;
- background-color: #cce;
- }
- </style>
- </head>
- <body>
- <p><label id="attach"><input type="checkbox" checked> Attached</button></label></p>
- <p><label id="display"><input type="checkbox"><code>display: none</code></label></p>
- <div id="container">
- <input id="push" type="checkbox" style="display: none">
- <label id="pusher" for="push">Hover or Click</label>
- <div id="el">→ Resize Detector Enabled ←</div>
- </div>
- <section id="wrapper">
- <div id="r1"></div>
- <div id="r2"></div>
- </section>
- <pre id="output"></pre>
- <script src="../dist/index.js"></script>
- <script>
- var el = document.getElementById('el')
- var container = document.getElementById('container')
- var attach = document.getElementById('attach')
- var wrapper = document.getElementById('wrapper')
- var r1 = document.getElementById('r1')
- var r2 = document.getElementById('r2')
- var display = document.getElementById('display')
- var output = document.getElementById('output')
- function log (msg) {
- output.innerHTML += `<span class="log">${msg}</span>`
- }
- resizeDetector.addListener(el, function () {
- log(el.offsetWidth + '×' + el.offsetHeight)
- })
- attach.addEventListener('change', function () {
- var input = attach.firstElementChild
- if (input.checked) {
- container.appendChild(el)
- } else {
- container.removeChild(el)
- }
- })
- display.addEventListener('change', function () {
- var input = display.firstElementChild
- if (input.checked) {
- el.style.display = 'none'
- } else {
- el.style.display = ''
- }
- })
- wrapper.addEventListener('click', function () {
- wrapper.classList.toggle('expanded')
- })
- resizeDetector.addListener(r1, function () {
- log('r1: resize')
- })
- resizeDetector.addListener(r2, function () {
- log('r2: resize')
- })
- </script>
- </body>
- </html>
|