Добавить элемент внутри элемента

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

Добавить элемент внутри элемента

.blackBox {
  background: #000;
  z-index: 0;
}

.text {
  color: #000;
  z-index: 2;
}

.redBox {
  background: red;
  opacity: 0.5;
  z-index: 1;
}
<div class = "blackBox">
  <div class = "text">Lorem Ipsum Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... </div>
  <div class = "redBox" />
</div>

Небольшое примечание <div /> недействителен html: stackoverflow.com/questions/3558119/…

Jon P 09.04.2018 05:53
Поведение ключевого слова "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) для оценки ваших знаний,...
5
1
133
5

Ответы 5

Сначала вам нужно установить контейнер должность в относительное и абсолютное положение элементов text и redBox. Затем присвойте каждому из них соответствующее значение top, чтобы текст перекрывал красную рамку.

Затем вы можете использовать преобразование skewY для достижения эффекта перекоса.

Я также использовал border-radius, чтобы получить закругленную границу на изображении.

например

.blackBox {
  background: black;
  z-index: 0;
  height: 200px;
  width: 300px;
  position:relative;
  border-radius: 10px;
}

.text {
  position:absolute;
  color: white;
  z-index: 2;
  padding: 10px;
}

.redBox {
  position:absolute;
  background: red;
  opacity: 0.5;
  z-index: 1;
  height: 110px;
  width: 300px;
  top: 45px;
  transform: skewY(-5deg);
}
<div class = "blackBox">
  <div class = "text">Lorem Ipsum Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... </div>
  <div class = "redBox" />
</div>

Для этого вам понадобится несколько вещей. Во-первых, вы захотите дать своему .redBoxposition из absolute, а также дать родительскому .blackBoxposition из relative. После этого дайте вашему красному квадрату top или 0, чтобы элементы перекрывались.

Вам также необходимо указать красной коробке width и height. Я выбрал 100% для height и 150% для width. Это сделано для того, чтобы красный прямоугольник был больше контейнера, чтобы он доходил до краев. Для компенсации этого используется отрицательный margin-left.

Отсюда просто нужно дать красному прямоугольнику отрицательное вращение с помощью transform: rotate(-5deg). Наконец, вы захотите дать своему .blackBoxoverflow: hidden, чтобы скрыть те части, где красный прямоугольник выходит за пределы своего контейнера.

Это можно увидеть в следующем:

.blackBox {
  background: #000;
  z-index: 0;
  position: absolute;
  height: 50px;
  width: 300px;
  padding: 20px;
  overflow: hidden;
  border-radius: 10px;
}

.text {
  color: #fff;
  z-index: 2;
}

.redBox {
  background: red;
  opacity: 0.5;
  z-index: 1;
  position: absolute;
  top: 0;
  margin-left: -25%;
  width: 150%;
  height: 100%;
  transform: rotate(-5deg);
}
<div class = "blackBox">
  <div class = "text">Lorem Ipsum Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... </div>
  <div class = "redBox" />
</div>

Отличная детализация css, но отсутствует border-radius на .blackBox

NewToJS 09.04.2018 05:32

Я добавил это сейчас :)

Obsidian Age 09.04.2018 05:34

Намного лучше :) +1 за это!

NewToJS 09.04.2018 05:36

спасибо, это было полезно. Также для .text потребуется позиция. Я добавил это в :)

beggiiner 09.04.2018 06:09

Что-то вроде этого?

.blackBox {
  background: #000;
  width: 200px;
  height: 200px;
  position: relative;
  overflow: hidden;
  border-radius: 20px;
}

.text {
  color: #FFF;
  z-index: 2;
  position: absolute;
  top: 5%;
  margin: 10px;
}

.redBox {
  background: darkred;
  position: absolute;
  height: 140px;
  width: 400px;
  overflow: hidden;
  transform: rotate(-10deg);
  left: -40px;
  top: 20px;
}
<div class = "blackBox">
  <div class = "text">Lorem Ipsum Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... </div>
  <div class = "redBox">

  </div>
</div>

Изменив Ответ обсдидиановых веков, вы можете сделать это без дополнительного бессмысленного элемента "redbox". Вместо этого используйте псевдоэлемент, например :before. Я бы также сказал, что вам лучше дать blackbox относительное положение, тогда внутренние элементы позиционируются относительно него.

Чтобы текст отображался как белый, задайте элемент .textposition:absolute и z-index выше, чем псевдоэлемент :before.

.blackBox {
  background: #000;
  z-index: 0;
  position: relative;
  height: 50px;
  width: 300px;
  padding: 20px;
  overflow: hidden;
  border-radius:30px;
}

.text {
  color: #fff;
  z-index: 10;
  position:absolute;
}

.blackBox:before {
  background: red;
  opacity: 0.5;
  z-index: 1;
  position: absolute;
  top: 0;
  margin-left: -25%;
  width: 150%;
  height: 100%;
  transform: rotate(-5deg);
  content:'';
}
<div class = "blackBox">
  <div class = "text">Lorem Ipsum Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... </div>
</div>

А как насчет один элемент и некоторого градиента в качестве фона:

.blackBox {
  padding:50px;
  width:300px;
  border-radius:10px;
  border-top:10px solid #000;
  border-bottom:10px solid #000;
  background: 
  linear-gradient(to top left,transparent 50%,#000 51%) 0 0/100% 40px no-repeat,
  linear-gradient(to bottom right,transparent 50%,#000 51%) 0 100%/100% 40px no-repeat,
  red;
}
<div class = "blackBox">
  Lorem Ipsum Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... 
</div>

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