Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for other CSS attribute constraints #208

Open
taylorzane opened this issue Feb 26, 2016 · 6 comments
Open

Support for other CSS attribute constraints #208

taylorzane opened this issue Feb 26, 2016 · 6 comments

Comments

@taylorzane
Copy link

It is my understanding that GSS does not support this syntax:

#selector {
  myBGC == #f00;

  background-color :== myBGC;
}

#another-selector {
  background-color :== #selector[background-color];
}

I was unable to make this snippet work with any variation of variable declaration, type of color syntax used (i.e. blue, #fff, rgb(1, 2, 3))

Is binding to background-color and other color-related items supported? Or is that something I would have to handle myself manually, or by using another CSS/JS framework?

@qm3ster
Copy link

qm3ster commented May 15, 2016

Only numeric parameters, enumerated in units like px and vw are supported.
The rest can only be assigned directly, like in css.

@tobiasmuehl
Copy link

Support for this syntax can certainly be added since colors can be reduced to numbers. Do you have other scenarios of using this syntax? The one you described can be met with a preprocessor, which can also manipulate the colors like darken($myBGC, 10%)

@qm3ster
Copy link

qm3ster commented Jun 10, 2016

The really GSSish use of this would be to bind things like opacity, colors, transforms and z-positions to various sizes, for responsive animation.

@taylorzane
Copy link
Author

@tobiasmuehl To be completely honest, I've discontinued use of GSS; I can close this issue, or we can leave it open for discussion as this is something I would like to see in the future, should I need to use GSS.

I found that my project didn't need something as advanced to do some simple layout constraints.
So I wouldn't be able to give any other examples. I like what @qm3ster said about binding to other attributes, but it seems difficult to bind a color to a position in certain formats (#fff) because it's ambiguous as to what attribute you want to modify.

My thoughts...using this example:

#foo {
  myBGC == #fff;
  background-color :== myBGC * #selector[top]

}

#selector {
  position: absolute;
  top == 0.5;
  right == 1.0;
  left == 0.0;
}
  1. Do we modify the whole thing?
    • background-color :== myBGC * #selector[top]
      • => #fff * 0.5 == #777
  2. Do we have to pass an array, for each nibble/byte? (This could implicitly spread a single number to all nibbles/bytes.)
    • background-color :== myBGC * #selector[top]
      • => #fff * [0.5, 0.5, 0.5] == #777
    • background-color :== myBGC * [#selector[top], #selector[right], #selector[left]]
      • => #fff * [0.5, 1.0, 0.0] == #7f0

@tobiasmuehl
Copy link

@taylorzane I guess you just went back to normal CSS + preprocessor?

I feel like a constraint system that is based on solely linear algebra operations is unable to really work with colors. Colors come from a different world than layout, and I feel like they should be treated as their own datatype (yes, that's not what I said in the previous post).

Writing something like darken(myBGC, 0.1) is much more expressive than myBGC == myBGC * 0.9. The language can be extended to support those operations (probably not in the same syntax though).

myOtherThing[background-color] :== myBGC darken-by ::window[width] / ::window[height]

@taylorzane
Copy link
Author

Yeah, just using Stylus as a preprocessor for now. I like the idea of using preprocessor-esque syntax for binding two together. There's certainly plenty of gotchas and room for improvement, but this is getting to the right direction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants