| <!DOCTYPE html> |
| <script src="../resources/runner.js"></script> |
| <script src="./resources/utils.js"></script> |
| <style> |
| #root { |
| container-type: size; |
| width: 64px; |
| height: 64px; |
| } |
| #root.name { |
| container-name: root; |
| } |
| </style> |
| <div id=root class=name></div> |
| |
| <!-- Populated with result of `makeContainerQueries(N)` --> |
| <style id=query></style> |
| |
| <script> |
| // Returns `ruleCount` @container rules which all query 'root': |
| // |
| // @container root (width > 1px) { #dependent { } } |
| // @container root (width > 1px) { #dependent { } } |
| // @container root (width > 1px) { #dependent { } } |
| // ... |
| // @container root (width > 1px) { #dependent { } } |
| // } |
| function makeContainerQueries(ruleCount) { |
| let rules = []; |
| for (let i = 0; i < ruleCount; i++) |
| rules.push(`@container root (width > 1px) { #dependent { } }`); |
| return rules.join('\n'); |
| } |
| |
| function setup() { |
| query.textContent = makeContainerQueries(10000); |
| |
| createDOMTree(root, 1 /* siblings */, 1000 /* depth */); |
| let inner = root.querySelector('div:empty'); |
| inner.textContent = 'Test'; |
| inner.setAttribute('id', 'dependent'); |
| inner.parentElement.style.container = 'other / size'; |
| } |
| |
| setup(); |
| |
| PerfTestRunner.measureTime({ |
| description: 'Looking up the same named container many times', |
| run: () => { |
| root.classList.toggle('name'); |
| root.offsetHeight; |
| }, |
| done: () => { |
| root.remove(); |
| } |
| }); |
| |
| </script> |
| </body> |
| </html> |