Comments (8)
The ponyfill does a one-time check to determine if the browser provides native support for CSS custom properties. If it does, then the default behavior is to do nothing when cssVars()
is called unless:
options.onlylegacy
is set tofalse
options.variables
is used to modify custom property values
Check the docs for details on each option.
from css-vars-ponyfill.
Great! Well done man! Thank you
from css-vars-ponyfill.
Ah, ...and a compatibility question: does the ponyfill also work for Android browser 4.4.2+?
from css-vars-ponyfill.
I haven’t tested it, but It should given that the ponyfill works all the way back to IE9.
Since Android supports multiple browsers, the answer will also depend on which browser you are using. I can run some tests if that would be helpful, but that won’t be until after the weekend.
from css-vars-ponyfill.
Since Android supports multiple browsers
Pardon, I mean: the native Android browser (not chrome).
If you have some page/demo which clearly and visually shows the ponyfill working, I can test for you (I still use an old smartphone for tests).
from css-vars-ponyfill.
The CodePen demo linked in the README is a good test, although I doubt CodePen supports Android 4.4x native browser (non-Chrome) so you’ll have to force the page into “full page” view:
https://codepen.io/jhildenbiddle/full/ZxYJrR/
from css-vars-ponyfill.
...Aaaand... It's not clear to me: should I only declare variables in :root
?
Something like this won't work (by updating --distance via js)?
.slides{
--distance : 0px;
@for $i from 1 through 20{
&[data-current="#{$i}"]{ transform: translate(calc(-100% * (#{$i} - 1) + var(--distance))); }
}
}
UPDATE:
This is not related to the :root thing. I just tested code above (along with the rest of code not pasted here), and I can say that (only) on Edge it won't work. That's because Edge doesn't support var() inside calc() inside a transform (documented bug), but the ponyfill treats Edge like a modern browsers (but i's not Modern: it's Microsoft ;-) ). Thus, you maybe should treat it like a legacy one on these situations.
from css-vars-ponyfill.
From the Features section:
Custom property support is limited to :root declarations
The example CSS you've provided will work in modern browers, but it is not supported by the ponyfill because --distance
is declared within the .slides
class. Adding support for scoped properties to the ponyfill simply isn't practical for reasons explained in #26.
Since you mentioned "updating --distance via js", remember to use the ponyfill and options.variables
to make your changes to ensure they are applied to both modern and legacy browsers. See the docs for details.
Regarding Edge, the ponyfill cannot assume when it is safe to override a browser's native CSS custom property implementation. Fortunately, you can tell the ponyfill when it is appropriate using options.onlyLegacy
and basic browser detection:
cssVars({
// Treat Edge 15/16 as legacy
onlyLegacy: !(/Edge\/1[56]\./i.test(navigator.userAgent))
});
I've added the above example to the options.onlyLegacy
documentation.
Hope this helps.
from css-vars-ponyfill.
Related Issues (20)
- works in IE dev mode, but not prod mode HOT 2
- CSS XHR error HOT 2
- Not working IE11 in Prod Mode HOT 3
- How to switch themes without browser reload using css variables? HOT 1
- v2.4.4 no longer transpiles to pure ECMAScript 5 HOT 1
- `CSS.supports()` doesn't support in IE11, but css-vars-ponyfill insert it into build artifact. HOT 1
- Option to skip formatting CSS HOT 3
- Does this library works for dynamically added CSS? HOT 1
- Am i missing something for use in Angular 10+? HOT 1
- the page's efficiency HOT 1
- Doesn't work with styled-components createGlobalStyle HOT 3
- Can I use it in Nuxtjs? HOT 2
- run onComplete callback too slow HOT 8
- [bug] link set setAttribute disabled not work HOT 1
- HasVarChange has a calculation problem HOT 1
- `fixKeyframes` throws error when using shadow DOM + legacy browsers HOT 1
- IE11 js runs too slowly. Can you use this when packaging webpacks? HOT 1
- map file HOT 1
- cssVars():: CSS parse error: missing '}' HOT 1
- ie 9 10 Use without effect HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from css-vars-ponyfill.