Из css в css: Как импортировать css в css

Содержание

React css — компонентый подход

Всем привет. В этом уроке мы разберем как работать с стилями в react.

Если мы посмотрим в index.js файл, то увидим, что там импортируется index.css. То есть в javascript можно импортировать css. Это делается при помощи webpack лоадера, который специальным образом обрабатывает все файлы с расширением .css.

Давайте добавим в index.css у body

background: green;

Как мы видим, в браузере фон поменялся на зеленый. Если мы посмотрим в head нашей страницы, то увидим, что у нас добавился элемент style с стилями внутри. Обратите внимание, что когда мы меняем стили, страница не перегружается. Это происходит потому, что внутри react-create-app настроен hot-reloader, который позволяет многие действия применять без перезагрузки страницы. Это очень удобно, так как позволяет быстро пробовать различные стили и елементы.

Как же мы с вами можем структурировать стили этого проекта?

  1. В index.css пишем глобальные стили
  2. Под каждый компонент пишем стили для каждого компонента отдельно

Давайте попробуем

Создадим App. css и импортируем его в App.js

import './App.css';

Для того, чтобы задать елементу в react класс, используется специальный атрибут className. Например, мы можем в className задать строку container. И эта запись конвертируется в обычный класс в html, который будет искать у нас .container. Если мы напишите атрибут class, то он работать не будет. Это очень часто бывает у людей, которые только начинают знакомиться с реакт.

<div className="container">
  <RegistationForm />
</div>

И добавим стили в файле App.css к классу container.

.container {
  width: 700px;
  border: 1px solid red;
  margin: 0 auto;
}

Как мы видим, я неправильно указал импорт App.css. Нам нужно указать relative путью

Как мы видим в браузере все стили применились, но они глобальные. То есть написав класс container в двух разных файлах и примените к ним стили, мы перетрем стили одного из них.

Ну и напоследок давайте применим какие-то стили к вложенному компоненту RegistationForm. Мы, естественно, не хотим их писать в App.js, поскольку это будет тогда не внутри формы регистрации. Мы хотим ее переиспользовать сразу с стилями. Создаем новый файл RegistationForm.css и добавляем классы к инпуту и к button.

  <input
    type="text"
    placeholder="E-mail"
    value={this.state.email}
    onChange={this.handleEmailChange}
    className="emailField"
  />
  <button className="submitBtn">Save</button>

Импортируем цсс файл к нашей компоненте

import './RegistationForm.css';

Добавляем стили для инпута и кнопки.

.emailField {
  width: 300px;
  height: 40px;
  display: block;
  border-radius: 4px;
  margin-bottom: 10px;
}
.submitBtn {
  width: 300px;
  background: green;
  height: 50px;
  border: 0;
}

Теперь если мы посмотрим в браузер, мы видим, что все наши стили применились. И единственный вопрос, что же будет с стилями для продакшена. Так как у нас все стили находятся в head, и это подойдет не всем. Для продакшена многие люди хотят отдельный файл css в котором все стили минифицированы. Это абсолютно нормально, потому что create-react-app позволяет билдить наш продакшен командой

npm run build

То у вас в папке build/static будет лежать 2 файла css и js. Оба файла минифицированы. У нас также есть файл index.html, в который подключены эти файлы. Все что вам остается после билда — это засунуть эти файлы в проект на сервере.

