Css работает локально, но не применяется после запуска «npm run build» в сборке в приложении реагирования

Я пытаюсь переопределить CSS Muidrawer-paper; он применяется локально после запуска «npm start», но не применяется при запуске пакета сборки.

.css-12i7wg6-MuiPaper-root-MuiDrawer-paper {
    position: absolute !important;
    top: 50px !important;
    outline: 0;
    left: 10px !important;
    max-width: 35px;
    padding-right: 35px !important;
    background: color-mix(in srgb, #D8D8D8, transparent 18%) !important;
}

Мое локальное приложение:

Css работает локально, но не применяется после запуска «npm run build» в сборке в приложении реагирования

После запуска пакета сборки:

Css работает локально, но не применяется после запуска «npm run build» в сборке в приложении реагирования

Почему мой CSS не применяется в пакете сборки?

CSS должен быть одинаковым как в локальном пакете, так и в пакете сборки при запуске приложения реагирования.

Заголовок.js

import * as React from 'react';
import { styled, useTheme } from '@mui/material/styles';
import Box from '@mui/material/Box';
import MuiDrawer from '@mui/material/Drawer';
import MuiAppBar from '@mui/material/AppBar';
import Toolbar from '@mui/material/Toolbar';
import List from '@mui/material/List';
import ListItem from '@mui/material/ListItem';
import ListItemButton from '@mui/material/ListItemButton';
import ListItemIcon from '@mui/material/ListItemIcon';
import ListItemText from '@mui/material/ListItemText';
import Tooltip from '@mui/material/Tooltip';
import HomeIcon from '@mui/icons-material/Home';
import LayersIcon from '@mui/icons-material/Layers';
import  './Header.css';
//comment 
const drawerWidth = 240;

const openedMixin = (theme) => ({
  width: drawerWidth,
  transition: theme.transitions.create('width', {
    easing: theme.transitions.easing.sharp,
    duration: theme.transitions.duration.enteringScreen,
  }),
  overflowX: 'hidden',
});

const closedMixin = (theme) => ({
  transition: theme.transitions.create('width', {
    easing: theme.transitions.easing.sharp,
    duration: theme.transitions.duration.leavingScreen,
  }),
  overflowX: 'hidden',
  width: `calc(${theme.spacing(7)} + 1px)`,
  [theme.breakpoints.up('sm')]: {
    width: `calc(${theme.spacing(8)} + 1px)`,
  },
});

const DrawerHeader = styled('div')(({ theme }) => ({
  display: 'flex',
  alignItems: 'center',
  justifyContent: 'flex-end',
  padding: theme.spacing(0, 1),
  // necessary for content to be below app bar
  ...theme.mixins.toolbar,
}));

const AppBar = styled(MuiAppBar, {
  shouldForwardProp: (prop) => prop !== 'open',
})(({ theme, open }) => ({
  zIndex: theme.zIndex.drawer + 1,
  transition: theme.transitions.create(['width', 'margin'], {
    easing: theme.transitions.easing.sharp,
    duration: theme.transitions.duration.leavingScreen,
  }),
  ...(open && {
    marginLeft: drawerWidth,
    width: `calc(100% - ${drawerWidth}px)`,
    transition: theme.transitions.create(['width', 'margin'], {
      easing: theme.transitions.easing.sharp,
      duration: theme.transitions.duration.enteringScreen,
    }),
  }),
}));

const Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open' })(
  ({ theme, open }) => ({
    width: drawerWidth,
    flexShrink: 0,
    whiteSpace: 'nowrap',
    boxSizing: 'border-box',
    ...(open && {
      ...openedMixin(theme),
      '& .MuiDrawer-paper': openedMixin(theme),
    }),
    ...(!open && {
      ...closedMixin(theme),
      '& .MuiDrawer-paper': closedMixin(theme),
    }),
  }),
);

export default function MiniDrawer() {
  const theme = useTheme();
  const [open, setOpen] = React.useState(false);

  const handleDrawerOpen = (index) => {
    console.info("index",index)
    setOpen(true);
   
  };

  const handleDrawerClose = () => {
    setOpen(false);
  };

  return (
    <Box sx = {{ display: 'flex' }}>
      
      <AppBar position = "fixed" color = "default" >
        <Toolbar variant = "dense">
        </Toolbar>
      </AppBar>
    <Drawer variant = "permanent" open = {open} 
     sx = {{
      "& MuiPaper-root.css-12i7wg6-MuiPaper-root-MuiDrawer-paper": {
        position: "absolute !important",
        minHeight: "fit-content !important",
        top: "50px !important",
         outline: 0, left: "10px !important", width: "35px", padding:" 35px !important", background: "color-mix(in srgb, #D8D8D8, transparent 18%) !important"
      }
    }}
    //  style  = {{position: "absolute !important",top: "50px !important", outline: 0, left: "10px !important", width: "35px", padding:" 35px !important", background: "color-mix(in srgb, #D8D8D8, transparent 18%) !important"}}
    >
       
        <List>
          {[
            "Home",
            "Layers",
           
          ].map((text, index) => (
            <ListItem key = {text} disablePadding sx = {{ display: "block" }}>
              <ListItemButton
                sx = {{
                  minHeight: 48,
                  justifyContent: open ? 'initial' : 'center',
                  px: 2.5,
                }}
              >
                <ListItemIcon
                  sx = {{
                    minWidth: 0,
                    mr: open ? 3 : 'auto',
                    justifyContent: 'center',
                  }}
                >
                  <Tooltip title = "Home">
                 {index === 0 ? <HomeIcon />:null} 
                 </Tooltip>
                 <Tooltip title = "Layers">
                 {index === 1 ? <LayersIcon />:null} 
                 </Tooltip>
          
              
                </ListItemIcon>
                <ListItemText primary = {text} sx = {{ opacity: open ? 1 : 0 }} />
              </ListItemButton>
            </ListItem>
          ))}
        </List>
       
      
      </Drawer>
     
    </Box>
  );
}

