Приложение React: как создать черное наложение для изображения?

Я пытаюсь создать черное наложение для изображения, показанного в заголовке моего приложения, используя ReactJS и CSS3. Однако, что бы я ни делал, это не работает. В прошлом я пытался ссылаться на старые проекты, где мне это удалось, а также исследовал StackOverflow в поисках ответов. Но ничего не получилось.

Может ли кто-нибудь помочь мне понять, что я делаю неправильно и как я могу это решить? Я был бы очень признателен.

Заголовок.js

import React from 'react';
// import { Link } from 'react-router-dom';
import Button from 'react-bootstrap/Button';
import ButtonToolBar from 'react-bootstrap/ButtonToolbar';
import './header.css';

const Header = () => {
    return (
        <div className = "header">
            <h1 className = "title">Linguist Otaku</h1>
            <ButtonToolBar>
                <Button href = "/quiz" size = "lg" id = "quiz-btn">
                    Quiz Now
                </Button>
            </ButtonToolBar>
        </div>
    )
}

export default Header;

Заголовок.css

:root{
    --mainOpacity: rgb(0, 0, 0, .55);
}

.header {
    background-image: url("../../images/italy.png");
    opacity: var(--mainOpacity);
    height: 30em !important;
}

h1 {
    font-family: "Fjalla One";
    text-align: center !important;
    padding-top: 2em !important;
    color: white !important;
    font-size: 4em !important;
}

.btn-toolbar {
    display: flex !important;
    justify-content: center !important;
}

#quiz-btn {
    font-family: "Roboto";
    color: white !important;
    margin-top: 3em !important;
    background-color: transparent !important;
    border: solid .05em white !important;
    border-radius: 0em !important;
}

#quiz-btn:hover {
    transition: all 0.5s ease-in-out;
        background-color: var(--mainOpacity) !important;
}

какие-либо сообщения об ошибках из консоли?

He Wang 10.07.2019 05:37

Во-первых, opacity принимает число от 0 до 1. Не думаю, что вы сможете его передать rgba(...). Далее, я не уверен, что это ваш желаемый результат, но вы можете сделать background-color: black на .header и использовать background-blend-mode.

khan 10.07.2019 05:49

Я бы убрал все эти !important флаги.

themollusk 10.07.2019 05:50

@Speir Нет, ошибок нет.

GalaXee95 10.07.2019 06:05

@themollusk Я удалил их все. Спасибо за совет!

GalaXee95 10.07.2019 06:05

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

GalaXee95 10.07.2019 06:07

@ GalaXee95 попробуйте мой метод ниже и дайте мне знать, если это поможет!

Chris Ngo 10.07.2019 06:24
Приемы 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 сценарий полностью изменился.
3
7
3 838
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Чтобы создать наложение, вы должны поместить содержимое в другой div. Затем с помощью CSS поместите его прямо перед заголовком/фоном, например: https://codesandbox.io/s/mystifying-ramanujan-sq491

Заголовок.js

const Header = () => {
  return (
    <div className = "header">
      <div className = "dark-overlay">
        <h1 className = "title">Linguist Otaku</h1>
        <ButtonToolBar>
          <Button href = "/quiz" size = "lg" id = "quiz-btn">
            Quiz Now
          </Button>
        </ButtonToolBar>
      </div>
    </div>
  );
};

CSS

.dark-overlay {
  background-color: rgba(0, 0, 0, 0.35);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

Ты буквально спас меня сегодня, ха-ха! Это сработало. Большое спасибо! :)

GalaXee95 10.07.2019 06:27

@ GalaXee95 Добро пожаловать! Просто ваш дружелюбный соседский паук - человек stackoverflow :)

Chris Ngo 10.07.2019 06:29

Вы можете добавить фоновое изображение и черное наложение вместе в css для «заголовка» или вашего родителя следующим образом:

background-image: linear-gradient( rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) ),url("../../images/italy.png");

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