Hacker News new | ask | show | jobs
by talmand 4960 days ago
I apologize, I fail to see how what you want to do is any different than what you can do today. Almost everything you just said is what I've been saying the whole time. You can create a CSS class in either a external style sheet or in a style section in the head of the document and use javascript to apply that class to any element on the page. Since you are already using CSS selector syntax in javascript to target these elements I really don't see how having something in between that makes it any easier. If I understand what you are saying, you wish to remove the selector part out of CSS and apply it directly to elements as they are used. But, again, that's already there, right now, today, for you to use with no third-party tool with its own syntax/language to get in the way.

All I can see at this point is that you wish to stop using CSS selectors but still use CSS syntax in describing properties of the elements to be styled. As stated in the beginning, you wish to remove CSS for styling and replace it with something else for, styling. That makes no sense. You are already using these very same selectors to target these elements with javascript. Plus the same syntax can be used in any programming language that outputs HTML, just assign class names to the element as they are created.

Since you propose to no longer use CSS syntax nor selectors in styling elements then I require an example of how you propose to handle this with current browsers. I really just don't understand the concept of creating CSS to style elements without using CSS, that's the circular argument you are using.

You say you want a single styling API, that already exists and it's named CSS.

1 comments

>Since you are already using CSS selector syntax in javascript to target these elements I really don't see how having something in between that makes it any easier.

Stop fixating on javascript. Sure, javascript uses the CSS selector syntax. But other languages use other ways of addressing particular page elements, and I don't think the CSS selector syntax is a good way in general.

>Plus the same syntax can be used in any programming language that outputs HTML, just assign class names to the element as they are created.

The same syntax as CSS, which is different from that programming language's natural syntax. Outputting class names adds an extra level of indirection that's just unnecessary. Why not just add the relevant style inline?

>You say you want a single styling API, that already exists and it's named CSS.

A single API, not a single syntax. What I want is two things: 1. A natural way to build up a style declaration programatically in python or java (javascript already has this to a certain extent), not a string in CSS property syntax. 2. A natural way to apply this to some subset of the elements on my page, which I identify using whatever tools my programming language has (which in javascript might be CSS selectors, but in general won't be).

Now you're right that the second half is almost-possible. I can use my language to put class attributes on those elements I want to style, and then have a CSS file (or rather, a CSS-preprocessor file) that only ever uses these classes as selectors. As long as I keep the class names unique that works and it keeps the CSS comprehensible.

But I've still got two separate programs in different languages that don't need to be separate - my main program generates a mapping from page element to classname, and my CSS-preprocessor program generates a mapping from classname to set of properties[1]. The latter is a task that my primary programming language is perfectly adequate for (and vanilla CSS is not, because it's not powerful enough, hence the need for a preprocessor). So what I want is to have a bit of code that generates an object representing a set of properties (which would "really" be a string in CSS property syntax, sure, I don't care as long as it has a reasonable API for manipulating it in my programming language), and then rather than attaching a classname to the elements I want to style, I attach this style object, which applies it directly inline.

At that point the inline style would still be sent to the browser with CSS property syntax, but there'd be no separate CSS file and no cascading, so I think it's fair to say this would not be using CSS.

[1] A program which happens to be interpreted by the browser (after preprocessing), but conceptually a program nonetheless.