Про CSS

  • Математические функции в CSS

    Какие функции существуют и для чего они могут быть полезны

  • Адаптивное видео с помощью встроенных математических функций CSS

    Как можно при ресайзе подогнать видео по высоте без дополнительных обёрток и JS?

  • Недоступность в картинках

    Как скринридеры видят сайты и что они могут там не найти, если страница свёрстана плохо

  • Единицы размеров в CSS

    Абсолютные и относительные единицы измерения в CSS: от пикселей до единиц вьюпорта

  • Генератор цветовых тем

    Инструмент расширяет палитры из CSS/SCSS/Less-переменных и может быть полезен для карманных проектов без фиксированного дизайна. Я немного расскажу про историю появления и покажу как его можно использовать.

  • Jekyll → Gatsby

    На днях сайт обновил движок. Последний раз это случалось в 2013-м, и тогда сайт переехал с WordPress на Jekyll, сейчас — с Jekyll на Gatsby. Мои вопросы про Gatsby вызвали довольно оживленную дискуссию в твиттере, поэтому я решила отдельно рассказать про смену движка и опыт с Gatsby.

  • Вариативные шрифты

    Вариативные шрифты — это новая страница в веб-типографике. Они уже достаточно хорошо поддерживаются браузерами, так что можно заняться изучением их возможностей и подготовиться к использованию в реальной жизни.

  • Размеры в SVG

    Управление размерами — тема важная, и чтобы максимально использовать возможности SVG, нужно хорошо понимать как всё работает.

  • Адаптивный Pixel Perfect

    Инструмент для проверки адаптивных страниц на соответствие макетам

  • Логотип не отвечает или временно недоступен

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

  • SVG-паттерны

    pattern — это элемент, который можно использовать в качеcтве заливки или обводки. Содержимое паттерна может быть самым разным: фигуры, символы, текст или растровые изображения — в любых сочетаниях.

  • Мыльные пузыри на SVG

    Пузыри у меня получились почти случайно, когда я экспериментировала с SVG-градиентами.

  • SVG-градиенты

    В SVG не работают привычные CSS-фоны, для заливок здесь есть свои конструкции. Для градиентов это элементы linearGradient и radialGradient — линейный и радиальный градиенты соответственно.

  • Весёлая консолька

    Недавно мне пришлось отлаживать капризный скрипт, в котором явно происходило что-то паранормальное. Чтобы найти проблему, понадобилось вывести в консоль браузера большое количество отладочной информации. Содержимое консоли превратилось в бесконечную колбасу однообразного текста, и с этим надо было что-то делать.

  • SVG-маски

    SVG-маски — это очень богатая тема. В SVG есть два способа обрезать один элемент с помощью другого: это clip-path и mask. Clip-path для обрезки использует только контуры фигур, с масками всё интереснее: в них учитываются и заливки, и обводки, и яркость содержимого.

  • Умная прокрутка со Scroll Snap Points

    В Firefox начиная с 39-й версии появились интересные CSS-свойства, которые позволяют управлять поведением прокручиваемого контента.

  • CSS-анимации для ротации изображений

    В процессе создания демо с анимированными SVG-масками, мне пришлось как следует разобраться с алгоритмами CSS-анимаций. В таких демо используется две анимации: одна для маски, другая для последовательного показа изображений. Меня интересовали варианты алгоритмов для второй анимации.

  • Анимированные SVG-маски

    В прошлой статье я рассматривала странности SVG-обводки, а также возможность сделать анимированные маски. Так как трансформации в масках не анимируются в Firefox (31-я версия на момент написания статьи), я продолжила эксперименты с обводками.

  • Странности обводки в SVG

    Веселые приключения SVG-свойства stroke-width, а также несколько странный способ сделать кроссбраузерную анимацию масок.

  • SVG-прелоадеры

    В поисках что бы ещё такого сделать чтобы ездило, я захотела сделать прелоадеры на SVG. Такие прелоадеры могут быть использованы на любом фоне. Элементы в них могут менять не только прозрачность, но и цвет, обводку или положение в пространстве. Можно придумать огромное количество разных вариантов оформления и анимации.

  • Анимируем градиенты ещё раз

    Предыдущее решение мне всё-таки кажется несколько избыточным, а тут пришел в голову ещё один способ, на этот раз — с псевдоэлементами и opacity.

  • Background-blend-mode

    Режимы смешивания в Firefox 30 или новые приключения CSS-градиентов.

  • Возможности оформления SVG

    Внешний вид SVG-элементам можно задавать как с помощью CSS, так и с помощью SVG-фильтров, градиентов и паттернов — их можно прописывать элементам прямо в коде либо задавать также через CSS. Стили и скрипты можно задавать внутри SVG-файла, но если мы хотим, чтобы одно и то же изображение в разных условиях выглядело по-разному — стили внутри файла не годятся — нужно, чтобы векторное содержимое было доступно для внешних стилей

  • CSS и SVG маски

    Есть несколько способов обрезать элемент по маске. Одни поддерживаются всеми современными браузерами, другие поддерживаются очень плохо, и пользоваться ими ещё нельзя. В некоторых способах маской может быть текст. Используемые технологии — CSS, SVG + CSS, чистый SVG.

  • Nth-child и nth-of-type

    Nth-child — один из моих самых любимых селекторов, потому что с помощью него можно собирать элементы списка в группы произвольной длины и делать с ними разные интересные вещи: от полосатых таблиц до целых разноцветных дизайнов, и все это без необходимости задавать дополнительные классы или как-то менять разметку.

  • SVG-иконки

    SVG-графику удобно использовать для иконок, при этом они не будут выглядеть мыльными на устройствах с ретиной и их можно растягивать без потери качества.

  • SVG: заливка и обводка

    В SVG заливка и обводка имеют много разных интересных опций, которые предоставляют возможности гораздо шире того, что есть в CSS. Например, можно нарисовать SVG-паттерн и использовать его не только в заливке, но и в обводке. Заливке и обводке можно указывать разную прозрачность, также можно управлять пунктирной обводкой, на чем можно построить интересные анимированные эффекты.

  • SVG-path

    Path — более сложный вариант линии. С его помощью можно нарисовать line, polyline, polygon, circle и rect. В отличие от polygon, фигура не замыкается сама по себе, но это можно сделать с помощью дополнительного параметра.

  • SVG: группировка и переиспользование элементов

    SVG-фигуры можно группировать, чтобы удобно структурировать файл. Для этих целей существует несколько тегов: g, defs и symbol. Элементы, группы элементов и символы можно использовать повторно.

  • SVG-фигуры и трансформации

    Писать SVG довольно просто. Используются фигуры: rect, polygon, circle, ellipse, а также line, polyline и path.

  • SVG

    SVG — это формат векторных изображений, основанный на XML. Имеет массу преимуществ перед растровыми изображениями: весит меньше, тянется без потери качества, а так же SVG-картинку можно не только нарисовать, но и написать её код руками

  • СSS-градиенты и 3D

    Сочетание CSS-анимации, трансформаций и градиентов может дать совершенно удивительные результаты. Не уверена, что подобное можно использовать в реальных проектах, но выглядит довольно эффектно.

  • Рисовалка анимированных теней

    Редактор позволяет рисовать разноцветные анимированные узоры из клеточек. Можно управлять скоростью анимации, размером поля, количеством клеточек и кадров.

  • Свежие CSS-паттерны

    Неожиданно увлеклась темой CSS-паттернов и сделала несколько новых. Меня интересовало: можно ли сделать плавные волны и спирали, получится ли имитировать узор из цветной бумаги и как сделать почтовую марку не используя изображения.

  • CSS-паттерны

    Возможности управления фонами через CSS в cочетании с градиентами дают совершенно невероятные возможности. Градиентами можно нарисовать почти всё что угодно от простых клеточек, полосочек и кружочков до достаточно сложных узоров. Играться можно до бесконечности.

  • Радиальные градиенты

    Радиальные градиенты работают иначе, чем линейные. Если цвета линейных располагаются перпендикулярно линии, задающей направление, то в радиальных цвета расходятся от заданного центра, а градиент может принимать форму круга или эллипса.

  • Линейные градиенты

    CSS-градиенты позволяют сделать фон из двух и более цветов, плавно переходящих из одного в другой. Они могут быть использованы везде, где используются картинки: в фонах, в качестве буллетов списков, они могут быть заданы в content или border-image.

  • Крестики-нолики на CSS

    Довольно странный вариант игры, мне хотелось понять как ещё можно сымитировать игровую логику.

  • Border-image

    Border-image — свойство, которое задает фоновое изображение для рамки элемента. Оно позволяет легко делать невероятные штуки, для которых раньше требовалось от 3-х до 8-ми картинок и манипуляции с разметкой.

  • Электронные часы на CSS и JS.

    С познавательно-развлекательной целью сделала электронные часы. Показывают текущее время, меняют цвет, умеют подгоняться под размер окна браузера.

  • Сколько весят селекторы?

    Все CSS-селекторы имеют свой вес, который определяет как взаимодействуют одинаковые свойства, заданные в разных местах кода одному и тому же элементу.

  • Символы юникода

    Полезные символы юникода с кодами для использования в Html и Css.

  • Свойство content

    С помощью CSS на страницу можно добавить элементы, несуществующие в разметке страницы. Это делается с помощью псевдоэлементов :before и :after, но не менее важную роль в этом играет свойство content. Оно определяет содержимое псевдоэлементов. И даже больше, псевдоэлементы не отобразятся, если у них не задано свойство content.

  • Анимируем CSS-градиенты

    Как анимировать градиенты если очень нужно.

  • Текстовые эффекты

    CSS-эффекты на основе text-shadow.

  • Древовидный список на CSS

    Как-то мне потребовалось сделать иерархическое представление структуры проекта, для реализации был выбран CSS.

  • Css-селекторы, часть 2

    Продолжение справочника по селекторам.

  • Css-селекторы

    Справочник по селекторам.

  • Контекст наложения

    Если с помощью z-index изменять порядок наложения элементов друг на друга, в некоторых случаях могут возникать проблемы из-за свойств, создающих новый контекст наложения.

  • Два способа «прошить» элемент по краю

    Есть два способа сделать эффект, как будто элемент прострочили на швейной машинке — используя псевдоэлементы и с помощью outline.

  • Box-sizing

    Свойство box-sizing позволяет указать как ведут себя размеры блока при наличии рамок и полей.

  • Цвета в CSS

    Мне нравится возможность задавать цвета в коде несколькими разными способами, в зависимости от цели использования. Всего таких способов 7.

  • Фон под строчками: добавляем поля

    Проблема: если задать фон строчным элементам, получается вот так…

  • Box-shadow

    Свойство box-shadow позволяет добавить элементам одну или несколько теней.

  • Css-фигуры: лепесток

    Из одного div с помощью border-radius легко можно сделать лепесток.

  • Transform

    CSS-свойство позволяет трансформировать элементы, в том числе в трехмерном пространстве.

  • Css Animation

    Анимация позволяет оживлять элементы страницы. Можно управлять длительностью анимации, повторением, направлением, типом движения и шагами. Анимировать можно любые элементы, в том числе псевдо-элементы.

  • 3D-куб

    Объёмный куб с анимацией на CSS

  • Border-radius

    Border-radius — это свойство для скругления углов.

  • First letter

    :first-letter — это псевдоэлемент, представляющий первый символ в тексте.

  • Эти глаза напротив

    Рисование на CSS с использованием градиентов и border-radius

  • CSS-фигуры

    Фигуры с помощью CSS — тема богатая и интересная. Помимо базовых фигур, используя тени и псевдоэлементы можно сделать много всякого другого, причем некоторые фигуры можно сделать двумя и более способами.

  • Стрелки с помощью свойства border

    С помощью border можно легко делать стрелочки разного размера и в разных направлениях.

  • Flexbox

    Справочник по флексбоксу с живыми демо

  • CSS Урок 2: Как создать свой первый файл CSS

    Сегодня мы напишем и сохраним наш первый файл CSS. Начнем с открытия программы редактирования текста. Если вы работаете на ПК с Microsoft Windows, откройте программу «Блокнот» (удерживайте нажатой клавишу Windows на клавиатуре и нажмите R, затем введите notepad и нажмите Enter). Если вы используете компьютер Macintosh, запустите приложение под названием «TextEdit» (которое можно найти в папке «Приложения»).

    Давайте напишем нашу первую часть CSS

    Давайте представим, что у нас есть простая веб-страница с заголовком, и мы хотим, чтобы заголовок был оранжевым и выровнен по центру. Добавьте следующий код в новый пустой текстовый документ:

     h2 {
    оранжевый цвет;
    выравнивание текста: по центру;
    } 

    Надеюсь, вы помните этот код из нашего предыдущего урока. Задача на сегодня — сохранить наш файл CSS и связать его с HTML-страницей.

    Шаг 1. Сохранение файла CSS

    Создайте новую папку на рабочем столе (или в другом удобном для вас месте) и назовите ее CSS-тест . Теперь, вернувшись в программу редактирования текста, сохраните документ как «style.css».

    Связывание файла CSS с HTML-страницей

    Наш новый файл CSS бесполезен, если мы не применим его к веб-странице. Давайте создадим быструю HTML-страницу для этого урока. Создайте новый пустой файл в Блокноте (или TextEdit) и добавьте следующий код:

     
    
    
    <голова>
    <мета-кодировка="utf-8">
    CSS-тест
    
    <тело>
    
     

    CSS-тест

    <дел>

    Это первая коробка.

    <дел>

    Это поле два.

    Если вы читали несколько моих первых уроков HTML, то этот код вам хоть немного знаком. Я объясню это по мере продолжения урока; пока сохраните этот документ в нашей папке «CSS-Test» и назовите его «index.htm».

    Связывание двух файлов вместе

    Нам все еще нужно указать веб-браузеру загружать наш файл «style.css» при просмотре страницы «index. htm». Добавьте следующий код в index.htm непосредственно над закрывающим тегом:

      

    Эта строка кода сообщает нашему браузеру, что мы хотим связать таблицу стилей, что она находится в той же папке, что и наша HTML-страница, и что она называется «style.css».

    Теперь, когда вы просматриваете страницу «index.htm» в веб-браузере, вы должны увидеть оранжевый заголовок по центру:

    Давайте стилизуем эти два блока

    Если вы посмотрите на код нашей HTML-страницы, вы увидим два элемента

    . Мы добавили HTML-атрибут «id» для этих двух элементов и присвоили им значения «box-one» и «box-two». Мы можем использовать «id» элемента, чтобы выбрать и стилизовать его с помощью CSS. Например, давайте сделаем первую коробку серой, а вторую — желтой. Добавьте следующий код в свой файл CSS, непосредственно под нашим исходным правилом

    :

     #box-one {
    цвет фона: серый;
    }
    
    #коробка-два {
    цвет фона: желтый;
    отступ: 10 пикселей;
    } 

    Когда у элемента есть «id», мы можем получить к нему доступ с помощью селектора CSS, поместив знак решетки (#) перед его значением id. Итак, чтобы выбрать первый элемент

    , мы просто набираем «#box-one», а затем запускаем наше правило CSS.

    Наши новые модные коробки

    Когда вы сохраните файл CSS и обновите нашу HTML-страницу в веб-браузере, вы должны увидеть что-то очень похожее на это:

    Yay For Style

    Возможно, это некрасиво, но мы создали нашу первую HTML-страницу с помощью CSS! Давайте подытожим ваши знания CSS. Вы знаете:

    • Базовый синтаксис CSS (рассмотренный в нашем предыдущем уроке)
    • Как связать файл CSS с HTML-страницей
    • Как выбрать определенные элементы HTML и стилизовать их

    В следующем уроке мы продолжим изучение селекторов CSS и различных способов нацеливания на определенные элементы с помощью вашего CSS.

    Если вы предпочитаете смотреть видеоуроки, а не читать письменные уроки, ознакомьтесь с моим 8-часовым видеокурсом и присоединитесь к более чем 4000 других людей, которые изучили HTML, CSS и адаптивный дизайн на профессиональном уровне.

    Как настроить CSS и модули CSS в webpack

    Первое, что вам нужно настроить в вашем проекте webpack, это CSS. CSS — это , поэтому является фундаментальным для веб-приложения — он нужен почти всем веб-приложениям. Но настроить webpack сложно. И если вы хотите модули CSS и CSS может еще больше запутать. В этой статье я разберу все это для вас.

    В этом посте вы узнаете следующее:

    • Как настроить базовый CSS в проекте webpack с помощью style-loader и css-loader
    • Как извлечь CSS в собственный файл style.css
    • Как настроить модули CSS с помощью веб-пакета
    • Как настроить CSS и модули CSS

    Приступим к настройке CSS. Я предполагаю, что у вас уже есть настроенный проект веб-пакета. Если вы этого не сделаете, зайдите на createapp.dev, чтобы создать свой собственный шаблон веб-пакета.

    Создайте файл CSS и укажите ссылку на него

    Прежде чем настраивать поддержку CSS в настройках веб-пакета, давайте сначала добавим файл CSS и используем его.

    Первое, что мы собираемся сделать, это добавить в проект файл styles.css . Поместим его в папку src .

     корпус {
      белый цвет;
      цвет фона: черный;
    } 

    Этот файл CSS создает черный фон и белый цвет текста. Это дает понять, работает это или нет — если это работает, вся страница будет черной!

    Следующее, что нужно сделать, это импортировать его. Мы сделаем это из файла JavaScript, потому что по умолчанию webpack помещает CSS внутри пакета, что означает, что мы должны ссылаться на него из другого файла JavaScript (мы рассмотрим, как извлечь CSS в отдельный файл позже в этом руководстве). .

    Поместите это в свой файл index.js :

     import "./styles.css" 

    Настройте webpack css-loader и style-loader

    Чтобы иметь возможность использовать CSS в вашем приложении webpack, вам нужно установить новый загрузчик. По умолчанию webpack понимает только Javascript и JSON. С помощью загрузчика вы можете перевести файл другого типа в формат, который понимает и может работать webpack.

    Существует много загрузчиков веб-пакетов, и каждый загрузчик имеет определенную цель. Вам нужны два загрузчика для поддержки CSS в вашем приложении: css-loader и style-loader . Давайте посмотрим, как мы можем настроить css-loader и style-loader в webpack.

    Вы настроили загрузчик с ключевым словом module в вашем webpack.config.js .

    Вот как вы настраиваете CSS в своем модуле

    webpack.config.js :

    : {
        правила: [
          {
            тест: /\.css$/,
            использовать: [
              'загрузчик стилей',
              'css-загрузчик'
            ]
          }
        ]
      } 

    Ключевое слово test указывает веб-пакету, для каких файлов следует использовать этот загрузчик. Ключевое слово use указывает веб-пакету, какие загрузчики следует запускать для этих файлов.

    Как видно из конфига, нужно использовать два загрузчика, style-loader и css-loader . Вам также необходимо установить их как зависимости NPM:

     npm install --save-dev style-loader css-loader 

    Что делают css-loader и style-loader?

    Загрузчики — это просто функции JavaScript: они принимают некоторые данные в качестве входных данных, делают что-то с этими данными и возвращают преобразованную версию данных. Когда вы используете два загрузчика в веб-пакете, он берет вывод первого и отправляет его в качестве ввода второму. В нашем примере он берет файл CSS и прогоняет его через

    css-loader затем он берет выходные данные и запускает их в качестве входных данных для style-loader

    Давайте посмотрим, что делают загрузчики.

    css-loader считывает CSS из файла CSS и возвращает CSS с import и url(...) решенными правильно. Что это значит? Давайте посмотрим на пример. Допустим, у вас есть URL в CSS, ссылающийся на другой ресурс, например изображение:

     . topbanner {
      background: url("topbanner.svg") #00d исправлено отсутствие повторов;
    } 

    В этом примере мы ссылаемся на topbanner.svg из CSS. Когда css-loader видит эту строку, он говорит веб-пакету загрузить этот файл с помощью соответствующего загрузчика. Чтобы это работало, вам также необходимо настроить загрузчик SVG, потому что файл является файлом SVG:

     module: {
      правила: [
        // Загрузчик CSS здесь
        {
          тест: /\.svg$/,
          использовать: "файл-загрузчик",
        },
      ]
    } 

    Для загрузки файлов SVG мы используем загрузчик файлов webpack.

    Если бы вы не настроили css-loader вы получите загадочную ошибку, подобную этой:

     ОШИБКА в ./src/styles.css 1:0
    Ошибка синтаксического анализа модуля: неожиданный токен (1:0)
    Вам может понадобиться соответствующий загрузчик для обработки этого типа файла, в настоящее время загрузчики не настроены для обработки этого файла. См. https://webpack. js.org/concepts#loaders.
    > .topbanner {
    | background: url("zip.svg") #00D - исправлено отсутствие повторов;
    | }
     @ ./src/styles.css 1:14-39
     @ ./src/index.js 

    Вы получите эту ошибку , хотя вы настроили загрузчик для файлов SVG. Избегайте таких странных ошибок, всегда используя css-loader для своей конфигурации CSS.

    Следующим загрузчиком, который вы настроили, был загрузчик стилей . Этот загрузчик добавляет CSS в DOM, чтобы стили были активны и видны на странице. Это необходимо, потому что CSS помещается в файл bundle.js — отдельного файла styles.css нет.

    Можно выводить отдельно styles.css с помощью плагина mini-css-extract-plugin вместо style-loader , как мы делали ранее.

    Первое, что вам нужно сделать, это установить зависимость

     npm install --save-dev mini-css-extract-plugin 

    Затем вам нужно импортировать плагин в верхней части webpack. config.js

     const MiniCssExtractPlugin = require("mini-css-extract-plugin") 

    Далее нужно включить плагин в разделе плагинов вашего webpack.config.js файл:

     плагины: [
      новый MiniCssExtractPlugin(),
    ], 

    И последнее, но не менее важное: вы заменяете style-loader на MiniCssExtractPlugin.loader :

     {
      тест: /\.css$/,
      использовать: [
        MiniCssExtractPlugin.loader, // вместо style-loader
        'css-загрузчик'
      ]
    } 

    Теперь, когда вы запускаете webpack, он выводит файл main.css в папку dist, на которую вы можете ссылаться из вашего index.html файл. (удалите строку import "./styles.css"; строку из index.js , если вы добавили это)

    Теперь, когда вы знаете, как настроить чистый CSS, давайте посмотрим, как настроить модули CSS в webpack.

    Но сначала что такое модули CSS? Из репозитория github:

    «Модуль CSS — это файл CSS, в котором все имена классов и имена анимаций по умолчанию ограничены локально».

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

    На сайте CSS-tricks.com есть хорошее введение в модули CSS, которое будет полезно, если вы хотите узнать больше. В этом посте мы сосредоточимся на том, как его настроить.

    Настройка модулей CSS очень похожа на настройку CSS.

     {
      тест: /\.css$/,
      использовать: [
        'загрузчик стилей',
        {
          загрузчик: 'css-загрузчик',
          параметры: {
            импортЗагрузчики: 1,
            модули: правда
          }
        }
      ]
    } 

    вы все еще используете загрузчик css и загрузчик стилей . Никаких дополнительных зависимостей не требуется. Но разница в настройке CSS заключается в том, что вы добавляете две опции в css-loader .

    Это модули : true указывает css-loader включить модули CSS.

    importLoaders: 1 означает, что он также применяет модули CSS к ресурсам @import ed.

    Одновременное использование как модулей CSS, так и глобального CSS

    Таким образом, чтобы включить модули CSS, нужно передать некоторые параметры в css-загрузчик . Но что, если мы хотим использовать как CSS-модули , так и CSS. Допустим, у вас есть файл layout.css , который является действительно глобальным CSS. Или вы используете сторонний компонент, зависящий от глобального CSS. Это возможно сделать!

    Нам нужно соглашение, чтобы решить, какие файлы являются глобальными CSS, а какие — модулями CSS. Мне нравится использовать модули CSS только для файлов, оканчивающихся на *.module.css , например modal.module.css и все остальные файлы *.css являются глобальными.

    Чтобы настроить это, мы добавим два загрузчика в нашу конфигурацию веб-пакета: один для CSS и один для модулей CSS, и мы будем использовать ключевые слова include и exclude для разделения двух.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *