{"id":1657,"date":"2019-07-25T09:30:00","date_gmt":"2019-07-25T09:30:00","guid":{"rendered":"http:\/\/upmostlymulti.onpressidium.com\/?p=1657"},"modified":"2021-10-28T11:03:19","modified_gmt":"2021-10-28T16:03:19","slug":"changing-the-background-color-in-react","status":"publish","type":"post","link":"http:\/\/upmostly.com\/tutorials\/changing-the-background-color-in-react","title":{"rendered":"Changing the Background Color in React"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1160\" height=\"600\" src=\"http:\/\/upmostly.com\/wp-content\/uploads\/react-background-color.jpg\" alt=\"A web page with a react component's background color changing to purple and blue.\" class=\"wp-image-1669\" srcset=\"https:\/\/upmostly.com\/wp-content\/uploads\/react-background-color.jpg 1160w, https:\/\/upmostly.com\/wp-content\/uploads\/react-background-color-300x155.jpg 300w, https:\/\/upmostly.com\/wp-content\/uploads\/react-background-color-768x397.jpg 768w, https:\/\/upmostly.com\/wp-content\/uploads\/react-background-color-1024x530.jpg 1024w\" sizes=\"auto, (max-width: 1160px) 100vw, 1160px\" \/><\/figure>\n\n\n\n<p>There are various ways of changing the background color of a React component, two of which we&#8217;ll explore: importing a CSS file and using inline styles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Background Color from an External CSS File<\/h2>\n\n\n\n<p>Let&#8217;s begin with what I consider to be the easiest method: importing a CSS file into the component. I think it&#8217;s the easiest because it&#8217;s the most familiar method if you&#8217;ve developed websites before using HTML and CSS.<\/p>\n\n\n\n<p>If you&#8217;ve ever worked with HTML and CSS before, you&#8217;ll recognize the following code. It demonstrates how to link an external CSS file to an HTML page:<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">Linking an External CSS File in HTML<\/div><pre class=\"language-html\"><code class=\"language-html\"><div><span class=\"token doctype\">&lt;!DOCTYPE html><\/span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>html<\/span> <span class=\"token attr-name\">lang<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>en-US<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">><\/span><\/span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>head<\/span><span class=\"token punctuation\">><\/span><\/span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>meta<\/span> <span class=\"token attr-name\">charset<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>UTF-8<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">><\/span><\/span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>title<\/span><span class=\"token punctuation\">><\/span><\/span>Test<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>title<\/span><span class=\"token punctuation\">><\/span><\/span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>link<\/span> <span class=\"token attr-name\">rel<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>stylesheet<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">type<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>text\/css<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">href<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>styles.css<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/><\/span><\/span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>head<\/span><span class=\"token punctuation\">><\/span><\/span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>body<\/span><span class=\"token punctuation\">><\/span><\/span>\n  ...\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>body<\/span><span class=\"token punctuation\">><\/span><\/span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>html<\/span><span class=\"token punctuation\">><\/span><\/span><\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>Linking an external CSS file is very different in the React world. That&#8217;s because JavaScript ties all of the web <em>pages<\/em>, or components together rather than simple HTML.<\/p>\n\n\n\n<p>Therefore, we&#8217;re required to <strong><em>import<\/em><\/strong> an external CSS file into the JavaScript file for that component, like so:<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">Importing an External CSS File in React<\/div><pre class=\"language-jsx\"><code class=\"language-jsx\"><div><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">import<\/span> <span class=\"token string\">'.\/App.css'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">className<\/span><span class=\"token attr-value\"><span class=\"token punctuation\">=<\/span><span class=\"token punctuation\">\"<\/span>my-component<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/><\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span>\n<\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>There are a few slight differences in how we name CSS files and how we use classes in React that are demonstrated in the code above:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>It&#8217;s a good convention for the CSS file to use the same name as the component (<strong><span class=\"has-inline-color has-vivid-red-color\">App.css<\/span><\/strong> and <strong><span class=\"has-inline-color has-vivid-red-color\">App.js<\/span><\/strong>)<\/li><li>The <strong><em>div<\/em><\/strong> element uses the <strong><em>className<\/em><\/strong> keyword, instead of <strong><em>class<\/em><\/strong><\/li><\/ul>\n\n\n\n<p>CSS is written exactly how you&#8217;ve written it before. There are no differences here!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Using Inline Styles<\/h2>\n\n\n\n<p>The next approach to changing the background color in React is to write all of the CSS styles <em>inline<\/em>. <\/p>\n\n\n\n<p>Ironically, this was <strong><span style=\"text-decoration: underline;\">not<\/span><\/strong> a good approach for many years, with developers favoring the external CSS file method for ease of use and readability.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>In recent years, there has been a resurgence of writing inline styles, or<em> CSS-in-JS<\/em>, due to its flexibility and control. CSS-in-JS gives us the power to write <strong><em>conditional<\/em><\/strong> styles (which we&#8217;ll cover towards the end of this tutorial!)<\/p><\/blockquote>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">Inline CSS Styles<\/div><pre class=\"language-jsx\"><code class=\"language-jsx\"><div><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span>\n      <span class=\"token attr-name\">style<\/span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">{<\/span>\n        backgroundColor<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'blue'<\/span><span class=\"token punctuation\">,<\/span>\n        width<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'100px'<\/span><span class=\"token punctuation\">,<\/span>\n        height<span class=\"token punctuation\">:<\/span> <span class=\"token string\">'100px'<\/span>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><\/span>\n    <span class=\"token punctuation\">\/><\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span><\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>Again, there are some slight differences when writing inline CSS inside of a React component:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>We use <strong><em>camelCase<\/em><\/strong> writing style for CSS properties rather than hyphens between words (or kebab-case as it&#8217;s now known)<\/li><li>For example: <strong><em>background-color<\/em><\/strong> becomes <strong><em>backgroundColor<\/em><\/strong><\/li><li>Each property is passed into an object inside of a prop called <strong><em>style<\/em><\/strong>.<\/li><li>Convention states that each property should be on a new line, for readability purposes.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conditional Changing the Background Color in React<\/h2>\n\n\n\n<p>This isn&#8217;t necessarily a method for changing the background color in a React component as it piggy-backs on inline-styles, but it is incredibly useful to learn.<\/p>\n\n\n\n<p>To illustrate, we&#8217;ll use both methods described above:<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">Conditional Change Style using CSS Classes<\/div><pre class=\"language-jsx\"><code class=\"language-jsx\"><div><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">import<\/span> <span class=\"token string\">'.\/App.css'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> isBackgroundRed <span class=\"token operator\">=<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span>\n  \n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span> <span class=\"token attr-name\">className<\/span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=<\/span><span class=\"token punctuation\">{<\/span>isBackgroundRed <span class=\"token operator\">?<\/span> <span class=\"token string\">'background-red'<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token string\">'background-blue'<\/span><span class=\"token punctuation\">}<\/span><\/span> <span class=\"token punctuation\">\/><\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span>\n<\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>JSX allows us to write JavaScript inside of HTML. Therefore, we can write a conditional that passes in the name of a CSS class depending on the value of a variable!<\/p>\n\n\n\n<p>In the example above, we set <strong><em>isBackgroundRed<\/em><\/strong> to true. The inline conditional checks whether <strong><em>isBackgroundRed<\/em><\/strong> is true. If so, the string &#8216;background-red&#8217; is returned, if not, &#8216;background-blue&#8217; is.<\/p>\n\n\n\n<p>As we&#8217;re using an external CSS file, we would need to have those two classes defined inside of it for this to work, like so:<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">App.css<\/div><pre class=\"language-css\"><code class=\"language-css\"><div><span class=\"token selector\">.background-red<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token property\">background-color<\/span><span class=\"token punctuation\">:<\/span> red<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token selector\">.background-blue<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token property\">background-color<\/span><span class=\"token punctuation\">:<\/span> blue<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>Finally, let&#8217;s see how to write an inline conditional using inline styles:<\/p>\n\n\n\n<div class=\"wp-block-cgb-block-codeplus\"><div class=\"upmostly-block better-code-block\"><div class=\"dark\"><div class=\"code-editor-header\">App.js<\/div><pre class=\"language-jsx\"><code class=\"language-jsx\"><div><span class=\"token keyword\">import<\/span> React <span class=\"token keyword\">from<\/span> <span class=\"token string\">'react'<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">App<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n  <span class=\"token keyword\">const<\/span> isBackgroundRed <span class=\"token operator\">=<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span>\n\n  <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>div<\/span>\n      <span class=\"token attr-name\">style<\/span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">{<\/span>\n        backgroundColor<span class=\"token punctuation\">:<\/span> isBackgroundRed <span class=\"token operator\">?<\/span> <span class=\"token string\">'red'<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token string\">'blue'<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><\/span>\n    <span class=\"token punctuation\">\/><\/span><\/span>\n  <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">default<\/span> App<span class=\"token punctuation\">;<\/span><\/div><\/code><\/pre><\/div><\/div><\/div>\n\n\n\n<p>There we have it. An in-depth tutorial on changing the background color! If you enjoyed this tutorial, don&#8217;t forget to sign up to the monthly <a href=\"http:\/\/upmostly.com\/\">Upmostly<\/a> newsletter.<\/p>\n\n\n\n<p>I send out plenty of great tutorials like this one every month! <\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are various ways of changing the background color of a React component, two of which we&#8217;ll explore: importing a CSS file and using inline styles.<\/p>\n","protected":false},"author":8,"featured_media":1669,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[33,4],"class_list":["post-1657","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-beginner-react-tutorials","tag-react"],"acf":[],"_links":{"self":[{"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/posts\/1657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/comments?post=1657"}],"version-history":[{"count":5,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/posts\/1657\/revisions"}],"predecessor-version":[{"id":3635,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/posts\/1657\/revisions\/3635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/media\/1669"}],"wp:attachment":[{"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/media?parent=1657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/categories?post=1657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/upmostly.com\/wp-json\/wp\/v2\/tags?post=1657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}