Заголовок.css

.css-12i7wg6-MuiPaper-root-MuiDrawer-paper{
    position: absolute !important;
    top: 50px !important;
    outline: 0;
    left: 10px !important;
    max-width: 35px;
    padding-right: 35px !important;
    background:color-mix(in srgb, #D8D8D8, transparent 18%) !important;
}

Приложение.js:

import logo from './logo.svg';
import './App.css';
import Registration from './components/Registration';
import Header from './components/Header';


import Paper from '@mui/material/Paper';

function App() {
  return (
    <div className = "App">
       
      <Header />
      
      <Paper className = 'footer'  sx = {{ position: 'fixed', bottom: 0, left: 0, right: 0,backgroundColor:'rgba(217, 217, 217, 0.6)' }} elevation = {3}>
        
      </Paper>

    </div>
      
    
  );
}

export default App;

Приложение.css:


.App {
  text-align: center;
}

.App-logo {
  height: 40vmin;
  pointer-events: none;
}

Я предполагаю, что это не проблема кода. Если можете, можете ли вы проверить эти вещи и добавить их в вопрос: 1. если вы проверите папку build/, появятся ли там ваши CSS-файлы? Добавьте список файлов, которые там отображаются. 2. Если вы откроете инструменты разработчика, появятся ли App.css и Header.css в ваших источниках/стилях? Видите ли вы какие-либо различия в инструментах разработчика между локальными и сборочными инструментами? (в консоли, в исходниках и т.д.). 3. Можете ли вы показать нам структуру папок вашего проекта, содержимое вашего package.json (всех, если их несколько) и любые другие файлы конфигурации?

Kaia 06.06.2024 02:16
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
1
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы создаете приложение React для производства, пользовательский интерфейс Material меняет все имена классов, а ваш код минимизируется. По этой причине ваши переопределенные стили CSS не применяются, поскольку после создания рабочей сборки такого класса не существует.

Правильный подход к применению настроек в MUI предполагает создание темы и применение ее к корневому компоненту или добавление встроенных классов. Хотя вы можете использовать любой подход, я приведу пример использования встроенных классов, поскольку его будет легче понять, прежде чем полностью углубляться в настройку MUI.

Чтобы изменить стиль компонента бумаги внутри ящика, вам необходимо передать свойство PaperProps элементу ящика. Вот пример того, что вы хотите сделать:

Часть вашего кода Header.js (измененная)

return (
  <Box sx = {{ display: 'flex' }}>
    <AppBar position = "fixed" color = "default" >
      <Toolbar variant = "dense">
      </Toolbar>
    </AppBar>
    <Drawer 
      variant = "permanent" 
      open = {open}
      PaperProps = {{
         sx: {
            position: "absolute !important",
            top: "50px !important",
            outline: 0,
            left: "10px !important",
            maxWidth: "35px",
            paddingRight: "35px !important",
            background: "color-mix(in srgb, #D8D8D8, transparent 18 %) !important"
         }
      }}
    >
      <List>
        {[
          "Home",
          "Layers",
        ].map((text, index) => (
          <ListItem key = {text} disablePadding sx = {{ display: "block" }}>
            <ListItemButton
              sx = {{
                minHeight: 48,
                justifyContent: open ? 'initial' : 'center',
                px: 2.5,
              }}
            >
              <ListItemIcon
                sx = {{
                  minWidth: 0,
                  mr: open ? 3 : 'auto',
                  justifyContent: 'center',
                }}
              >
                <Tooltip title = "Home">
                  {index === 0 ? <HomeIcon /> : null}
                </Tooltip>
                <Tooltip title = "Layers">
                  {index === 1 ? <LayersIcon /> : null}
                </Tooltip>
              </ListItemIcon>
              <ListItemText primary = {text} sx = {{ opacity: open ? 1 : 0 }} />
            </ListItemButton>
          </ListItem>
        ))}
      </List>
    </Drawer>
  </Box>
);

Другие вопросы по теме

Правильный способ повторить тестовую логику в Cypress с динамическим повторным рендерингом DOM
Django, React, Axios возвращают html вместо данных json
Как предварительно настроить базовую анимацию движения кадра в полиморфном компоненте, использующем слот Radix?
Почему PWA на основе реагирования, размещенное в моей службе приложений Azure, случайно начинает возвращать ошибку 500 для ВСЕХ вызовов POST (GET работает нормально)? Исправлено: Перезапустить браузер?
Не могу найти способ сделать условные реквизиты
Есть ли способ визуализировать HTML из строки в React без использования dangerouslySetInnerHTML или пакета React HTML Parser?
Ошибка теста Playwright: реквизиты возвращают разные значения в пользовательском интерфейсе тестирования Playwright и в реальном приложении React в браузере Chrome
TypeScript › Обновление импорта при перемещении файла: включено, не работает в VS Code
Эффект масштабирования при наведении изображения, отображение деталей изображения
React DatePicker не закрывается после выбора даты