Альтернатива свойству CSS3 bikeshedding?

Есть ли альтернатива свойству bikeshedding CSS3? Кажется, он еще не поддерживается.


person Gajus    schedule 14.06.2011    source источник
comment
Это свойство действительно существует: w3.org/blog/CSS/2011/03. /15/резолюции_152 О_о   -  person Pekka    schedule 15.06.2011
comment
Его снова переименовали, но его нет в css3-text документе, на который я ссылался. xanthir.com /feed/public-css-коммиты/   -  person rockerest    schedule 15.06.2011
comment
Это общий вопрос или вы пытаетесь что-то сделать с этим свойством?   -  person melhosseiny    schedule 15.06.2011
comment
Меня особенно интересует bikeshedding: collapse;.   -  person Gajus    schedule 15.06.2011
comment
Я хотел бы иметь кое-что из того, что ребята из CSS курят на своих встречах.   -  person Pekka    schedule 15.06.2011
comment
@Guy: Что конкретно вы пытаетесь сделать с bikeshedding: collapse?   -  person thirtydot    schedule 15.06.2011
comment
Проблема возникает, когда есть <inline element />\r\n<inline element \>. Разрыв строки между двумя встроенными элементами создает пробел, который я пытаюсь удалить. bikeshedding должен был это сделать. Странное имя, bikeshedding, а?   -  person Gajus    schedule 15.06.2011
comment
@Guy: я знаю несколько способов обойти это. Можете ли вы сделать демонстрацию jsFiddle, показывающую конкретную ситуацию? Даже если это всего два элемента span. Я просто хочу убедиться, что мы на одной волне, спасибо.   -  person thirtydot    schedule 15.06.2011
comment
Посмотрите пробел между двумя DIV jsfiddle.net/F3Mdd   -  person Gajus    schedule 15.06.2011
comment
Имя, связанное с en.wikipedia.org/wiki/Parkinson%27s_law_of_tribuity ?   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 14.05.2014
comment
возможный дубликат Как удалить пространство между элементами встроенного блока?   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 14.05.2014


Ответы (4)


Свойство пробела

В CSS3 свойство white-space является сокращением для свойств white-space-collapsing (думаю, bikeshedding означает, что они еще не знают, как его назвать) и свойств text-wrap. Свойство white-space — это свойство CSS 2.1, поддерживаемое большинством браузеров, и для него есть два значения, которые сворачивают новые строки:

  1. normal (начальное значение).
  2. nowrap

Но что означают свернутые символы перевода строки?

Согласно CSS 2.1:

Если для 'white-space' установлено значение 'normal' или 'nowrap', символы перевода строки преобразуются для цели рендеринга в один из следующих символов: символ пробела, символ пробела нулевой ширины (U+200B) или отсутствие символа ( т. е. не визуализируется) в соответствии с алгоритмами, специфичными для UA, на основе сценария контента.

Согласно CSS 3:

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

Реальность:

Большинство браузеров преобразуют символы перевода строки в пробел. Итак, что вам действительно нужно, так это установить для свойства white-space-collapsing значение discard, а не collapse или collapse, а затем добавить пробел нулевой ширины перед разрывом строки.

Что делать до поддержки браузера

Удалите пробелы из вашего HTML-документа:

<span>A</span>
<span>B</span>

To:

<span>A</span><span>B</span>

Or:

<span>A</span><span>
    B</span>
person melhosseiny    schedule 15.06.2011
comment
На самом деле, второй представленный вариант все равно приведет к пробелу между A и B. Просто для вашего сведения. Хотя информация хорошая, спасибо! ;) - person CptRobby; 25.07.2013
comment
Вы можете переместить пробелы внутри тегов для удобочитаемости: <span>A</span [linebreak] ><span>B</span - person Killroy; 08.02.2017

Всегда есть самое очевидное решение — просто удалить пробелы в HTML:

http://jsfiddle.net/F3Mdd/1/ — это очень просто и просто работает . Из этого:

<div>a</div>
<div>a</div>

к этому:

<div>a</div><div>a</div>

Вот более подробный ответ.

Честно говоря, я всегда просто удаляю пробелы...

person thirtydot    schedule 15.06.2011

Другой подход состоит в том, чтобы просто дождаться этой функции CSS3 и удалить пробелы с помощью Javascript до тех пор.

http://jsfiddle.net/rT4Dy/2/

$('[data-bikeshedding="discard"]').each (function () {
  var node = $(this);
  node.html (node.find ('> *').detach ());
});
person nik    schedule 25.04.2013
comment
Этот ответ должен быть правильным ответом! Я люблю это. - person skolind; 22.04.2015

Если я вас правильно понял, вы имеете в виду свойство text-spacing.

Насколько я могу судить, поддержки не так много.

person rockerest    schedule 14.06.2011
comment
Во второй ссылке не упоминается текстовый интервал, поэтому я не уверен, как вы пришли к выводу в тексте ссылки. - person ikegami; 15.06.2011