Я пытаюсь создать черное наложение для изображения, показанного в заголовке моего приложения, используя 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;
}
Во-первых, opacity принимает число от 0 до 1. Не думаю, что вы сможете его передать rgba(...). Далее, я не уверен, что это ваш желаемый результат, но вы можете сделать background-color: black на .header и использовать background-blend-mode.
Я бы убрал все эти !important флаги.
@Speir Нет, ошибок нет.
@themollusk Я удалил их все. Спасибо за совет!
@khan Я попробовал твой метод, но у меня не очень получается, извини. Я просто хочу создать простое черное наложение на свою фотографию, чтобы уменьшить яркость и облегчить чтение текста, наложенного сверху.
@ GalaXee95 попробуйте мой метод ниже и дайте мне знать, если это поможет!






Чтобы создать наложение, вы должны поместить содержимое в другой div. Затем с помощью CSS поместите его прямо перед заголовком/фоном, например: https://codesandbox.io/s/mystifying-ramanujan-sq491
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>
);
};
.dark-overlay {
background-color: rgba(0, 0, 0, 0.35);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
Ты буквально спас меня сегодня, ха-ха! Это сработало. Большое спасибо! :)
@ GalaXee95 Добро пожаловать! Просто ваш дружелюбный соседский паук - человек stackoverflow :)
Вы можете добавить фоновое изображение и черное наложение вместе в css для «заголовка» или вашего родителя следующим образом:
background-image: linear-gradient( rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) ),url("../../images/italy.png");
какие-либо сообщения об ошибках из консоли?