Модули CSS - печать таблицы стилей - как переопределить классы

Как создать таблицу стилей печати, которая может переопределять динамические стили, созданные модулями CSS?

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

<button class="buttons_style_primary-button__3T" type="submit"> Submit</button>

В моей таблице стилей печати у меня есть следующее, которое не имеет никакого эффекта:

@media print {
  button {
    display: none;
  }
}

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

Я также использую React, если здесь есть подход, специфичный для React.

1 ответ

Завелся делать следующее:

Используйте! Важное для глобальных переменных, которым необходимо переопределить локальные значения:

/* app.css */
@media print {
  @page {
    margin: 1cm;
  }

  * {
    color: #000 !important;
  }
}

Поместите переопределения для каждого компонента в style.css для каждого компонента:

/* style.css */
.my-class {
  composes: rounded-corners from 'shared/ui.css';
  margin: 0 0 60px 0;
  background-color: white;
}

@media print {
  .my-class {
    page-break-inside: avoid;
    font-size: 10px;
  }
}

/* my-component.jsx */
import style from './style.css';

const MyComponent = () => {
  return (
    <div className={style.myClass}>
      ....
    </Link>
  );
};

Есть также третий вариант, который я на самом деле не пробовал.

Вы должны иметь возможность применять оба переопределенных имени класса верхнего уровня с вашим локальным именем класса, используя classNames библиотека:

import app from 'app.css';
import styles from './style.ss'
const MyComponent = () => {
  return (
    <div className={classNames(style.local, app.global)}>
      ....
    </Link>
  );
};

(этот третий вариант просто не в моей голове, я не знаю, сработает ли он)

Вместо этого:

@media print {
  .button {
    display: none;
  }
}

Попробуй это:

.button{
  @media print {
    display: none;
  }
}
Другие вопросы по тегам