img-novb-width-all-1-ref.html (2048B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <link rel="stylesheet" type="text/css" href="svg-image-util.css" /> 5 <script src="svg-image-util.js"></script> 6 </head> 7 <body style="height: 600px"><!-- height for pct vals to resolve against --> 8 <script> 9 var svgParams = { 10 viewBox: null, // This gets set on a case-by-case basis below. 11 width : "20px", 12 height : "20%", 13 meetOrSlice: null // This means "use pAR=none" 14 }; 15 16 // Descriptions below describe the behavior of the rows of <img> elements 17 // in the corresponding test cases, which we mimic with specially-crafted 18 // <embed> elements. 19 20 // * FIRST TWO ROWS: <img> has width=auto height=auto 21 // - Each <img> renders w/ height = 150px (default) 22 // - Synthesized viewBox has height = 20% * viewport_height = .2*150 = 30 23 // - <img> & viewBox both get width=20px, from <svg> width attr 24 svgParams.viewBox = [0, 0, 20, 30], 25 appendSVGSubArrayWithParams(svgParams, "embed", "20px", "150px"); 26 27 // * SECOND TWO ROWS: <img> has width=auto, height=20px 28 // - <img> now renders w/ height = 20px (imposed by <img> height attr) 29 // - Synthesized viewBox has height = 20% * viewport_width = .2*20 = 4 30 // - <img> & viewBox both get width=20px, from <svg> width attr 31 svgParams.viewBox = [0, 0, 20, 4], 32 appendSVGSubArrayWithParams(svgParams, "embed", "20px", "20px"); 33 34 // * THIRD TWO ROWS: <img> has width=30px height=auto 35 // Calculations are as with "FIRST TWO ROWS", except <img> now imposes 36 // width="30px". 37 svgParams.viewBox = [0, 0, 20, 30], 38 appendSVGSubArrayWithParams(svgParams, "embed", "30px", "150px"); 39 40 // * FOURTH TWO ROWS: <img> has width=30px height=20px 41 // Calculations are as with "SECOND TWO ROWS", except <img> now imposes 42 // width="30px". 43 svgParams.viewBox = [0, 0, 20, 4], 44 appendSVGSubArrayWithParams(svgParams, "embed", "30px", "20px"); 45 46 </script> 47 <!-- Body gets populated by script --> 48 </body> 49 </html>