Git Product home page Git Product logo

Comments (8)

jhildenbiddle avatar jhildenbiddle commented on July 23, 2024 5

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:

  1. options.onlylegacy is set to false
  2. options.variables is used to modify custom property values

Check the docs for details on each option.

from css-vars-ponyfill.

stratboy avatar stratboy commented on July 23, 2024

Great! Well done man! Thank you

from css-vars-ponyfill.

stratboy avatar stratboy commented on July 23, 2024

Ah, ...and a compatibility question: does the ponyfill also work for Android browser 4.4.2+?

from css-vars-ponyfill.

jhildenbiddle avatar jhildenbiddle commented on July 23, 2024

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.

stratboy avatar stratboy commented on July 23, 2024

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.

jhildenbiddle avatar jhildenbiddle commented on July 23, 2024

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.

stratboy avatar stratboy commented on July 23, 2024

...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.

jhildenbiddle avatar jhildenbiddle commented on July 23, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.