Как я могу разместить div НЕПОСРЕДСТВЕННО над другим DIV (который содержит содержимое) с небольшим смещением?

#html #css

#HTML #css

Вопрос:

Я пытаюсь создать визуальный эффект, лучше всего иллюстрируемый этим изображением:

Текст с контуром тени

Я добиваюсь этого эффекта с помощью большого количества текстовых теней, все они смещены по кругу. Это работает. Но я хочу сделать тот же эффект с div, чтобы я мог наложить эффект на изображения.

Я попробовал это:

 <div style="position:relative;top:0;left:0;">in a new adventure!
   <div style="position:relative;top:5;left:5;">in a new adventure!
   </div>
</div>
  

Так что не обращайте внимания на раскраску или еще что-то… я ожидал, что текст будет нарисован непосредственно поверх другого текста, чтобы он выглядел немного толще. Т.Е. это:

ожидаемый

Но вместо этого я получаю второй div ПОД первым div со смещением, вот так:

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

Есть ли какой-либо способ разместить div с содержимым непосредственно на 100% над другим div с содержимым? Я намереваюсь сместить нижний div z-порядка, чтобы сделать обводку снизу, как на верхнем изображении.

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

1. позиция: возможно, абсолютная?

2. Это делает его абсолютным для первого контейнера div, каким бы он ни был, когда я это делаю. Я не вижу, чтобы две вещи напрямую перекрывали друг друга, я продолжаю получать эффекты избегания html.

Ответ №1:

[TBN!] Запустите фрагмент в полноэкранном режиме, чтобы увидеть эффект (он не реагирует: p)

  • вам нужно три элемента, чтобы добавить эффект, один за текстом и один под текстом, чтобы добавить размер, и я использовал -webkit-text-stroke для добавления отступов, и с помощью интервалов между словами и буквами я управляю текстом

 #outer {
    font-size: 70px;
    color: #3993cc;
    letter-spacing: -1px;
    position: relative;
    font-weight: 900;
    word-spacing: -17px;
    font-family: arial;
    -webkit-text-stroke-width: 14px;
    -webkit-text-stroke-color: #3993cc;
}

#outer2 {
    font-size: 70px;
    color: #3993cc;
    letter-spacing: -1px;
    position: absolute;
    font-weight: 900;
    word-spacing: -17px;
    top : 10px;
    left : 0px;
    font-family: arial;
    -webkit-text-stroke-width: 11px;
    -webkit-text-stroke-color: #3993cc;
}

#inner {
     color: white;
    font-size: 70px;
    font-weight: 600;
    letter-spacing: 4.4px;
    position: absolute;
    top: 14px;
    left: 3px;
    -webkit-text-stroke-width: 0px;

}

body {
  background: #a3efff;
}  
 <div id="outer">
in a new adventure!
  <div id="outer2">
in a new adventure!

</div>
  <span id="inner">
  in a new adventure!
  </span>

</div>  

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

1. Однако есть одна вещь… если ваш текст не находится в крайнем правом углу его контейнера, он прерывается. Размещение <center> впереди приведет к центрированию #outer div, но два других будут далеко слева.

Ответ №2:

Используйте абсолютное позиционирование

 <div style="position:relative;top:0;left:0;">in a new adventure!
   <div style="position:absolute;top:1px;left:1px;">in a new adventure!
   </div>
</div>
  

Кстати, не забудьте добавить единицу измерения после вашего значения.

Или вы можете использовать отрицательные поля:

 <div style="position:relative;top:0;left:0;">in a new adventure!
   <div style="position:relative;margin-top: -20px;">in a new adventure!
   </div>
</div>
  

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

1. В итоге это делает его абсолютным по отношению к тому, что находится внутри первого div. Т.Е. Если он находится только на странице, он становится абсолютным для верхнего левого края страницы, если он находится в таблице, он становится абсолютным для верхнего левого края таблицы.

2. Использовать отрицательные поля?

3. @JohnRaptis вот почему вы используете оболочку с. position: relative Таким образом, вы можете разместить оболочку там, где захотите, и positon: absolute дочерние элементы as будут настраиваться только на оболочку, а не на другой элемент, о котором вы говорите.