I created a new Angular 5.2 project using the CLI (e.g. ng new MyApp)
Changing to the folder and running the app works fine. (e.g ng serve)
I made the following changes to the generated code (see below). There are only HTML and CSS code changes, very minor, what I posted is the entirety of the changes.
When I save the code it recompiles, and a warning is thrown:
ErrorEmittedError: (Emitted value instead of an instance of Error) autoprefixer: D:\MyApp\src\app\app.component.css:51:7: Can not find grid areas: header, nav, content, sidebar, ad, footer
The error seems to be related to the media query section of the CSS. If I remove that section the error goes away.
I don't remember this happening in Angular 4.x? Any ideas what's going on?
app.component.html
<div class="wrapper">
<header class="main-head">The header</header>
<nav class="main-nav">
<ul>
<li><a href="">Nav 1</a></li>
<li><a href="">Nav 2</a></li>
<li><a href="">Nav 3</a></li>
</ul>
</nav>
<article class="content">
<h1>Main article area</h1>
<p>In this layout, we display the areas in source order for any screen less that 500 pixels wide. We go to a two column layout, and then to a three column layout by redefining the grid, and the placement of items on the grid.</p>
</article>
<aside class="side">Sidebar</aside>
<div class="ad">Advertising</div>
<footer class="main-footer">The footer</footer>
</div>
app.compnent.css
.main-head {
grid-area: header;
}
.content {
grid-area: content;
}
.main-nav {
grid-area: nav;
}
.side {
grid-area: sidebar;
}
.ad {
grid-area: ad;
}
.main-footer {
grid-area: footer;
}
.wrapper {
display: grid;
grid-gap: 20px;
grid-template-areas:
"header"
"nav"
"content"
"sidebar"
"ad"
"footer";
}
@media (min-width: 700px) {
.wrapper {
grid-template-columns: 1fr 4fr 1fr;
grid-template-areas:
"header header header"
"nav content sidebar"
"nav content ad"
"footer footer footer"
}
nav ul {
flex-direction: column;
}
}
I am having a similar problem and the solution I have found so far isn't a great one since it duplicates code, but it may help you.
First I realize that the error is just a warning and the code complies without a problem however it is worrisome so I added the classes that I defined outside of the @media within the curly braces so with your code it would look something like this:
.main-head {
grid-area: header;
}
.content {
grid-area: content;
}
.main-nav {
grid-area: nav;
}
.side {
grid-area: sidebar;
}
.ad {
grid-area: ad;
}
.main-footer {
grid-area: footer;
}
.wrapper {
display: grid;
grid-gap: 20px;
grid-template-areas:
"header"
"nav"
"content"
"sidebar"
"ad"
"footer";
}
@media (min-width: 700px) {
.wrapper {
grid-template-columns: 1fr 4fr 1fr;
grid-template-areas:
"header header header"
"nav content sidebar"
"nav content ad"
"footer footer footer"
}
nav ul {
flex-direction: column;
}
.main-head {
grid-area: header;
}
.content {
grid-area: content;
}
.main-nav {
grid-area: nav;
}
.side {
grid-area: sidebar;
}
.ad {
grid-area: ad;
}
.main-footer {
grid-area: footer;
}
}
Again I don't like this solution but it gets rid of the error.
If you're using Sass, to not repeat yourself as much, create a partial (_grid-areas.scss) with a mixin:
@mixin grid-areas {
body {
.leftbar { grid-area: leftbar; }
.rightbar { grid-area: rightbar; }
.main { grid-area: main;
header { grid-area: header; }
#content {grid-area: content; }
}
}
}
Then import it as needed:
@import 'grid-areas';
@media screen and (max-width: 80em) {
@include grid-areas;
}
Clears my errors in CLI 1.7.2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With