Переместить текст за пределы контейнера по вертикали

У меня есть DIV с некоторыми стилями CSS и TEXT внутри DIV. Как переместить ТЕКСТ за пределы DIV и применить стиль с помощью CSS или JavaScript?

HTML

<div class = "divstyle">TEXT</div>

CSS

.divstyle {
    width: 200px;
    height: 50px;
    background-color: grey;
}

Я создаю полный DIV поверх javascript:

var inputfield = document.createElement("div");
inputfield.textContent = inputfieldData['TEXT'];
inputfield.classList.add("divstyle");
inputfieldsContainer.appendChild(inputfield);

Когда он отображается в браузере, это выглядит так:

+-----------------+
| TEXT            |
+-----------------+

Я хочу быть таким:

TEXT
+-----------------+
|                 |
+-----------------+

Что я пробовал:

.divstyle::before {
    top: -50px;
    left: -20px;
}

Есть ли способ добавить DIV внутри DIV, используя только CSS? Может быть, решение может состоять в том, чтобы обернуть ТЕКСТ в какой-нибудь тег и применить к нему CSS, но возможно ли сделать это через CSS?

Почему вы хотите отображать содержимое контейнера вне указанного контейнера?

Ghassen Louhaichi 24.05.2023 19:32

Я думаю, будет просто разместить <p/> с вашим текстом, а затем серый <div/>

Dallas 24.05.2023 19:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
67
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Хотя я не понимаю, почему вы этого хотите, вот два способа добиться этого:

  1. Первый способ:

HTML

<div class = "divstyle">
  <span class = "out">TEXT</span>
</div>

CSS

.divstyle {
  position: relative;
  background-color: grey;
}
.out {
  position: relative;
  top: -1em;
}

2/Второй способ (после прочтения вашего первого комментария):

HTML

<div class = "divstyle" content = "TEXT">&nbsp;</div>

CSS

.divstyle {
  background-color: grey;
}
.divstyle:before {
  content: attr(content);
  position: absolute;
  top: -1em;
}

Я не могу изменить структуру DIV. есть ли способ использовать свойство содержимого CSS?

user21955191 24.05.2023 20:17

Я отредактировал свой ответ, чтобы сделать новую попытку со свойством контента...

Franck Perrin 24.05.2023 20:55

Я разобрался, как это сделать.. Мне просто нужна помощь, чтобы поместить это в код. Итак... в CSS создайте .divstyle::before с содержимым: как и во втором способе. но не меняя DIV. оставить как есть. Затем в javascript получите innerText и поместите его в div.setAttribute('content', что вы получаете из innerText)... затем просто удалите ТЕКСТ из DIV с помощью javascript..

user21955191 24.05.2023 21:05

Вы можете добавить диапазон, используя другой стиль (здесь: textstyle)

<div class = "divstyle">
    <span class = "textstyle">
        TEXT
    </span>
</div>

что может выглядеть так

    .textstyle {
        position: absolute;
        top: -20px;
        font-size: 24px;
    }

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

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

user21955191 24.05.2023 20:16

Вам также понадобится position: relative; на .divstyle, чтобы убедиться, что div действительно является первым позиционированным элементом-предком.

Thomas 25.05.2023 09:37
Ответ принят как подходящий

Вместо того, чтобы устанавливать текст внутри div, вы можете установить содержимое псевдоэлемента как «ТЕКСТ» и сделать следующее.

<div class = "divstyle"></div>
.divstyle {
    width: 200px;
    height: 50px;
    background-color: grey;
    position: relative;
    margin-top: 50px;
}

.divstyle::before{
    content: 'TEXT';
    position: absolute;
    top: -50%;
}

https://codepen.io/caglar62/pen/LYgaPPW

Я думал о том же, но не знаю, как использовать JavaScript для добавления свойства содержимого в .divstyle::before.

user21955191 24.05.2023 20:48

@user21955191, пожалуйста, проверьте этот пример: codepen.io/felquis/pen/JjMEEG

C.Aglar 25.05.2023 14:28

Не совсем понятно, что вы хотите, возможно вам подойдет что-то вроде этого:

div {
  display: inline-grid;
  grid-auto-rows: 1fr;
}

div:after {
  content: '';
  border: dashed 1px;
}
<div>TEXT</div>

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