ref: ca48e9e5646b85bad81bfa9706a7cc221996f9f4
parent: 62eb07e1cb10966e0d7e7a001e615ad26c616160
author: Philip Silva <philip.silva@protonmail.com>
date: Wed Jan 20 18:19:40 EST 2021
css length handling vh, vw
--- a/style/stylesheets.go
+++ b/style/stylesheets.go
@@ -32,6 +32,8 @@
var rMaxWidth = regexp.MustCompile(`max-width: (\d+)px`)
const FontBaseSize = 11.0
+var WindowWidth = 1280
+var WindowHeight = 1080
const AddOnCSS = `
a, span, i, tt, b {@@ -530,13 +532,15 @@
func length(l string) (f float64, unit string, err error) {var s string
- if l == "auto" {+ if l == "auto" || l == "inherit" {return 0, "px", nil
}
- for _, suffix := range []string{"px", "%", "rem", "em"} {+ for _, suffix := range []string{"px", "%", "rem", "em", "vw", "vh"} { if strings.HasSuffix(l, suffix) {- s = strings.TrimSuffix(l, suffix)
+ if s = strings.TrimSuffix(l, suffix); s != "" {+ f, err = strconv.ParseFloat(s, 64)
+ }
unit = suffix
break
}
@@ -543,14 +547,17 @@
}
switch unit {- case "":
- return f, unit, fmt.Errorf("unknown suffix: %v", l)- case "px", "em":
- f, err = strconv.ParseFloat(s, 64)
- }
-
- if unit == "em" {+ case "px":
+ case "em":
f *= FontBaseSize
+ case "vw":
+ f *= float64(WindowWidth) / 100.0
+ case "vh":
+ f *= float64(WindowHeight) / 100.0
+ case "%", "rem":
+ f = 0
+ default:
+ return f, unit, fmt.Errorf("unknown suffix: %v", l)}
f = float64(dui.Scale(int(f)))
--
⑨