CSS для выбора/стиля первого слова

Это один из меня. Я хочу сделать первое слово из всех абзацев в моем #content div в 14pt вместо значения по умолчанию для абзацев (12pt). Есть ли способ сделать это в прямом CSS или я оставил обертывание первого слова в промежутке, чтобы выполнить это?

Ответ 1

То, что вы ищете, - псевдоэлемент, которого не существует. Есть: первая буква и первая строка, но нет: первое слово.

Конечно, вы можете сделать это с помощью JavaScript. Вот какой код я нашел, который делает это: http://www.dynamicsitesolutions.com/javascript/first-word-selector/

Ответ 2

Я должен не соглашаться с Dale... Сильный элемент - фактически не тот элемент, который используется, подразумевая что-то о значении, использовании или акценте содержания, пока вы просто намереваетесь предоставить стиль элементу.

В идеале вы сможете выполнить это с помощью псевдокласса и таблицы стилей, но поскольку это невозможно, вы должны сделать свою разметку семантически корректной и использовать <span class="first-word">.

Ответ 3

То же самое, с jQuery:

$('#links a').each(function(){
    var me = $(this);
    me.html( me.text().replace(/(^\w+)/,'<strong>$1</strong>') );
  });

или

$('#links a').each(function(){
    var me = $(this)
       , t = me.text().split(' ');
    me.html( '<strong>'+t.shift()+'</strong> '+t.join(' ') );
  });

(Через 'Wizzud' в jQuery Mailing List)

Ответ 4

К сожалению, даже с подобными CSS 3 у нас все еще нет подобных :first-word :last-word т.д. С использованием чистого CSS. К счастью, в настоящее время для всего, что приводит меня к моей рекомендации, есть почти JavaScript. Используя nthEverything и jQuery, вы можете расширить возможности традиционных псевдоэлементов.

В настоящее время действительными псевдо являются:

  • :first-child
  • :first-of-type
  • :only-child
  • :last-child
  • :last-of-type
  • :only-of-type
  • :nth-child
  • :nth-of-type
  • :nth-last-child
  • :nth-last-of-type

И используя все, что мы можем расширить это:

  • ::first-letter
  • ::first-line
  • ::first-word
  • ::last-letter
  • ::last-line
  • ::last-word
  • ::nth-letter
  • ::nth-line
  • ::nth-word
  • ::nth-last-letter
  • ::nth-last-line
  • ::nth-last-word

Ответ 5

Чистое решение для CSS:

Использовать псевдо-класс first-line.

display:block;
Width:40-100px; /* just enough for one word, depends on font size */
Overflow:visible; /* so longer words don't get clipped.*/
float:left; /* so it will flow with the paragraph. */
position:relative; /* for typeset adjustments. */

Не тестировал это. Довольно уверен, что это сработает для вас. Раньше я применял правила блока к псевдоклассам. Возможно, вы застряли с фиксированной шириной для каждого первого слова, поэтому text-align: center; и дать ему хороший фон или что-то для устранения отрицательного пространства.

Надеюсь, что это сработает для вас.:)

-Motekye

Ответ 6

Вы должны обернуть это слово в промежутке, чтобы выполнить это.

Ответ 7

Используйте strong, то есть цель:

<div id="content">
    <p><strong>First Word</strong> rest of paragraph.</p>
</div>

Затем создайте для него стиль в своей таблице стилей.

#content p strong
{
    font-size: 14pt;
}

Ответ 8

Вот немного JavaScript и jQuery, которые я собрал, чтобы обернуть первое слово каждого абзаца тегом <span>.

$(function() {
    $('#content p').each(function() {
        var text = this.innerHTML;
        var firstSpaceIndex = text.indexOf(" ");
        if (firstSpaceIndex > 0) {
            var substrBefore = text.substring(0,firstSpaceIndex);
            var substrAfter = text.substring(firstSpaceIndex, text.length)
            var newText = '<span class="firstWord">' + substrBefore + '</span>' + substrAfter;
            this.innerHTML = newText;
        } else {
            this.innerHTML = '<span class="firstWord">' + text + '</span>';
        }
    });
});

Затем вы можете использовать CSS для создания стиля для .firstWord.

Это не идеально, поскольку он не учитывает все типы пробелов; однако, я уверен, что он может выполнить то, что вам нужно, с помощью нескольких настроек.

Имейте в виду, что этот код будет выполняться только после загрузки страницы, поэтому для просмотра эффекта может потребоваться секундная смена.

Ответ 9

Для этого нет простого метода CSS. Возможно, вам придется пойти с JavaScript + Regex, чтобы появиться в промежутке.

В идеале, существует псевдоэлемент для первого слова, но вам не повезло, так как это не работает. У нас есть: first-letter и: first-line.

Возможно, вы сможете использовать комбинацию: after или: before, чтобы получить ее без использования диапазона.

Ответ 10

Вставьте тег Span в текст абзаца. Например- <p><span>Hello</span>My Name Is Dot</p а затем введите первую букву.