вместе с $ project будет более уместным, чтобы другие мудрые элементы соответствия были сгруппированы вместе с другими элементами документа.
db.test.aggregate(
{ "$unwind" : "$shapes" },
{ "$match" : {
"shapes.color": "red"
}},
{"$project":{
"_id":1,
"item":1
}}
)
Попробуйте использовать: before и: after. Один вставляет текст после рендеринга html, другие вставки перед отображением html. Если вы хотите заменить текст, оставьте содержимое кнопки пустым.
В этом примере задается текст кнопки в соответствии с размером ширины экрана.
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
button:before {
content: 'small screen';
}
@media screen and (min-width: 480px) {
button:before {
content: 'big screen';
}
}
</style>
<body>
<button type="button">xxx</button>
<button type="button"></button>
</body>
Текст кнопки:
1) с: перед
большой экранxxx
большой экран
2) с: после
xxxbig screen
g7]большой экран
У меня возникла проблема, когда мне пришлось заменить текст ссылки, но не мог использовать javascript, и я не мог напрямую изменить текст гиперссылки, поскольку она была скомпилирована из XML. Кроме того, я не мог использовать псевдоэлементы, или они, похоже, не работали, когда я их пробовал.
В принципе, я помещал текст, который я хотел в промежуток, и помещал привязывающий тег под ним завернутый в div. Я в основном переместил якорный тег через css, а затем сделал шрифт прозрачным. Теперь, когда вы нависаете над промежутком, он «действует» как ссылка. Это очень хакерский способ сделать это, но так вы можете иметь ссылку с другим текстом ...
Это сценарий того, как я обошел эту проблему
Мой HTML
<div class="field">
<span>This is your link text</span><br/>
<a href="//www.google.com" target="_blank">This is your actual link</a>
</div>
Мой CSS
div.field a {
color:transparent;
position:absolute;
top:1%;
}
div.field span {
display:inline-block;
}
CSS необходимо будет изменить в соответствии с вашими требованиями, но это общий способ делать то, что вы спрашивают.
Изменить: может ли кто-нибудь сказать мне, почему это было приостановлено? Мое решение работает ...
На основании ответа mikemaccana это сработало для меня
button {
position: absolute;
visibility: hidden;
}
button:before {
content: "goodbye";
visibility: visible;
}
& sect; Абсолютное позиционирование
элемент, который позиционируется абсолютно, вынимается из потока и, следовательно, не занимает места при размещении других элементов.
blockquote>
В отличие от того, что я вижу в каждом другом ответе, вам не нужно , чтобы использовать псевдоэлементы, чтобы заменить содержимое баллиза изображением
. Фактыdiv.pvw-title { /* no :after or :before required*/
content: url("your url here");
}
content
применяется только к :before
и :after
. CSS3 расширяет его ко всему, но модуль «Сгенерированный контент» все еще находится в черновом статусе, поэтому любое использование high i>, вероятно, зависит от браузера.
– mrec
7 August 2017 в 11:22
Вы не можете, ну, можете.
.pvw-title:after {
content: "Test";
}
Это вставляет содержимое после текущего содержимого элемента. Это фактически не заменяет его, но вы можете выбрать пустой div и использовать CSS для добавления всего содержимого.
Но пока вы более или менее можете, вы не должны. Фактический контент должен быть помещен в документ. Свойство содержимого в основном предназначено для небольшой разметки, например, кавычек вокруг текста, который должен отображаться.
Простой, короткий, эффективный. Никакого дополнительного html не нужно.
.pvw-title { color: transparent; }
.pvw-title:after {
content: "New Text To Replace Old";
color: black; /* set color to original text color */
margin-left: -30px;
/* margin-left equals length of text we're replacing */
}
Мне пришлось сделать это для замены текста ссылки, кроме дома, для палочек woocommerce
SASS / LESS
body.woocommerce .woocommerce-breadcrumb > a[href$="/shop/"] {
color: transparent;
&:after {
content: "Store";
color: grey;
margin-left: -30px;
}
}
CSS
body.woocommerce .woocommerce-breadcrumb > a[href$="/shop/"] {
color: transparent;
}
body.woocommerce .woocommerce-breadcrumb > a[href$="/shop/"]&:after {
content: "Store";
color: @child-color-grey;
margin-left: -30px;
}
Если вы хотите использовать псевдоэлементы и позволить им вставлять содержимое, вы можете сделать следующее. Он не предполагает знания исходного элемента и не требует дополнительной разметки.
.element {
text-indent: -9999px;
line-height: 0; /* Collapse the original line */
}
.element::after {
content: "New text";
text-indent: 0;
display: block;
line-height: initial; /* New content takes up original line height */
}
<th>
.
– Chris Kerekes
8 April 2014 в 14:23
line-height: 0
и color: transparent
на главном элементе и сброс этих значений на псевдо-задании (без использования text-indent
),
– dontGoPlastic
9 June 2014 в 22:38
Мне посчастливилось установить font-size: 0
внешнего элемента, а font-size
селектора :after
- все, что мне нужно.
Или, может быть, вы можете обернуть «Факты» вокруг <span>
следующим образом:
<div class="pvw-title"><span>Facts</span></div>
Затем используйте:
.pvw-title span {
display: none;
}
.pvw-title:after {
content: 'whatever it is you want to add';
}
Обязательно: это взломать: CSS не подходит для этого, но в некоторых ситуациях - например, у вас есть сторонняя библиотека в iframe, которую можно настроить только с помощью CSS - такой взлом единственный вариант.
Вы можете заменить текст через CSS. Давайте заменим зеленую кнопку «hello» красной кнопкой, которая говорит «до свидания», используя CSS. Смотрите http://jsfiddle.net/ZBj2m/274/ для живой демонстрации:
Вот наша зеленая кнопка:
<button>Hello</button>
button {
background-color: green;
color: black;
padding: 5px;
}
Теперь давайте спрячемся исходный элемент, но потом добавьте еще один элемент блока:
button {
visibility: hidden;
}
button:after {
content:'goodbye';
visibility: visible;
display: block;
position: absolute;
background-color: red;
padding: 5px;
top: 2px;
}
Примечание:
visibility
. Примечание display: none
на исходном элементе не работает. display: none;
не работает, потому что ::after
действительно означает «внутри этого элемента, но в конце», если кому-то было любопытно.
– Ry-♦
30 June 2014 в 23:17
Это невозможно сделать без трюков. Вот как это работает, заменив текст изображением текста.
.pvw-title{
text-indent:-9999px;
background-image:url(text_image.png)
}
Этот тип вещей обычно выполняется с помощью Javascript. Вот как это можно сделать с помощью jQuery:
$('.pvw-title').text('new text');
Это работало для меня со встроенным текстом. Протестировано в FF, Safari, Chrome и Opera
<p>Lorem ipsum dolor sit amet, consectetur <span>Some Text</span> adipiscing elit.</p>
span {
visibility: hidden;
word-spacing:-999px;
letter-spacing: -999px;
}
span:after {
content: "goodbye";
visibility: visible;
word-spacing:normal;
letter-spacing:normal;
}
Я использую этот трюк:
.pvw-title {
text-indent: -999px;
}
.pvw-title:after {
text-indent: 0px;
float: left;
content: 'My New Content';
}
Я даже использовал это для обработки интернационализации страниц, просто изменив базовый класс ...
.translate-es .welcome {
text-indent: -999px;
}
.translate-es .welcome:after {
text-indent: 0px;
float: left;
content: '¡Bienvenidos!';
}
Это может не совсем ответить на вопрос, но он удовлетворил мои потребности и, возможно, и другие.
Итак, если вы просто хотите показать разные тексты или изображения, сохраните тег пустым и напишите свой контент в нескольких атрибутах данных, таких как <span data-text1="Hello" data-text2="Bye"></span>
. Отобразите их с одним из псевдо классов :before {content: attr(data-text1)}
Теперь у вас есть несколько способов переключения между ними. Я использовал их в сочетании со мультимедийными запросами для гибкого подхода к дизайну, чтобы изменить имена моей навигации на значки.
Замена текста с помощью псевдоэлементов & amp; CSS Visibility
HTML
<p class="replaced">Original Text</p>
CSS
.replaced {
visibility: hidden;
position: relative;
}
.replaced:after {
visibility: visible;
position: absolute;
top: 0;
left: 0;
content: "This text replaces the original.";
}
Этот флажок установлен как кнопка, которая показывает либо «Да», либо «Нет» в зависимости от состояния «проверено». Таким образом, он демонстрирует один способ замены текста с помощью CSS без необходимости писать какой-либо код.
Он по-прежнему будет вести себя как флажок, возвращающий (или не возвращающий) значение POST, но из точки отображения
Цвета могут быть не по своему вкусу, они только там, чтобы проиллюстрировать точку.
HTML:
<input type="checkbox" class="yesno" id="testcb" /><label for="testcb"><span></span></label>
... и CSS:
/* --------------------------------- */
/* Make the checkbox non-displayable */
/* --------------------------------- */
input[type="checkbox"].yesno {
display:none;
}
/* --------------------------------- */
/* Set the associated label <span> */
/* the way you want it to look. */
/* --------------------------------- */
input[type="checkbox"].yesno+label span {
display:inline-block;
width:80px;
height:30px;
text-align:center;
vertical-align:middle;
color:#800000;
background-color:white;
border-style:solid;
border-width:1px;
border-color:black;
cursor:pointer;
}
/* --------------------------------- */
/* By default the content after the */
/* the label <span> is "No" */
/* --------------------------------- */
input[type="checkbox"].yesno+label span:after {
content:"No";
}
/* --------------------------------- */
/* When the box is checked the */
/* content after the label <span> */
/* is "Yes" (which replaces any */
/* existing content). */
/* When the box becomes unchecked the*/
/* content reverts to the way it was.*/
/* --------------------------------- */
input[type="checkbox"].yesno:checked+label span:after {
content:"Yes";
}
/* --------------------------------- */
/* When the box is checked the */
/* label <span> looks like this */
/* (which replaces any existing) */
/* When the box becomes unchecked the*/
/* layout reverts to the way it was. */
/* --------------------------------- */
input[type="checkbox"].yesno:checked+label span {
color:green;
background-color:#C8C8C8;
}
Я только пробовал это в Firefox, но это стандартный CSS, поэтому он должен работать в другом месте.
Используя псевдоэлемент, этот метод не требует знания исходного элемента и не требует дополнительной разметки.
#someElement{
color: transparent; /*you may need to change this color*/
position: relative;
}
#someElement:after { /*or use :before if that tickles your fancy*/
content:"New text";
color:initial;
position:absolute;
top:0;
left:0;
}