#css #reactjs
#css #reactjs
Вопрос:
У меня есть очень простой компонент react
class UpgradeContainer extends Component {
render() {
return (
<div className={styles.msg}>
<div className={styles['msg-container']}>
<h3 className={`${styles.title} highlight-color`}>
Big Header
</h3>
<div className={`${styles.description} alternate-color`}>
Small text
<br />
Some more small text
</div>
</div>
</div>
);
}
Вот соответствующий css
.title {
font-size: 40px;
line-height: 50px;
color: white;
}
.description {
text-align: center;
font-size: 16px;
padding: 20px 0 10px;
color: white;
}
И вот вывод DOM из вышеуказанного компонента
Оно воспроизводится здесь в виде текста:
<div class="mRMOZryRtlFUx_NHlt1WD" data-reactid=".0.1.0.0.0.1">
<h3 class="_2s6iXRZlq-nQwIsDADWnwU highlight-color" data-reactid=".0.1.0.0.0.1.0">
Big Header</h3>
<div class="_1pFak-xR0a8YH6UtvoeloF alternate-color" data-reactid=".0.1.0.0.0.1.1">
<span data-reactid=".0.1.0.0.0.1.1.0">Small text</span>
<br data-reactid=".0.1.0.0.0.1.1.1">
<span data-reactid=".0.1.0.0.0.1.1.2">Some more small text</span></div></div>
Как вы можете видеть, reactjs добавил пару <span/>
для переноса небольшого текста
Я ожидаю, что текст заголовка ( Big Header
) будет намного больше текста описания ( small text
и some more small text
).
Однако результат выглядит примерно так:
Это потому, что reactjs по какой-то причине добавляет интервал для обтекания текста small text
и some more small text
(data-reactid «.0.1.0.0.0.1.1.0» и «.0.1.0.0.0.1.1.2» соответственно)
Когда я проверил стиль, я обнаружил, что стили этих span
элементов переопределяются следующими правилами css
Я действительно озадачен этим, потому что я сам не определял эти правила.
Итак, я нажимаю на <style>...</style>
, и это приводит меня к
Я хочу знать, как я могу эффективно переопределить эти правила css?
Конечный результат, который я хочу, это:
Комментарии:
1. Вы уверены, что эти стили действительно взяты из normalize.css? Глядя на ссылку github на вашем изображении , на самом деле не отображается ни один из этих стилей. Возможно ли, что стили вводятся после стилей normalize.css? Также, на мой взгляд, было бы намного чище, если бы вы не использовали
<br/>
для создания пробела — вместо этого просто используйте два divs, чтобы окружить как первый, так и второй текст блока отображения, и они будут разделены на отдельные строки.
Ответ №1:
-
Если вы используете ‘Normalize.css’!Решением этой проблемы является сохранение вашего основного файла css ‘style.css’ внизу. По крайней мере, ниже normalize.css.
-
В случае, если вы используете Bootstrap, прямо с официального сайта Bootstrap : «Для улучшения кроссбраузерного рендеринга мы используем Normalize.css, проект Николаса Галлахера и Джонатана Нила». Решение этой проблемы — сохранить ваш основной файл css ‘style.css’ внизу. По крайней мере, ниже bootstrap.css.