- From: Oliver Williams via GitHub <sysbot+gh@w3.org>
- Date: Tue, 29 Jan 2019 13:07:13 +0000
- To: public-css-archive@w3.org
> `<style scoped>` affects the entire subtree and technically who wants to emulate this behavior could just use a unique id to scope styles to a subtree.
This is not the case. There are differences.
Obviously you can not reuse an id select. I will use a class instead in my example.
To take a React example:
```
const Profilecard = (props) => {
 
 const styles = `
 div {background-color: ${props.bgColor}}
 h2 { color: white; }
 img  { 
  border-radius: 50%;
  height: 80px;
  width: 80px;
 }`
 return (
  <div className="card">
   <style scoped>{styles}</style>
    <h2>{props.name}</h2>
    <img src="man3.jpg" alt=""/>
   </div>
 );
};
```
Here you could pass different props e.g. <Profilecard bgColor="blue"> would have a blue background and  <Profilecard bgColor="red"> would have a red background.
Whereas with just using a class, styles will override each other: 
```
const Profilecard = (props) => {
 
 const styles = `
 .card {background-color: ${props.bgColor}}
 .card h2 { color: white; }
 .card img  { 
  border-radius: 50%;
  height: 80px;
  width: 80px;
 }`
 return (
  <div className="card">
   <style>{styles}</style>
    <h2>{props.name}</h2>
    <img src="man3.jpg" alt=""/>
   </div>
 );
};
```
 <Profilecard bgColor="blue"> and  <Profilecard bgColor="red"> would both be red (or blue - depending on the order).
This API doesn't just account for scoping. It also accounts for two other things that have made CSS-in-JS popular: 
- the lack of needing to name things
- being able to write CSS inside a Javascript file 
See https://github.com/facebook/create-react-app/issues/5224
-- 
GitHub Notification of comment by o-t-w
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/3547#issuecomment-458532843 using your GitHub account
Received on Tuesday, 29 January 2019 13:07:14 UTC