Класс CSS исчез без предупреждения, куда он делся?

У меня есть пример таблицы, взятый из https://element-plus.org/en-US/comComponent/table.html#table-with-status

Я хотел бы придать цвет некоторым строкам.

Вот минимальный рабочий пример:

<script setup lang = "ts">
type TableRec = {
    code: string
    from_title: string | null
    to_title: string | null
    from_title_short: string | null
    to_title_short: string | null
}

const tableData : TableRec[] = [
  {code:"code01", from_title: "value1", from_title_short: "value1", to_title:null, to_title_short:null},
  {code:"code02", from_title: "value2", from_title_short: "value2", to_title:"not null", to_title_short:"not null"},
  {code:"code03", from_title: "value3", from_title_short: "value3", to_title:null, to_title_short:null},  
]

const rowClassName = ({
  row,
  rowIndex
}: {
  row: TableRec
  rowIndex: number
})  => {
  if (!row.to_title) {
    return "warning-row"
  } else {
    return "success"
  }
}

</script>

<template>
    <el-table :data = "tableData" :row-class-name = "rowClassName">
        <el-table-column prop = "code" label = "Code" width = "200" />
        <el-table-column prop = "from_title_short" label = "From" />
        <el-table-column prop = "to_title_short" label = "To" />
    </el-table>
</template>

<style>
.el-table .warning-row {
  --el-table-tr-bg-color: var(--el-color-warning-light-9);
}
.el-table .success-row {
  --el-table-tr-bg-color: var(--el-color-success-light-9);
}
</style>

Когда я меняю CSS и сохраняю файл vue, я вижу, что происходит горячая перезагрузка. Запрос выглядит следующим образом:

import {createHotContext as __vite__createHotContext} from "/@vite/client";
import.meta.hot = __vite__createHotContext("/src/components/TranslateCategoryView.vue?vue&type=style&index=0&lang.css");
/* unplugin-vue-components disabled */
import {updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle} from "/@vite/client"
const __vite__id = "/home/user/projects/test/frontend-admin3/src/components/TranslateCategoryView.vue?vue&type=style&index=0&lang.css"
const __vite__css = "\n.el-table .warning-row {\n  --el-table-tr-bg-color: var(--el-color-warning-light-9);\n}\n.el-table .success-row {\n  --el-table-tr-bg-color: var(--el-color-success-light-9);\n}\n"
__vite__updateStyle(__vite__id, __vite__css)
import.meta.hot.accept()
import.meta.hot.prune(()=>__vite__removeStyle(__vite__id))

Никаких сообщений об ошибках или предупреждений не выдается. Я также вижу, что класс warning-row добавлен в <tr>.

Но строки не имеют предупреждающего цвета. Фактически класс «строка предупреждения» не применяется, поскольку его не существует:

То есть он был горячо загружен, но его нет? Я не понимаю, что здесь происходит?

Я также попытался опубликовать этот пример на игровой площадке element plus (https://element-plus.run/). Но, к сожалению, там это работает отлично:

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

Приемы 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 сценарий полностью изменился.
0
0
59
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Прежде всего, убедитесь, что корневой элемент вашей таблицы имеет класс «el-table» для корневого элемента (в вашем примере вместо этого во многих местах используется префикс «ep-table»).

Во-вторых, убедитесь, что к вашим элементам tr применены соответствующие стили для эффективного использования переменной --el-table-tr-bg-color, сама переменная не устанавливает стили:

.el-table tr {
    background-color: var(--el-table-tr-bg-color);
}

Пользовательские свойства (--*): переменные CSS

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

Класс IMG — ep-xxx. Ну вот так:

.ep-table .warning-row {
    --ep-table-tr-bg-color: var(--ep-color-warning-light-9);
}
.ep-table .success-row {
    --ep-table-tr-bg-color: var(--ep-color-success-light-9);
}

Вы устанавливаете el-config-provider namespace = "ep"

jie chen 03.07.2024 11:33

Настоящая проблема заключалась в том, что я использовал <el-config-provider namespace = "ep"> вместо <el-config-provider namespace = "el">. Это настолько сбивает с толку, что теги элементов по-прежнему <el-*, хотя пространство имен ep. Спасибо!

nagylzs 03.07.2024 11:53

где я могу прочитать больше об этих переменных, их именах и значениях? Я пытался выполнить поиск по запросу --ep-color-success-light, но почти все результаты поиска были на китайском языке.

nagylzs 03.07.2024 12:08

Ваше пространство имен - ep. итак, класс el-xxx --> ep-xxx

jie chen 04.07.2024 03:56

См. element-plus.org/en-US/guide/namespace.html для получения дополнительной информации.

jie chen 04.07.2024 04:02

это интересно, стартовый комплект [email protected]:element-plus/element-plus-vite-starter.git (официальный?) поставляется с пространством имен по умолчанию «ep». Кроме того, пакет @iconify-json/ep npm использует имя «ep» и требует IconsResolver({enabledCollections: ['ep'] в vite.config.ts, но пространством имен по умолчанию должно быть el. Я был сбит с толку, потому что начал со стартового комплекта. Спасибо. })

nagylzs 04.07.2024 11:20

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