webrtc网页代码分析一
- 前后端
- 2024-12-14
- 147热度
- 0评论
文档结构
<!doctype html>
<html lang="en">
<head>
...
</head>
<body>
...
</body>
</html>
- 文档类型声明():声明文档使用HTML5标准。
- html标签:设置文档的语言为英语(lang=\"en\")。
- head标签:包含元数据、样式、外部链接等,定义网页的头部信息。
- body标签:页面的主体部分,包含所有网页内容。
head标签
字符集和窗口设置
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
meta标签:用于定义页面的字符集、视口设置、作者信息等。
- charset=\\"utf-8\\":指定字符编码为UTF-8,确保网页能够正确显示多种语言的字符。
- viewport 设置:用于响应式设计,确保页面在不同设备上显示良好。width=device-width 表示页面宽度等于设备的屏幕宽度,initial-scale=1 表示初始缩放比例为 1。
外部资源引入
<script src="https://unpkg.com/mqtt@4.1.0/dist/mqtt.min.js"></script>
<script src="https://kit.fontawesome.com/8c8bbe3334.js" crossorigin="anonymous"></script>
- MQTT库:引入了 MQTT JavaScript 客户端库(版本 4.1.0)。MQTT 是一种轻量级的消息发布/订阅协议,通常用于 IoT(物联网)应用。这表明页面可能涉及到实时消息传递或设备间通信。
- FontAwesome图标库:引入了 FontAwesome 的 JavaScript 库,用于提供图标支持。crossorigin=\"anonymous\" 允许浏览器在不发送凭据的情况下访问该资源。
CSS样式
style标签包含了许多样式规则,以下是主要部分的分析。
全局设置
html {
font-family:"Calibri", sans-serif;
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
- font-family: \"Calibri\", sans-serif;:设置了页面字体为 \"Calibri\",如果不支持则使用 sans-serif。
- box-sizing: border-box;:使得所有元素的 padding 和 border 都包含在 width 和 height 的计算中,避免了布局问题。
响应式设计
@media screen and (max-width: 650px) {
.column {
width: 100
display: block;
}
}
使用 @media 媒体查询来调整页面布局。在屏幕宽度小于或等于 650px 时,将 .column 类的元素的宽度设置为 100
卡片样式和容器
.card {
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
}
.container {
position: relative;
text-align: center;
color: white;
}
- .card:为卡片元素设置了一个阴影效果,使其在页面上看起来更立体。
- .container:设置容器为相对定位,并使文本居中。文本颜色为白色。
按钮样式
.title {
color: grey;
}
.bottom-left, .top-left, .top-right, .bottom-right {
position: absolute;
padding: 10px;
}
.button {
border: none;
outline: 0;
display: inline-block;
padding: 8px;
color: white;
background-color: #000;
text-align: center;
cursor: pointer;
}
.button:hover {
background-color: #555;
}
- .title:为标题设置灰色字体颜色。
- .bottom-left, .top-left, .top-right, .bottom-right:为定位在四个角的元素提供了绝对定位样式。通过定位,它们可以被放置在容器的四个角。
- .button:定义了按钮的基本样式,包括无边框、白色文字、黑色背景以及光标指针。hover 样式将按钮背景色更改为灰色(#555)。
导航栏样式
.topnav {
overflow: hidden;
background-color: #333;
}
.topnav a {
float: left;
display: block;
color: #f2f2f2;
text-align: center;
padding: 14px 16px;
text-decoration: none;
font-size: 17px;
}
.topnav a:hover {
background-color: #ddd;
color: black;
}
.topnav a.active {
background-color: #04AA6D;
color: white;
}
.topnav:定义了一个水平的导航栏,背景色为深灰色,且隐藏溢出的内容。
.topnav a:定义了导航栏中每个链接的样式,包括文本颜色、对齐方式、内边距等。
.topnav a:hover:设置链接在悬停时背景色变为浅灰色,文字颜色变为黑色。
.topnav a.active:当链接处于 \"活动\" 状态时,背景色变为绿色(#04AA6D),文字变为白色。
按钮样式
.btn-group button {
margin-top: -4px;
background-color: white;
border: 1px solid white;
color: black;
padding: 10px 24px;
cursor: pointer;
}
.btn-group button:hover {
background-color: #f2f2f2;
}
.btn-group button:定义了按钮组中的按钮样式,包括背景色为白色,边框为白色,文本为黑色,且在悬停时背景色变为浅灰色。
普通按钮样式
.btn {
background-color: DodgerBlue;
border: none;
color: white;
padding: 12px 16px;
font-size: 16px;
cursor: pointer;
}
.btn:hover {
background-color: RoyalBlue;
}
.btn:定义了一个蓝色的按钮,包含内边距、字体颜色等样式。在悬停时,按钮的背景色会变成更深的蓝色(RoyalBlue)。
body标签
body包含页面部分显示部分和script部分。
页面内容
导航栏区域
<div class="topnav" id="myTopnav">
<a href="#">Peer Project</a>
<a href="https://ko-fi.com/sepfy95" style="float: right">Sponsor</a>
<a href="https://github.com/sepfy/pear" style="float: right">Github</a>
</div>
这是一个顶部导航栏(topnav)元素,包含三个链接:
- Peer Project:这是主页面的链接,指向当前页面(#)。可以是应用的标题或者主页面链接。
- ko-fi.com:链接到 ko-fi.com,可能是用于捐赠或支持项目。
- github: GitHub 项目的链接,用户可以访问该链接查看源代码或参与项目。
这些链接使用了 float: right 样式,使得“Sponsor”和“Github”链接都被浮动到右侧,而“Peer Project”链接则停留在左侧。
音视频展示区域
//这是包含视频内容的容器
<div class="column" id="video">
//用来包裹所有显示视频、音频及空间的内容,创建一个卡片式布局
<div class="card">
//容器内放置了视频和音频元素,包含一些展示信息的<p>标签
<div class="container">
// 媒体元素信息
//图片元素,在没有视频流可用时显示,他的id是imgStream
<img id="imgStream" style="width: 100
//video元素,用于显示视频流,display样式为none,默认视频流不可见。通过js控制
<video id="videoStream" playsinline style="width:100
//audio元素,用于播放音频流的,默认被隐藏,通过js控制。
<audio id="audioStream" style="display: none"></audio>
//用于设置设备信息
//段落元素用于显示设备信息,这里是device id
<p class="top-left" id="device-id"></p>
//段落元素,用于显示设备当的状态。
<p class="top-right" id="status">waiting</p>
</div>
//控制按钮,包括音量、录音、旋转、暂停
<div class="btn-group" style="width:100
//控制音量的按钮,调用onVolume函数,图标为fa-solid fa-volume-xmark
<button style="width:25
//控制是否静音,调用onMuted函数,图标为fa-solid fa-microphone-slash
<button style="width:25
//用于旋转视频,点击调用onRotate函数,图标为solid fa-arrows-rotate
<button style="width:25
//用于停止视频或音频流,点击调用onStop函数,图标为fa-solid fa-circle-stop
<button style="width:25
</div>
</div>
</div>