Как центрировать div внутри изображения? (используя flex, но не background-img) - PullRequest
0 голосов
/ 24 мая 2019

Как обычно, я отчаянно пробую все с помощью css в течение нескольких часов;) Если это не совсем понятно, извините, я стараюсь сделать это настолько понятным, насколько возможно.

У меня есть размытое изображение, и я хотел быпоместите div внутри него и отцентрируйте его.Лучше всего было бы иметь два элемента рядом друг с другом

<parent/>
<child/>

, потому что родитель имеет пятна, а ребенок нет.Я попробовал это

<parent class="blured">
    <child class="notblured"/>
</parent>

.blured{
    -moz-filter: blur(5px);
    -ms-filter: blur(5px);
    filter: blur(5px);
}

.notblured{
    -moz-filter: blur(0) !important;
    -ms-filter: blur(0) !important;
    filter: blur(0) !important;
}

child{
    margin: auto;
    width: 19em;
}
parent{
    display: flex;
    justify-content: center;
    align-items:center;
}

Но это не работает, оба размыты + мое изображение на самом деле не так, как я хочу

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

child{
    padding: 1.5em;
    text-align:center;
    width: 19em;
    padding-top:0.5em;
    position: absolute;
    margin-left: auto;
    margin-right: auto;
    top: 6em;
    left: 0;
    right: 0;
}

Есть предложения?

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Поместите изображение с фильтром размытия на псевдоэлемент :before или :after, чтобы фильтр не влиял на дочерние элементы.Требуется немного z-index, чтобы работать с этим точным подходом.

.parent {
  position: relative;
  display: flex;
  justify-content: center;
  align-items:center;
  min-height: 100vh;
}
.parent:before {
  content: '';
  position: absolute;
  height: 100%;
  width: 100%;
  background-image: url('https://picsum.photos/200/300');
  background-size: cover;
  -moz-filter: blur(5px);
  -ms-filter: blur(5px);
  filter: blur(5px);
  z-index: 1;
}
.child {
  position: relative;
  color: white;
  background: green;
  min-height: 200px;
  min-width: 300px;
  z-index: 9;
}
<div class="parent blured">
    <div class="child">CHILD</div>
</div>
1 голос
/ 24 мая 2019

Используйте внешний элемент в качестве родительского для обоих, и отцентрируйте дочерний элемент следующим CSS:

.blured {
  -moz-filter: blur(5px);
  -ms-filter: blur(5px);
  filter: blur(5px);
}

.outer{
  position: relative;
  width: 500px;
  height: 300px;
}

.child {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 150px;
  height: 100px;
  background: blue;
  transform: translate(-50%, -50%);
}

.parent {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
  background: red;
}
<div class="outer">
  <div class="parent blured">
  </div>

  <div class="child">
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...