scrollbars-ref.html (3619B)
1 <!DOCTYPE html> 2 <head> 3 4 <script src="support/scrollbars.js"></script> 5 6 <style> 7 .horizontal-header { 8 width: 120px; 9 } 10 .vertical-header { 11 width: 60px; 12 } 13 .container-row { 14 display: flex; 15 flex-direction: row; 16 align-items: flex-start; 17 justify-content: flex-start; 18 } 19 .container { 20 flex: none; 21 margin: 5px; 22 } 23 .ltr { 24 direction: ltr; 25 } 26 .rtl { 27 direction: rtl; 28 } 29 .horizontal { 30 writing-mode: horizontal-tb; 31 } 32 .flipped-blocks { 33 writing-mode: vertical-rl; 34 } 35 .flipped-lines { 36 writing-mode: vertical-lr; 37 } 38 .flex { 39 border: 2px solid red; 40 overflow: scroll; 41 max-width: 100px; 42 max-height: 100px; 43 white-space: nowrap; 44 } 45 .row > div, .row-reverse > div { 46 display: inline-flex; 47 margin: 3px; 48 } 49 .column > div, .column-reverse > div { 50 display: flex; 51 margin: 3px; 52 } 53 54 /* Adjust margins to account for collapsing. */ 55 .horizontal > .column > .leaf1, .horizontal > .column > .leaf2 { 56 margin: 3px 3px 6px 3px; 57 } 58 .flipped-blocks > .column > .leaf1, .flipped-blocks > .column > .leaf2 { 59 margin: 3px 3px 3px 6px; 60 } 61 .flipped-lines > .column > .leaf1, .flipped-lines > .column > .leaf2 { 62 margin: 3px 6px 3px 3px; 63 } 64 65 .horizontal > .column-reverse > .leaf1, .horizontal > .column-reverse > .leaf2 { 66 margin: 6px 3px 3px 3px; 67 } 68 .flipped-blocks > .column-reverse > .leaf1, .flipped-blocks > .column-reverse > .leaf2 { 69 margin: 3px 6px 3px 3px; 70 } 71 .flipped-lines > .column-reverse > .leaf1, .flipped-lines > .column-reverse > .leaf2 { 72 margin: 3px 3px 3px 6px; 73 } 74 75 .flex > div { 76 width: 30px; 77 height: 30px; 78 border: 2px solid blue; 79 flex-direction: column; 80 justify-content: center; 81 } 82 .flex > div > div { 83 font-size: 20px; 84 text-align: center; 85 flex: none; 86 } 87 </style> 88 89 </head> 90 91 <div class="container-row"> 92 <div class="vertical-header ltr horizontal"></div> 93 <div class="horizontal-header ltr horizontal">ltr<br>horizontal-tb</div> 94 <div class="vertical-header ltr flipped-blocks">ltr<br>vertical-rl</div> 95 <div class="vertical-header ltr flipped-blocks">ltr<br>vertical-lr</div> 96 <div class="horizontal-header rtl horizontal">rtl<br>horizontal-tb</div> 97 <div class="vertical-header rtl flipped-blocks">rtl<br>vertical-rl</div> 98 <div class="vertical-header rtl flipped-blocks">rtl<br>vertical-lr</div> 99 </div> 100 101 <script> 102 // Override createContentNode to emulate reverse flow direction. 103 createContentNode = (flexDirection, textDirection, writingMode) => { 104 var flexNode = document.createElement("div"); 105 flexNode.className = "flex " + flexDirection; 106 flexNode.title = "flex-direction: " + flexDirection + "; direction: " + textDirection + "; writing-mode: " + writingMode; 107 for (var i = 1; i < 4; i++) 108 flexNode.appendChild(createLeafNode(flexDirection.endsWith("reverse") ? 4 - i : i)); 109 return flexNode; 110 } 111 112 flexDirections.forEach((flexDirection) => { 113 var containerRow = createContainerRow(flexDirection); 114 document.body.appendChild(containerRow); 115 }); 116 117 // Scroll all flex containers to the emulated beginning of flow. 118 var nodes = document.querySelectorAll(".ltr > .row-reverse"); 119 for (var i = 0; i < nodes.length; i++) { 120 nodes[i].scrollLeft = 10000; 121 nodes[i].scrollTop = 10000; 122 } 123 nodes = document.querySelectorAll(".rtl > .row-reverse"); 124 for (var i = 0; i < nodes.length; i++) { 125 nodes[i].scrollLeft = -10000; 126 nodes[i].scrollTop = -10000; 127 } 128 nodes = document.querySelectorAll(".column-reverse"); 129 for (var i = 0; i < nodes.length; i++) { 130 nodes[i].scrollLeft = 10000; 131 nodes[i].scrollTop = 10000; 132 } 133 nodes = document.querySelectorAll(".flipped-blocks > .column-reverse"); 134 for (var i = 0; i < nodes.length; i++) { 135 nodes[i].scrollLeft = -10000; 136 nodes[i].scrollTop = 0; 137 } 138 </script>