#javascript #css #reactjs
#javascript #css #reactjs
Вопрос:
Я создаю упрощенное приложение для электронной коммерции для своей работы в React с контекстным API, и все функциональные возможности в JS появляются, и я все это понимаю. Однако у меня есть только базовые знания CSS, и я использую App.css из курса udemy MERN Брэда Траверси. До сих пор это было очень полезно и удобно, но теперь я делаю то, что, кажется, немного выходит за рамки ограничений этого app.css, и немного изменил его для боковых панелей. Боковая панель работает почти идеально, но необходимо исправить небольшую проблему с отображением. Ниже приведены, на мой взгляд, соответствующие фрагменты CSS и react, в частности класс контейнера, который используется в основном app.js чтобы содержать каждый из моих 3 маршрутов (хотя на данный момент меня интересует только /pricequoter route amp; component ).
Скриншот проблемы с отображением: я бы хотел, чтобы боковая панель была выровнена по левой стороне браузера, и чтобы она была полностью скрыта при переключении.
PriceQuoter.js боковая панель выключена
PriceQuoter.js включена боковая панель
Сначала фрагменты реакции
App.js фрагмент
<div className='container'>
<Switch>
<Route exact path='/' component={Home} />
<Route exact path='/about' component={About} />
<Route exact path='/pricequoter' component={PriceQuoter} />
</Switch>
</div>
PriceQuoter.js компонент
<div>
<div className='grid-2'>
<div>
<CartSidebar width={300} height={"100vh"} />
</div>
<div>
<ProductFilter /> <Products />
</div>
</div>
</div>
CartSidebar.js компонент
<div
className='side-bar'
style={{
transform: `translatex(${xPosition}px)`,
width: width,
minHeight: height,
}}
>
(code for text of sidebar here)...
</div>
И соответствующие части app.css для контейнера и класса боковой панели. Я попытался удалить класс контейнера из app.js и это избавляет от текущей проблемы с отображением, но приводит к тому, что правая часть страницы вылетает из браузера и требует прокрутки, а также избавляет от полей с обеих сторон приложения, которые я бы предпочел сохранить.
.container {
max-width: 1100px;
margin: auto;
overflow: hidden;
padding: 0 2rem;
border: 1px;
}
.grid-2 {
display: grid;
grid-template-columns: 10% 90%;
grid-gap: 2rem;
}
.side-bar {
height: 100% !important;
display: flex;
flex-direction: column;
border-right: 1px solid;
border-radius: 0;
border-color: #d3d3d3;
background-color: rgb(255, 255, 255);
transition: 0.8s ease;
}
.toggle-menu {
cursor: pointer;
height: 65px;
border-top-right-radius: 20rem;
border-bottom-right-radius: 20rem;
width: 30px;
position: absolute;
outline: none;
z-index: 1;
background-color: #009ca6;
color: #fff;
}
Ценю любую помощь и дайте мне знать, поможет ли какой-либо другой контекст / информация!
Комментарии:
1. в качестве общего предложения я бы посоветовал не комбинировать css-in-js с файлами css; используйте один или другой, чтобы всем, кто читает код, было ясно, откуда берутся стили
2. Я определенно это понимаю! Я ищу альтернативу app.css для того, что я буду разрабатывать дальше, но это был первый трамплин. На следующей неделе я рассмотрю рефакторинг, чтобы сделать нечетную область, где элементы стиля вводятся непосредственно в js, в классы в app.css. Я также перенастроил большую часть компонента боковой панели из статьи и не был очень уверен в рефакторинге элементов стиля из JS.