Sass styling with React componentsSASS based semantic fluid gridSASS Code Structure / ReadabilitySASS grid system improvementsFirst website written with SASS/SCSSDRYing out my Sass, looping through selectorsSASS + Compass - File Structure and @Import orderStyling different icon positions in boxes with SassAnimated Ticker with JavaScript and Sass CSSSmall React app with multiple componentsApplying CSS styling based on different pages in React
Examples of smooth manifolds admitting inbetween one and a continuum of complex structures
ssTTsSTtRrriinInnnnNNNIiinngg
Method Does Not Exist error message
Im going to France and my passport expires June 19th
Should I tell management that I intend to leave due to bad software development practices?
What exploit Are these user agents trying to use?
One verb to replace 'be a member of' a club
Is it inappropriate for a student to attend their mentor's dissertation defense?
Unlock My Phone! February 2018
Detention in 1997
Expand and Contract
How could indestructible materials be used in power generation?
Plagiarism or not?
Can my sorcerer use a spellbook only to collect spells and scribe scrolls, not cast?
Why was the shrinking from 8″ made only to 5.25″ and not smaller (4″ or less)?
Determining Impedance With An Antenna Analyzer
How much of data wrangling is a data scientist's job?
If human space travel is limited by the G force vulnerability, is there a way to counter G forces?
How do I gain back my faith in my PhD degree?
Bullying boss launched a smear campaign and made me unemployable
Could the museum Saturn V's be refitted for one more flight?
iPad being using in wall mount battery swollen
What are some good books on Machine Learning and AI like Krugman, Wells and Graddy's "Essentials of Economics"
What is a romance in Latin?
Sass styling with React components
SASS based semantic fluid gridSASS Code Structure / ReadabilitySASS grid system improvementsFirst website written with SASS/SCSSDRYing out my Sass, looping through selectorsSASS + Compass - File Structure and @Import orderStyling different icon positions in boxes with SassAnimated Ticker with JavaScript and Sass CSSSmall React app with multiple componentsApplying CSS styling based on different pages in React
$begingroup$
I have put together a piece of what can be a much larger frontend in Reactjs.
I just put together the component that renders to the user a list of airports and hotels as well as a header component.
I feel confident about the JavaScript implementation, but what I would like some feedback is on my use of SCSS. I installed node-sass
and this is how I implemented it.
LocationList.js
:
renderLocation()
const filteredLocations = this.props.locations.filter(location =>
return !location.name.match(/[A-Z0-9]+$/);
);
return filteredLocations.map(location =>
if (location.airport_code)
return (
<div key=location.id>
<div className="location">
<h1>
location.name (location.airport_code)
</h1>
<div className="location-secondary-info">
<span>
<i className="material-icons">airplanemode_active</i>
location.description
</span>
</div>
</div>
</div>
);
else
return (
<div key=location.id>
<div className="location">
<h1>location.name</h1>
<div className="location-secondary-info">
<span>
<i className="material-icons">location_city</i>
location.description
</span>
</div>
</div>
</div>
);
);
render()
return <div className="locations-container">this.renderLocation()</div>;
}
Header.js
:
const Header = () =>
return (
<header className="App-header">
<div>
<div>
<section>
<i className="material-icons">menu</i>
<Link to="/" className="anchor">
Silvercar
</Link>
</section>
<div className="account">
<section>
<aside className="account">
<Link to="/" className="pill anchor">
Sign Up ;
App.scss
:
@import "../variables.scss";
body
font-size: 14px;
.anchor
color: $link-color;
text-decoration: none;
font-weight: 500;
font-size: 0.85em;
text-transform: uppercase;
.App
display: flex;
height: 100vh;
.App-header
border-bottom: 1px solid #eee;
.App-header div
max-width: 1200px;
.App-header div div
padding: 16px 8px;
.App-header div div section
flex: 1 1;
display: flex;
align-items: center;
section i
padding-right: 5px;
.App-header div div section .anchor
flex: 1 1;
.App-header div .account,
.App-header div div
display: flex;
align-items: center;
.help
font-size: 1em;
text-decoration: none;
color: #6a6767;
font-weight: 400;
margin: 0 1em;
white-space: nowrap;
.locations-container
display: flex;
height: 200px;
overflow-y: scroll;
flex-wrap: wrap;
.locations-container div
display: flex;
flex: 1 1 30%;
flex-flow: wrap;
.location
border-left: 2px solid $location-color;
padding: 14px;
margin: 12px 0;
flex: 1 1;
min-width: 275px;
max-width: 355px;
.location h1
padding: 0;
margin: 0;
width: 296px;
font-family: sans-serif;
font-weight: 500;
font-size: 20px;
color: #454545;
text-transform: uppercase;
.location span
font-family: "Roboto", sans-serif;
font-size: 12px;
color: #a3a3a3;
width: 296px;
font-weight: 400;
.location-secondary-info
display: flex;
align-items: center;
.location-secondary-info span i
padding-right: 5px;
.location:hover
background-color: $location-color;
.location:hover h1
color: $hover-color;
.location:hover span
color: $hover-color;
main
display: flex;
flex-flow: column;
flex: 1 1;
.pill
margin: 0 1em;
border-radius: 100px;
border: 1px solid $link-color;
padding: 15px;
variables.scss
:
$location-color: #49aaca;
$link-color: #333;
$hover-color: #fff;
The implementation inside of LocationList.js
was the required task, the SCSS preprocessor is the extra credit. Using latest EcmaScript syntax is also extra credit, which I believe I have done. No duplicating of code is also extra credit, but I feel like my if conditional inside of LocationList
component is duplicating code, but not sure how else that could have been done.
css react.js sass
$endgroup$
add a comment |
$begingroup$
I have put together a piece of what can be a much larger frontend in Reactjs.
I just put together the component that renders to the user a list of airports and hotels as well as a header component.
I feel confident about the JavaScript implementation, but what I would like some feedback is on my use of SCSS. I installed node-sass
and this is how I implemented it.
LocationList.js
:
renderLocation()
const filteredLocations = this.props.locations.filter(location =>
return !location.name.match(/[A-Z0-9]+$/);
);
return filteredLocations.map(location =>
if (location.airport_code)
return (
<div key=location.id>
<div className="location">
<h1>
location.name (location.airport_code)
</h1>
<div className="location-secondary-info">
<span>
<i className="material-icons">airplanemode_active</i>
location.description
</span>
</div>
</div>
</div>
);
else
return (
<div key=location.id>
<div className="location">
<h1>location.name</h1>
<div className="location-secondary-info">
<span>
<i className="material-icons">location_city</i>
location.description
</span>
</div>
</div>
</div>
);
);
render()
return <div className="locations-container">this.renderLocation()</div>;
}
Header.js
:
const Header = () =>
return (
<header className="App-header">
<div>
<div>
<section>
<i className="material-icons">menu</i>
<Link to="/" className="anchor">
Silvercar
</Link>
</section>
<div className="account">
<section>
<aside className="account">
<Link to="/" className="pill anchor">
Sign Up ;
App.scss
:
@import "../variables.scss";
body
font-size: 14px;
.anchor
color: $link-color;
text-decoration: none;
font-weight: 500;
font-size: 0.85em;
text-transform: uppercase;
.App
display: flex;
height: 100vh;
.App-header
border-bottom: 1px solid #eee;
.App-header div
max-width: 1200px;
.App-header div div
padding: 16px 8px;
.App-header div div section
flex: 1 1;
display: flex;
align-items: center;
section i
padding-right: 5px;
.App-header div div section .anchor
flex: 1 1;
.App-header div .account,
.App-header div div
display: flex;
align-items: center;
.help
font-size: 1em;
text-decoration: none;
color: #6a6767;
font-weight: 400;
margin: 0 1em;
white-space: nowrap;
.locations-container
display: flex;
height: 200px;
overflow-y: scroll;
flex-wrap: wrap;
.locations-container div
display: flex;
flex: 1 1 30%;
flex-flow: wrap;
.location
border-left: 2px solid $location-color;
padding: 14px;
margin: 12px 0;
flex: 1 1;
min-width: 275px;
max-width: 355px;
.location h1
padding: 0;
margin: 0;
width: 296px;
font-family: sans-serif;
font-weight: 500;
font-size: 20px;
color: #454545;
text-transform: uppercase;
.location span
font-family: "Roboto", sans-serif;
font-size: 12px;
color: #a3a3a3;
width: 296px;
font-weight: 400;
.location-secondary-info
display: flex;
align-items: center;
.location-secondary-info span i
padding-right: 5px;
.location:hover
background-color: $location-color;
.location:hover h1
color: $hover-color;
.location:hover span
color: $hover-color;
main
display: flex;
flex-flow: column;
flex: 1 1;
.pill
margin: 0 1em;
border-radius: 100px;
border: 1px solid $link-color;
padding: 15px;
variables.scss
:
$location-color: #49aaca;
$link-color: #333;
$hover-color: #fff;
The implementation inside of LocationList.js
was the required task, the SCSS preprocessor is the extra credit. Using latest EcmaScript syntax is also extra credit, which I believe I have done. No duplicating of code is also extra credit, but I feel like my if conditional inside of LocationList
component is duplicating code, but not sure how else that could have been done.
css react.js sass
$endgroup$
add a comment |
$begingroup$
I have put together a piece of what can be a much larger frontend in Reactjs.
I just put together the component that renders to the user a list of airports and hotels as well as a header component.
I feel confident about the JavaScript implementation, but what I would like some feedback is on my use of SCSS. I installed node-sass
and this is how I implemented it.
LocationList.js
:
renderLocation()
const filteredLocations = this.props.locations.filter(location =>
return !location.name.match(/[A-Z0-9]+$/);
);
return filteredLocations.map(location =>
if (location.airport_code)
return (
<div key=location.id>
<div className="location">
<h1>
location.name (location.airport_code)
</h1>
<div className="location-secondary-info">
<span>
<i className="material-icons">airplanemode_active</i>
location.description
</span>
</div>
</div>
</div>
);
else
return (
<div key=location.id>
<div className="location">
<h1>location.name</h1>
<div className="location-secondary-info">
<span>
<i className="material-icons">location_city</i>
location.description
</span>
</div>
</div>
</div>
);
);
render()
return <div className="locations-container">this.renderLocation()</div>;
}
Header.js
:
const Header = () =>
return (
<header className="App-header">
<div>
<div>
<section>
<i className="material-icons">menu</i>
<Link to="/" className="anchor">
Silvercar
</Link>
</section>
<div className="account">
<section>
<aside className="account">
<Link to="/" className="pill anchor">
Sign Up ;
App.scss
:
@import "../variables.scss";
body
font-size: 14px;
.anchor
color: $link-color;
text-decoration: none;
font-weight: 500;
font-size: 0.85em;
text-transform: uppercase;
.App
display: flex;
height: 100vh;
.App-header
border-bottom: 1px solid #eee;
.App-header div
max-width: 1200px;
.App-header div div
padding: 16px 8px;
.App-header div div section
flex: 1 1;
display: flex;
align-items: center;
section i
padding-right: 5px;
.App-header div div section .anchor
flex: 1 1;
.App-header div .account,
.App-header div div
display: flex;
align-items: center;
.help
font-size: 1em;
text-decoration: none;
color: #6a6767;
font-weight: 400;
margin: 0 1em;
white-space: nowrap;
.locations-container
display: flex;
height: 200px;
overflow-y: scroll;
flex-wrap: wrap;
.locations-container div
display: flex;
flex: 1 1 30%;
flex-flow: wrap;
.location
border-left: 2px solid $location-color;
padding: 14px;
margin: 12px 0;
flex: 1 1;
min-width: 275px;
max-width: 355px;
.location h1
padding: 0;
margin: 0;
width: 296px;
font-family: sans-serif;
font-weight: 500;
font-size: 20px;
color: #454545;
text-transform: uppercase;
.location span
font-family: "Roboto", sans-serif;
font-size: 12px;
color: #a3a3a3;
width: 296px;
font-weight: 400;
.location-secondary-info
display: flex;
align-items: center;
.location-secondary-info span i
padding-right: 5px;
.location:hover
background-color: $location-color;
.location:hover h1
color: $hover-color;
.location:hover span
color: $hover-color;
main
display: flex;
flex-flow: column;
flex: 1 1;
.pill
margin: 0 1em;
border-radius: 100px;
border: 1px solid $link-color;
padding: 15px;
variables.scss
:
$location-color: #49aaca;
$link-color: #333;
$hover-color: #fff;
The implementation inside of LocationList.js
was the required task, the SCSS preprocessor is the extra credit. Using latest EcmaScript syntax is also extra credit, which I believe I have done. No duplicating of code is also extra credit, but I feel like my if conditional inside of LocationList
component is duplicating code, but not sure how else that could have been done.
css react.js sass
$endgroup$
I have put together a piece of what can be a much larger frontend in Reactjs.
I just put together the component that renders to the user a list of airports and hotels as well as a header component.
I feel confident about the JavaScript implementation, but what I would like some feedback is on my use of SCSS. I installed node-sass
and this is how I implemented it.
LocationList.js
:
renderLocation()
const filteredLocations = this.props.locations.filter(location =>
return !location.name.match(/[A-Z0-9]+$/);
);
return filteredLocations.map(location =>
if (location.airport_code)
return (
<div key=location.id>
<div className="location">
<h1>
location.name (location.airport_code)
</h1>
<div className="location-secondary-info">
<span>
<i className="material-icons">airplanemode_active</i>
location.description
</span>
</div>
</div>
</div>
);
else
return (
<div key=location.id>
<div className="location">
<h1>location.name</h1>
<div className="location-secondary-info">
<span>
<i className="material-icons">location_city</i>
location.description
</span>
</div>
</div>
</div>
);
);
render()
return <div className="locations-container">this.renderLocation()</div>;
}
Header.js
:
const Header = () =>
return (
<header className="App-header">
<div>
<div>
<section>
<i className="material-icons">menu</i>
<Link to="/" className="anchor">
Silvercar
</Link>
</section>
<div className="account">
<section>
<aside className="account">
<Link to="/" className="pill anchor">
Sign Up ;
App.scss
:
@import "../variables.scss";
body
font-size: 14px;
.anchor
color: $link-color;
text-decoration: none;
font-weight: 500;
font-size: 0.85em;
text-transform: uppercase;
.App
display: flex;
height: 100vh;
.App-header
border-bottom: 1px solid #eee;
.App-header div
max-width: 1200px;
.App-header div div
padding: 16px 8px;
.App-header div div section
flex: 1 1;
display: flex;
align-items: center;
section i
padding-right: 5px;
.App-header div div section .anchor
flex: 1 1;
.App-header div .account,
.App-header div div
display: flex;
align-items: center;
.help
font-size: 1em;
text-decoration: none;
color: #6a6767;
font-weight: 400;
margin: 0 1em;
white-space: nowrap;
.locations-container
display: flex;
height: 200px;
overflow-y: scroll;
flex-wrap: wrap;
.locations-container div
display: flex;
flex: 1 1 30%;
flex-flow: wrap;
.location
border-left: 2px solid $location-color;
padding: 14px;
margin: 12px 0;
flex: 1 1;
min-width: 275px;
max-width: 355px;
.location h1
padding: 0;
margin: 0;
width: 296px;
font-family: sans-serif;
font-weight: 500;
font-size: 20px;
color: #454545;
text-transform: uppercase;
.location span
font-family: "Roboto", sans-serif;
font-size: 12px;
color: #a3a3a3;
width: 296px;
font-weight: 400;
.location-secondary-info
display: flex;
align-items: center;
.location-secondary-info span i
padding-right: 5px;
.location:hover
background-color: $location-color;
.location:hover h1
color: $hover-color;
.location:hover span
color: $hover-color;
main
display: flex;
flex-flow: column;
flex: 1 1;
.pill
margin: 0 1em;
border-radius: 100px;
border: 1px solid $link-color;
padding: 15px;
variables.scss
:
$location-color: #49aaca;
$link-color: #333;
$hover-color: #fff;
The implementation inside of LocationList.js
was the required task, the SCSS preprocessor is the extra credit. Using latest EcmaScript syntax is also extra credit, which I believe I have done. No duplicating of code is also extra credit, but I feel like my if conditional inside of LocationList
component is duplicating code, but not sure how else that could have been done.
css react.js sass
css react.js sass
asked 11 mins ago
DanielDaniel
1214
1214
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216826%2fsass-styling-with-react-components%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216826%2fsass-styling-with-react-components%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown