CSS: разрыв строки после первого слова для любого контента

Мне нужно оставить только одно слово в первой строке независимо от содержания, поэтому дополнительная разметка невозможна.

Я пытался сделать это с помощью word-spacing с ::first-line Псевдо-элемент. Это отлично работает в Firefox или IE, но не работает в браузерах WebKit (протестировано в последних версиях Chrome, Opera и Safari).

Кроме того, установка межстрочного интервала для всего элемента работает просто отлично.

Я что-то упустил или просто не работает в WebKit?

Пример ниже делает именно то, что я хочу, если он открыт в Firefox или IE, но не в браузерах WebKit.

.outer {
  width: 100px;
  border: 1px solid black;
  height: auto;
  margin: 0 0 20px;
}

.inner {
  display: inline-block;
}

.with-first-line::first-line {
  word-spacing: 200px;
}

.whole {
  word-spacing: 200px;
}
<div class="outer">
  <span class="inner with-first-line">long line with words</span>
</div>

<div class="outer">
  <span class="inner whole">long line with words</span>
</div>

1 ответ

Итак, я думаю, что будет делать

(function () { 
    var node = $(".with-first-line").contents().filter(function () { return this.nodeType == 3 }).first(),
        text = node.text(),
        first = text.slice(0, text.indexOf(" "));
    
    if (!node.length)
        return;
    
    node[0].nodeValue = text.slice(first.length);
    node.before('<span class="first">' + first + '</span><br/>');
})();
.first { color: red; font-weight: bold; }

.outer {
  width: 100px;
  border: 1px solid black;
  height: auto;
  margin: 0 0 20px;
}

.inner {
  display: inline-block;
}

.with-first-line::first-line {
  word-spacing: 200px;
}

.whole {
  word-spacing: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="outer">
  <span class="inner with-first-line">long line with words</span>
</div>

<div class="outer">
  <span class="inner whole">long line with words</span>
</div>

Другие вопросы по тегам