#html #css #stylesheet
#HTML #css #таблица стилей
Вопрос:
У меня есть этот селектор css, который работает странно. Это для создания выделения круга вокруг текста. Но когда текст переходит к следующей строке, круг не следует за ним. Что я имею в виду, показано на изображении ниже,
Как вы видите, в слове ‘Mongoose’ нет селектора, а селектор находится в строке выше. Это мой код SCSS,
<div>
front-end framework, <strong>Bootstrap</strong>, which is a front-end styling framework,
HTML and CSS. Vue.js can be used to make <strong>AJAX</strong> requests, make flexible
and stable websites. Vue.js makes axios requests to the server that is built upon Node.js.
<strong>ExpressJS</strong> is a library for Noe that includes a tonne of functions to
handle requests and send reponses back to front-ends. The database being used is MongoDB.
<strong>Mongoose</strong> is a javascript library that bridges the gap between mongo
shell commands and javascript. Furthermore, the web
</div>
strong {
position:relative;
color: $color-grey-1 !important;
}
strong:before {
content:"";
z-index:-1;
top:-0.1em;
border-width: 3px;
border-style:solid;
border-color: $color-yellow;
position:absolute;
border-right-color:transparent;
width:100%;
height:1em;
transform:rotate(2deg);
border-radius:50%;
padding:0.1em 0.25em;
display: inline-block;
}
Это происходит каждый раз, когда слово на краю переходит к следующей строке. Может кто-нибудь сказать мне, что я могу сделать, чтобы предотвратить это, и пусть селектор всегда будет с текстом? Спасибо!
Комментарии:
1. Можете ли вы опубликовать фрагмент соответствующего HTML.
2. @AHaworth Не уверен, уместно ли это здесь, но я обновил вопрос, чтобы включить HTML!
3. @hrishikeshpaul Я знаю, что это не ваше точное требование, но поворот необходим? Если вы предпочитаете не использовать вращающуюся границу, вы можете использовать для элемента непосредственно border: сплошная 4px # 333; border-radius: 50%; border-right-color: прозрачный; отступ: 1px;
4. @oguzhancerit да, я делал это раньше. Но это делается для того, чтобы придать ему более «естественный» вид. Интересно, почему это не работает. Есть идеи?
Ответ №1:
Проблема заключалась в том, что внутри strong не использовался встроенный блок отображения. Вы можете попробовать сейчас
strong {
position:relative;
color: grey !important;
display: inline-block;
}
strong::before {
content:"";
z-index:-1;
top:-0.1em;
border-width: 3px;
border-style:solid;
border-color: yellow;
position:absolute;
border-right-color:transparent;
width:100%;
height: 1em;
transform:rotate(2deg);
border-radius:50%;
padding:0.1em 0.25em;
}
<div>
front-end framework, <strong>Bootstrap</strong>, which is a front-end styling framework,
HTML and CSS. Vue.js can be used to make <strong>AJAX</strong> requests, make flexible
and stable websites. Vue.js makes axios requests to the server that is built upon Node.js.
<strong>ExpressJS</strong> is a library for Noe that includes a tonne of functions to
handle requests and send reponses back to front-ends. The database being used is MongoDB.
<strong>Mongoose</strong> is a javascript library that bridges the gap between mongo
shell commands and javascript. Furthermore, the web
</div>
Ответ №2:
Логотип/::before напрямую не связан с основным элементом (содержит слово mongoose). возможно, вы могли бы попытаться принудительно поместить их в одну строку с width: max-content;
поэтому попробуйте добавить
strong { width: max-content; }
Комментарии:
1. я попробовал это с обычным текстом, который затем был принудительно помещен в одну строку, поэтому я предположил, что это сработало
2. Я попробовал ваш ответ на codepen, и он не работает