Центральный заполнитель типа span

Я создал диапазон, который выступает в качестве заполнителя для figcaption. Я пытаюсь центрировать заполнитель, но он создает некоторые отступы (не уверен), которые я не могу контролировать. Вот ссылка на песочницу кода. песочница

Я попытался закомментировать свойство width:0, которое действительно центрировало заголовок, но теперь фокус ведет себя неправильно.

Это реагирующий компонент для span, который выступает в качестве заполнителя.

<span
 contentEditable = {false}
 style = {{
    pointerEvents: "none",
    display: "inline-block",
    width: "0",
    maxWidth: "100%",
    whiteSpace: "nowrap",
    opacity: "0.333"
 }}
>
 Figure Caption
</span>

Чтобы воспроизвести ошибку, откройте песочницу, поместите курсор в редактор и нажмите кнопку insert image. Как только вы нажмете на нее, вставится изображение с подписью. Заполнитель внутри него не центрирован.

Я посмотрел в хроме, я получаю фиговую надпись в центре

Sethuraman 07.05.2019 08:58

У вас есть первоначальная проблема, когда фокус работает неправильно, а с width: 0 он исчезает? ... но теперь он не будет центрироваться. Обнуление ширины элемента не является хорошим способом решения проблем, вместо этого укажите проблему с "неправильное поведение фокуса", иначе вы, скорее всего, столкнетесь с другими проблемами с тем, как все будет отображаться.

Asons 07.05.2019 09:04
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
2
2
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто уберите width: "0" из настроек. В центрированном родительском и дочернем элементах width:0 для дочернего элемента блока (или встроенного блока) помещает его в центр родителя (фактически он помещает левый элемент в центр родителя), и если он содержит текст или любой тип контента, контент будет увеличиваться вправо (контент выходит за пределы элемента нулевой ширины).

Чтобы решить проблему с фокусом, есть несколько обходных путей:

Первая идея: с помощью margin-left. Вы по-прежнему можете использовать width:0, но вы должны установить margin-left равным половине ширины текста подписи. Эта идея требует дополнительного кода для расчета динамической ширины подписи при изменении текста (событие onKeyup).

Другая идея: Удалите width:0 но: скройте заголовок по умолчанию, как только пользователь нажмет на ссылку, и снова установите ее, если пользовательский ввод был нулевым. Вы можете сохранить подпись по умолчанию в теге data-caption, чтобы легко восстановить ее.

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