React-styling: Difference between revisions

From bibbleWiki
Jump to navigation Jump to search
 
Line 116: Line 116:


= CSS Stuff =
= CSS Stuff =
== Selectors ==
You can find information on css on this page [[css]]
=== Simple Selector ===
The body is known as the simple selector and the background-color:#cccc99; is the property name and value
<syntaxhighlight lang="css">
body {
    background-color:#cccc99;
}
</syntaxhighlight>
=== id Selector ===
<syntaxhighlight lang="css">
#myid {
    background-color:#cccc99;
}
</syntaxhighlight>
=== class Selector ===
<syntaxhighlight lang="css">
.myClass {
    font-style:italic;
}
</syntaxhighlight>
 
You can group selector with a comma.
<syntaxhighlight lang="css">
h1,h2 {
    background-color:#cccc99;
}
</syntaxhighlight>
 
=== descendant selector ====
This will only effect the <p> elements below a div tag.
<syntaxhighlight lang="css">
div p {
  background-color:#ddddaa;
}
</syntaxhighlight>
 
=== child selector ====
This will only effect the child and not descendant <p> elements below a div tag.
<syntaxhighlight lang="css">
div > p {
  background-color:#ddddaa;
}
</syntaxhighlight>
 
<syntaxhighlight lang="html">
<div>
  <form>
    <p>I'm a descendant but not a child</p>
  </form>
  <p>I'm a child</p>
</div>
</syntaxhighlight>
 
 
=== attribute selector ====
This will only effect if the attribute matches.
<syntaxhighlight lang="css">
img[alt=spacer] {
  padding:0px;
}
</syntaxhighlight>
<syntaxhighlight lang="html">
<img src="gradient.jpg" alt="spacer">
</syntaxhighlight>
 
=== psuedo selector ====
This will only effect if the pseudo is true.
<syntaxhighlight lang="css">
a:visited {color: #dddddd; }
 
== media ==
== keyframe ==

Latest revision as of 03:28, 30 June 2020

Inline Styling

Example of Inline styling

const styles = {
   color : 'white',
   background: 'blue',
   padding: '0.5rem 1rem',
   borderRadius: '2px' 
}

<button style={styles}>Click me </button>

Advantages

  • Encapsulation
  • Code sharing
  • Isolated
  • Explicit dependencies
  • No library

Disadvantages

  • Cascade, overrides
  • Media queries (Windows sizing)
  • Pseudo selectors (Hoover states etc)
  • Keyframe animations

CSS in JS

Using a library in JS to do this for you. e.g. and the one I know styled-components. Others include emotion, aphrodite, styled-jsx

Example of styled-components

import styled from 'styled-components'

const Button = styled.button `
   color : white;,
   background: blue;
   padding: '0.5rem 1rem;
   borderRadius: 2px;
`

function MyComponent() {
   return (
     <Button>Already styled</Button>
   )
}

Set styles dynamically e.g.

import styled from 'styled-components'

const Button = styled.button `
   color : white;,
   background: ? ${props => props.secondary ? 'gray' : 'blue' };
`

function MyComponent() {
   return (
     <Button>Already styled</Button>
   )
}

Advantages

  • Media Queries
  • Pseudo selectors
  • Keyframe animations
  • Co-located styles and code

Disadvantages

  • Choosing a library
  • Cascade, overrides

CSS Stylesheets

Advantages

  • No new syntax
  • All of CSS
  • Community experience

Disadvantages

  • Global namespace
  • Dependencies
  • Dead code elimination
  • Minification
  • Sharing constants
  • Non-deterministic resolution
  • Isolation

CSS Modules

component-styles.module.css

.button {
   color : white;,
   background: blue;
   padding: 0.5rem 1rem;
   border-radius: 2px;
}

Can we used with react with module bundler .

import * as css from './component-styles.module.css'

function MyComponent() {
   return <button className={css.button}>Click me</button>
}

Advantages

  • Power of CSS
  • Isolated
  • Explicit dependencies

Disadvantages

  • Sharing constants


CSS Stuff

You can find information on css on this page css