Я создаю блог с помощью Gatsby, и для простоты у меня есть компонент основного контента и компонент архива публикаций в блоге в качестве второго столбца справа от компонента основного контента. Как настроить таргетинг на компонент архива, чтобы он отображался «нет» при использовании медиазапроса CSS для экранов мобильных устройств?
Например, вот фрагмент layout.js:
const MainLayout = styled.main`
font-family: Roboto, sans-serif;
max-width: 90%;
margin: 0 auto;
display: grid;
grid-template-columns: 3fr 1fr;
grid-gap: 40px;
footer {
padding-bottom: 30px;
a {
color: red;
}
}
`;
const Layout = ({ children }) => (
<StaticQuery
query={graphql`
query SiteTitleQuery {
site {
siteMetadata {
title
}
}
}
`}
render={data => (
<div>
<Header siteTitle={data.site.siteMetadata.title} />
<MainLayout>
<div>{children}</div>
<Archive />
<footer>
© {new Date().getFullYear()} / Built by Michael Henry with
{` `}
<a href="https://www.gatsbyjs.org">Gatsby</a>
</footer>
</MainLayout>
</div>
)}
/>
);
Если я выберу компонент <Archive>
в медиа-запросе следующим образом:
@media only screen and (max-width: 480px) {
Archive {
display: none;
}
}
Ничего не происходит. Если я оберну <Archive>
компонент с <div>
примерно так:
<div className="noMobile">
<Archive />
</div>
@media only screen and (max-width: 480px) {
.noMobile {
display: none;
}
}
Я могу заставить компонент архива исчезнуть, но <footer>
теперь находится вверху страницы в том же столбце справа, в котором находился компонент архива. Я думаю, что это может иметь какое-то отношение к моему макету сетки, но я не могу понять это. Как выбрать макет сетки для изменения в этом медиазапросе, если он находится в стилизованном компоненте (<MainLayout>
)?
Спасибо