CSS: Как мне сделать, чтобы элемент был встроенным в одной ситуации, но был ячейкой таблицы в другой ситуации?

#css

#css

Вопрос:

TL; DR: Я ищу способ отображения элемента SPAN, который может обеспечить желаемое поведение, показанное на 1-м и 3-м рисунках ниже.

Интерактивный код:http://jsfiddle.net/53GZe/1 /

При выборе текста из текстового блока отображение должно быть встроенным, чтобы не создавались разрывы.


введите описание изображения здесь


Теперь, когда я пытаюсь выбрать несколько элементов с одинаковым отображением: inline: я получаю это:


введите описание изображения здесь


Поскольку дисплей настроен на встроенный, он не знает, какой ширины сделать <span> (элемент, вставленный вокруг выделения, чтобы придать пользовательский эффект выделения)

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


введите описание изображения здесь


Что замечательно и вроде как аккуратно. За исключением этого, он не работает со встроенным блоком текста, как в моем первом примере:


введите описание изображения здесь


(обратите внимание на разрывы до и после выбора)

Ответ №1:

Не могли бы вы использовать jQuery для поиска дочерних элементов выделенного div. Затем, если есть какие-либо заблокированные элементы или разрывы строк, установите для display свойства значение table-cell.

Или установив новое правило CSS для ситуации, возможно, снова, используя jQuery для проверки внутренних элементов?

 .situation1 .highlighted { display:table-cell; }
.situation2 .highlighted { display:inline; }
  

Комментарии:

1. Это то, чего я боялся. К сожалению, из-за того, что выделенный элемент генерируется с помощью javascript, это потребует немного больше работы, чем добавление другого правила CSS. хотя спасибо!

2. Эй, я только что прочитал полный вопрос и понял, что это не совсем то, что вам было нужно. Я обновил ответ (и, вероятно, продолжу, когда придумаю больше идей; D)

3. ваше предложение jQuery было бы тем, что я сделаю, если я реализую это прямо сейчас. = D