Bug 178261

Summary: CSS min-width and max-width media features should not round fractional pixel values
Product: WebKit Reporter: Šime Vidas <sime.vidas>
Component: CSSAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: bugzilla, eoconnor, mmaxfield, redux, simon.fraser, webkit-bug-importer, zalan
Priority: P2 Keywords: InRadar
Version: Safari 11   
Hardware: iPhone / iPad   
OS: iOS 11   

Description Šime Vidas 2017-10-13 07:40:20 PDT
These two media queries both evaluate to `true` in the latest Safari on an iPhone 6:

@media (max-width: 374.99px) {
  p::before {
    content: "👍";
  }
}

@media (min-width: 375px) {
  p::after {
    content: "👍";
  }
}

Live demo: https://output.jsbin.com/tafogug/quiet

This doesn’t make sense. The viewport width cannot at the same time be ≤ 374.99px and ≥ 375px. WebKit seems to round the fractional pixel value. Why?

Note that this behavior is preventing the postcss-media-minmax plugin from properly polyfilling “range mode” media queries. See: https://github.com/postcss/postcss-media-minmax/issues/19.
Comment 1 Radar WebKit Bug Importer 2017-10-13 16:03:24 PDT
<rdar://problem/34988263>
Comment 2 Patrick H. Lauke 2017-10-14 07:19:16 PDT
note this may start having impact on bootstrap-based sites when we merge this https://github.com/twbs/bootstrap/pull/24299
Comment 3 Patrick H. Lauke 2018-01-02 03:44:30 PST
Note that Bootstrap 4 now uses fractional viewport values, and yes first reports of incompatibilities are coming in...

https://github.com/twbs/bootstrap/issues/25166

And note the CSS Media Queries 4 spec includes the fractional viewport advice https://github.com/w3c/csswg-drafts/pull/1083