В приведенном ниже коде мне нужно скрыть 2nd tag
и связанный с ним контент, как я могу сделать это в Css
<div id="content-list">
<b>Title:</b> some random text <br/>
<b>Title2:</b> some random text 2 <br/>
</div>
С помощью приведенного ниже css я могу скрыть только второй тег b
, но не могу скрыть текст.
div > b:nth-child(1) {
display: none;
}
Примечание. Макет HTML не может быть изменен по разным причинам.
4 ответа
В CSS нет возможности сослаться на текстовый узел. Однако, вероятно, есть некоторые хакерские способы сделать это.
Один из способов сделать это, если макет поддерживает это, состоит в том, чтобы скрыть заголовок и все, что рядом с ним, используя большое отрицательное число для левого поля.
.content-list > b:nth-of-type(2) {
margin-left: -1000000px;
}
<div class="content-list">
<b>Title:</b> some random text <br />
<b>Title 2:</b> some large random text some large random text some large random text some large random text some large random text some large random text some large random text some large random text some large random text some large random text some large random text some large random text some large random text some large random text some large random text <br />
<b>Title 3:</b> some random text <br />
</div>
Как вы можете видеть, если вы запустите фрагмент, есть некоторые проблемы. В основном будет просто пробел как в том месте, где был текст. Кроме того, любой, кто использует программу для чтения текста, по-прежнему будет иметь к ней доступ.
Единственным реальным решением будет либо исправить ваш html, либо использовать JavaScript.
«Я могу скрыть только второй тег b, но не могу скрыть текст» Это потому, что текст "какой-то случайный текст 2" находится за пределами тегов .
или
Поскольку на самом деле вы не можете выбирать текстовые узлы напрямую, одним из обходных путей было бы установить размер шрифта родительского элемента равным 0. Затем сбросить размер шрифта для этих желаемых элементов b. При этом должны отображаться только элементы b, а соседние текстовые узлы должны быть эффективно скрыты.
div {
font-size: 0px
}
div > b:nth-child(1) {
font-size: 16px
}
<div>
<b>Title:</b> some random text <br/>
</div>
Альтернативное решение — изменить исходный HTML-код на что-то более похожее на это, что настоятельно рекомендуется с точки зрения доступности:
#content-list div:nth-child(2) {
display: none;
}
<div id="content-list">
<div>
<h2>Title 1</h2>
<span>some random text</span>
</div>
<div>
<h2>Title 2</h2>
<span>some random text</span>
</div>
<div>
<h2>Title 3</h2>
<span>some random text</span>
</div>
</div>
Похожие вопросы
Новые вопросы
html
HTML (язык гипертекстовой разметки) — это язык разметки для создания веб-страниц и другой информации, отображаемой в веб-браузере. Вопросы относительно HTML должны включать минимальный воспроизводимый пример и некоторое представление о том, чего вы пытаетесь достичь. Этот тег редко используется отдельно и часто в паре с [CSS] и [JavaScript].