Я не знаю, как расширить цвет фона диапазона, если внутри есть такой текст.
Я хочу, чтобы белый фон с текстом оставался того же размера, что и белый фон с текстом.
Мой CSS
.dashboard-data-field {
display: grid;
grid-auto-flow: row;
align-content: center;
}
.dashboard-data-header {
padding: 4px;
}
.dashboard-data-description {
padding: 8px;
background-color: #fff;
}
Мой JavaScript
<div className="dashboard-data-field">
<span className="dashboard-data-header">ชื่อ-นามสกุล</span>
<span className="dashboard-data-description">{`${auth.user.firstname} ${auth.user.lastname}`}</span>
</div>
Вы можете попробовать два разных решения:
в качестве содержимого элемента html, когда он
должно быть пусто.min-height: 1em;
в правила адресации заголовка и описания. (Я исправил эту часть по сравнению с тем, что я писал ранее)Я выбрал второй вариант здесь, потому что он соответствует произвольно выбранному размеру шрифта css и не требует изменения логики для заполнения содержимого, добавляя непустое пространство, когда оно пусто:
.dashboard-data-field {
display: grid;
grid-auto-flow: row;
align-content: center;
/*the field background is yellow to get contrast with the description bg*/
background-color: yellow;
}
.dashboard-data-header {
display: block;
padding: 4px;
/*this shows the size of the header*/
border: solid 1px red;
/*minimum height is 1em even when the content is empty*/
min-height: 1em;
}
.dashboard-data-description {
display: block;
padding: 8px;
/*this background will cover the parent background*/
background-color: #fff;
/*this shows the size of the header*/
border: solid 1px red;
border-top: none;
/*minimum height is 1em even when the content is empty*/
min-height: 1em;
}
<div class="dashboard-data-field">
<span class="dashboard-data-header">Header with content</span>
<span class="dashboard-data-description">Description with content</span>
</div>
<br>
<div class="dashboard-data-field">
<span class="dashboard-data-header"></span>
<span class="dashboard-data-description"></span>
</div>
Мне нравится стиль  
, который зависит от размера текста, но я боюсь, что выборка данных с пустой строкой заменит диапазон. Спасибо.
Я обновил свой ответ с момента вашего последнего комментария, и я использую минимальную высоту, установленную на 1em. Это означает, что его высота будет равна размеру шрифта для этого элемента.
Дайте фиксированную высоту для охвата того места, где вы хотите показать текст
.dashboard-data-field {
display: grid;
grid-auto-flow: row;
align-content: center;
}
.dashboard-data-header {
padding: 4px;
}
.dashboard-data-description {
padding: 8px;
background-color: red;
height: 40px;
}
const App = () => {
return (
<>
<div className="dashboard-data-field">
<span className="dashboard-data-header">ชื่อ-นามสกุล</span>
<span className="dashboard-data-description">with text</span>
</div>
<div className="dashboard-data-field">
<span className="dashboard-data-header">ชื่อ-นามสกุล</span>
<span className="dashboard-data-description"></span>
</div>
</>
);
};
export default App;
Я думаю, что это более простое решение, но у него фиксированная высота, если я хочу изменить font-size
, я тоже должен изменить width
.
дайте элементу либо
min-height
, либо фиксированныйheight
, который равен или больше, чем высота строки, включая. обивка.