gpt4 book ai didi

javascript - HTML+CSS奇怪的DIV错误

转载 作者:行者123 更新时间:2023-11-28 16:01:50 25 4
gpt4 key购买 nike

我对 HTML 比较陌生,在让两个 div 对齐时遇到了一些小问题。第一个 div 是顶部框,第二个 div 是它下面的视频框。两者的宽度尺寸相同,但高度不同。每当我将视频框 div 放在顶部框 div 内时,视频框 div 都会无缘无故地向右移动 5px。我可以通过使用边距来修复它,但我整天都在谷歌搜索,无法找出它发生的原因。这是我的 HTML 代码和 CSS 代码。

.smoothbox
{
background-color: darkseagreen;
border-style: solid;
border-width: 5px;
border-radius: 10px;
border-color: black;
}

#topbox
{
width: 800px;
height: 200px;
margin-left: auto;
margin-right: auto;
}

#video
{
width: 800px;
height: 600px;
margin-top: 200px;
}
    <html>
<head>
<title>Camagru</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<div id="topbox" class="smoothbox">
<video id="video" class="smoothbox" autoplay></video>
<button id="snap">Snap Photo</button>
<canvas id="canvas" width="800" height="600"></canvas>
<script>
//Stream Video
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia)
{
navigator.mediaDevices.getUserMedia({video: true}).then(function(stream) {
video.src = window.URL.createObjectURL(stream);
video.play();
});
}
//Snap Photo
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var video = document.getElementById('video');

document.getElementById("snap").addEventListener("click", function() {context.drawImage(video, 0, 0, 800, 600);});
</script>
</div>
</body>
</html>

非常感谢所有帮助!

最佳答案

问题是你在 .smoothbox 上有一个 border5px 所以 topboxvideo 获得 5px 的边框

所以这就是为什么 video 的绿色区域从左边移动 5px 因为你在 video 容器的左边(顶部底部和右边)添加了 5px

如果不设置 box-sizing:border-box ,两个 div 的宽度都将超过 800px,并且宽度为 810px

请参阅下面的 box-sizing: border-box; 示例,以更清楚地了解发生了什么

.smoothbox
{
background-color: darkseagreen;
border-style: solid;
border-width: 5px;
border-radius: 10px;
border-color: black;

}

#topbox
{
width: 800px;
height: 200px;
margin-left: auto;
margin-right: auto;
}

#video
{
width: 800px;
height: 600px;
margin-top: 200px;
box-sizing:border-box;
margin-left: auto;
margin-right: auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="topbox" class="smoothbox">
<video id="video" class="smoothbox" autoplay></video>
<button id="snap">Snap Photo</button>
<canvas id="canvas" width="800" height="600"></canvas>
<script>
//Stream Video
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia)
{
navigator.mediaDevices.getUserMedia({video: true}).then(function(stream) {
video.src = window.URL.createObjectURL(stream);
video.play();
});
}
//Snap Photo
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var video = document.getElementById('video');

document.getElementById("snap").addEventListener("click", function() {context.drawImage(video, 0, 0, 800, 600);});
</script>
</div>

您可以使用负边距(margin-left:-5px),这样两个 div 就会对齐。看片断

.smoothbox
{
background-color: darkseagreen;
border-style: solid;
border-width: 5px;
border-radius: 10px;
border-color: black;
}

#topbox
{
width: 800px;
height: 200px;
margin-left: auto;
margin-right: auto;
}

#video
{
width: 800px;
height: 600px;
margin-top: 200px;
margin-left: -5px;
margin-right: auto;
}
<div id="topbox" class="smoothbox">
<video id="video" class="smoothbox" autoplay></video>
<button id="snap">Snap Photo</button>
<canvas id="canvas" width="800" height="600"></canvas>
<script>
//Stream Video
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia)
{
navigator.mediaDevices.getUserMedia({video: true}).then(function(stream) {
video.src = window.URL.createObjectURL(stream);
video.play();
});
}
//Snap Photo
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var video = document.getElementById('video');

document.getElementById("snap").addEventListener("click", function() {context.drawImage(video, 0, 0, 800, 600);});
</script>
</div>

但是我建议您更改 html 结构并使它们成为 sibling 。

并使用 box-sizing:border-box 如果你添加 border 因为如果没有,而不是占用 800px; 带有 border:5px 将占用 810px 而不是

关于javascript - HTML+CSS奇怪的DIV错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39961286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com