Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как привязать тег <div id="result-container>" к подвижному canvas?

Ilia Trushin Ученик (84), на голосовании 1 год назад
Создаю проект javascript/html/css с библиотекой FaceAPI (онлайн-программа, ищущая лицо на видио и дающая его краткую характеристику: пол, возраст и настроение). И мне нужно привязать тег <div id="result-container"> к подвижному canvas, чтобы они стали единым целым и двигались вместе.


Вот, что примерно должно получиться:

Дополнен 1 год назад
Html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Face recognition App</title>
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<header>Face recognition in the browser using Javascript</header>
<div class="container">
<video id="video" height="500" width="500" autoplay muted></video>
</div>
<div class="result-container">
<div id="emotion">Emotion</div>
<div id="gender">Gender</div>
<div id="age">Age</div>
</div>

<script src="./js/face-api.min.js"></script>
<script src="./js/main.js"></script>
</body>
</html>
Дополнен 1 год назад
Css:

body {
margin: 0;
padding: 0;
box-sizing: border-box;
height: 100vh;
background: #2f2f2f;
width: calc(100% - 33px);
}
.result-container {
z-index: 100;
}
canvas {
position: absolute;
}
.container {
display: flex;
width: 100%;
justify-content: center;
align-items: center;
}
header {
background: #42a5f5;
color: white;
width: 100%;
font-size: 2rem;
padding: 1rem;
font-size: 2rem;
}
Дополнен 1 год назад
Ссылка на репозиторий github: https://github.com/ilya060207/Test/tree/main
Голосование за лучший ответ
Переплетение яичных волокон Профи (611) 1 год назад
что у тебя делает моя фотка?
Ilia TrushinУченик (84) 1 год назад
Ахаххв, незнаю, незнаю)
Sergio 2.1 Оракул (67334) 1 год назад
Вы можете использовать CSS-свойство position: absolute для тега <div id="result-container">, чтобы он был позиционирован относительно родительского элемента с position: relative. Затем вы можете использовать JavaScript, чтобы обновлять свойства top и left тега <div id="result-container">, чтобы он перемещался вместе с холстом. Например, если вы хотите, чтобы <div id="result-container"> находился в правом верхнем углу холста, вы можете использовать следующий код:
 const canvas = document.querySelector('canvas'); 
const resultContainer = document.querySelector('#result-container');

// Получить позицию холста
const canvasRect = canvas.getBoundingClientRect();

// Обновить позицию resultContainer
resultContainer.style.top = `${canvasRect.top}px`;
resultContainer.style.left = `${canvasRect.right - resultContainer.offsetWidth}px`;
Этот код получает текущую позицию холста и обновляет позицию <div id="result-container">, чтобы он находился в правом верхнем углу холста. Вы можете обновлять позицию <div id="result-container"> каждый раз, когда холст перемещается, чтобы он всегда находился в нужном месте. Однако, если вы используете библиотеку FaceAPI, то вам необходимо убедиться, что обновление позиции <div id="result-container"> происходит после того, как библиотека обновила позицию холста. Вы можете сделать это, например, используя функцию обратного вызова или промисы.
Похожие вопросы