Webpack не соблюдает порядок импорта

В настоящее время мы работаем с Webpack и React, используя Bootstrap для дизайна и настраиваемый CSS / SASS, который переопределяет некоторые стили начальной загрузки.

На простой HTML-странице мы используем:

<!-- Custom styles for this template -->
<link href = "./../../css/creative.css?v=1.9" rel = "stylesheet">
<!-- Latest compiled and minified CSS -->
<link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/css/bootstrap-select.min.css"> 

Наш стиль переопределяет бутстрап, например наш <hr>

показан тот, который определен в нашем creative.css

hr {
  max-width: 50px;
  border-width: 3px;
  border-color: #F05F40;
}

Однако, когда я перемещаю дизайн в проект с помощью react и webpack, только bootstrap все переопределяет.

Я пытался:

import './css/creative.css'
import './css/bootstrap.css'

А также:

import './css/bootstrap.css'
import './css/creative.css'

Также попытался обернуть app.js в index.js и стилизовать родительский элемент, а затем дочерний элемент следующим образом:

  • index.jsx: import './css/bootstrap.css'

  • app.jsx: import './css/creative.css'

также попробовал другой способ:

  • index.jsx: import './css/creative.css'

  • app.jsx: import './css/bootstrap.css'

Но мой собственный стиль никогда не отменяет стиль начальной загрузки.

Это происходит не только для HR, но, например, мы полностью изменили стиль входных данных формы, но они просто отображаются как начальные по умолчанию.

Вы уверены, что бутстрап не импортируется ни в один другой файл вашего проекта?

CuriousSuperhero 02.05.2018 15:52

@CuriousSuperhero, да, я уверен

Mederic 03.05.2018 06:59
codeandbox.io/s/343r7r9o6m это прекрасно работает. Можете ли вы воспроизвести это на том сайте?
Roy Wang 07.05.2018 11:15

Это зависит от порядка, в котором таблицы стилей были связаны в теге <head> ... </head>. Если вы можете предоставить образец репозитория, я могу помочь вам решить проблему.

Suhas V 08.05.2018 15:46

Скорее всего, вам следует изменить порядок тегов <link /> на странице html. Вы уверены, что ваш собственный стиль, который вы даете, имеет больше возможностей в определении элементов. Вам, вероятно, следует подумать о том, чтобы присвоить вашим элементам имена классов, которые вы хотите стилизовать для себя и указать более точные цели в CSS. например. hr.my-own-class, и ваш стиль победит бутстрапы по умолчанию. Если вы просто объявляете много целей hr, побеждает последний. И этот вопрос, кстати, совершенно не связан с React.

Jimi Pajala 08.05.2018 19:59

@SuhasV Это проект под соглашением о неразглашении, поэтому я не могу раскрыть какой-либо код.

Mederic 09.05.2018 04:51

@JimiPajala Да, я уверен, что мой стиль лучше, чем аттракционы, поскольку у меня более 30 страниц, разработанных в HTML с его использованием, и все они работают нормально.

Mederic 09.05.2018 04:52
Приемы 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 сценарий полностью изменился.
4
7
1 595
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете переопределить bootstrap.css с помощью creative.css, выполнив следующий шаг.

Шаг 1. Установить root id<body id = "bootstrap-overrides">

Шаг 2. Выполните следующие изменения в creative.css. Вам просто нужно установить префикс для любого селектора CSS с вашим идентификатором («bootstrap-overrides»), как показано ниже.

#bootstrap-overrides h1 
{
  margin-top: 10px;
  margin-bottom: 0.5rem;
}

Надеюсь, это решит вашу проблему. Пожалуйста, попробуйте.

Пожалуйста, попробуйте с! Important. Раньше какая-то опечатка с моей стороны

USS 02.05.2018 15:37

Я знаю про !important, но здесь речь не идет о 10 линиях. собственный CSS занимает более нескольких тысяч строк. кроме того, !important не следует использовать

Mederic 03.05.2018 07:00

Это противоположно тому, что я ищу, он спрашивает, как убедиться, что бутстрап перекрывает все остальное.

Mederic 03.05.2018 07:15

@Mederic Я только что обновил свой ответ, и он работает так, как вам нужно. Пожалуйста, проверь это. Я рад, если это сработает для вас.

USS 10.05.2018 13:45

@ Медерик, ты это проверил.

USS 11.05.2018 15:04

Как уже упоминалось, я не могу просто взломать свой способ, переименование более 10 000 строк решения css WildService было намного чище.

Mederic 14.05.2018 04:50
Ответ принят как подходящий

Можете ли вы попробовать импортировать Bootstrap из файла creative.css? Я думаю, что это позволит Webpack правильно определить порядок, тогда как при использовании import в JS для импорта CSS он не определяет строгого порядка.

Например.

index.js

import './css/creative.css'

creative.css

@import url('./bootstrap.css');
...your custom css...

Хорошая идея, я не думал об этом, я полностью попробую и вернусь к вам. Я бы подумал, что пока async в неуказанном JS загрузит его по порядку.

Mederic 09.05.2018 04:49

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