首页 > 其他分享 >一对一直播软件开发,瀑布流式布局更受欢迎

一对一直播软件开发,瀑布流式布局更受欢迎

时间:2024-05-11 08:57:12浏览次数:25  
标签:box 盒子 软件开发 一对一 流式 cparent var 图片

一对一直播软件开发,瀑布流式布局更受欢迎

代码实现

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>js瀑布流</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <!-- container容器用来存放box容器,一个box放一张图片 -->
  <div id="container">
      <!-- 根据自己的需求添加图片的数量 -->
    <div class="box">
      <div class="box-img"><img src="./img/1.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/2.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/3.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/4.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/5.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/6.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/7.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/8.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/9.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/10.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/1.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/2.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/3.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/4.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/5.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/6.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/7.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/8.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/9.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/10.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/1.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/2.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/3.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/4.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/5.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/6.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/7.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/8.jpg" alt=""></div>
    </div>
    <div class="box">
      <div class="box-img"><img src="./img/9.jpg" alt=""></div>
    </div>
  </div>

  <script type="text/javascript" src="waterfall.js">
    
  </script>
</body>
</html>

 

`
CSS:

*{
  margin: 0;
  padding: 0;
}

.box{
  float: left;
  padding: 5px;
}

.box-img{
  width: 165px;  // 图片的宽度,他会决定一行能放多少张图片
  padding: 5px;
  border: 1px solid #ccc;
}

img{
  width: 100%;
}

 

JS:

// 读取用户屏幕第一行放了多少张图
// 操作下一张图,找到上一行最矮的高度,将图片排放到其下方

function imgLocation(parent,content){  // 当前有多少图片要摆放

  // 获取到大盒子cparent(大盒子内存放了很多个box,其中每一个box盒子存放着一张图片)
  var cparent = document.getElementById(parent)
  // 将大盒子cparent中所有的box盒子存放在一个数组ccontent中
  var ccontent = getChildElement(cparent,content) 
  // 获取到第一张图片的宽度(已知每一张图片的宽度都相同)
  var imgWidth = ccontent[0].offsetWidth
  // 其中num计算后为页面一行能存放图片的张数,也就是一行能放多少个box盒子
  // document.documentElement.clientWidth 获取整个屏幕的宽度
  var num = Math.floor(document.documentElement.clientWidth/imgWidth)  
  cparent.style.cssText = `width: ${imgWidth*num}px`

  // 创建一个数组用来存放第一行每个图片的高度(此处高度会随着新图片的插入而变大)
  var BoxHeightArr = []
  for(var i=0; i<ccontent.length; i++){
    if(i<num){
      // 先将第一行放满
      BoxHeightArr[i] = ccontent[i].offsetHeight
    }else{   // 要操作的图
       
      /* 找到高度最小值图片对应的下标 */
      // 获取到第一行中的高度最小值
      // apply为借用前面的Math.min方法给数组,不能直接使用Math.min找到数组中的最小值
      var minHeight = Math.min.apply(null,BoxHeightArr) 
      // 找到高度最小值对应在数组BoxHeightArr中的下标
      var minIndex = BoxHeightArr.indexOf(minHeight)
      /* 找到高度最小值图片对应的下标 */
     

      /* 新插入的图片进行定位 */
      // 将新要插入的图片设置为绝对定位
      ccontent[i].style.position = 'absolute'
      // 将新要插入的图片的顶部到页面顶部的距离设置为找到的最小的高度值
      ccontent[i].style.top = minHeight +'px'
      // 将新要插入的图片的左边到页面左边的距离设置和最小高度图片的左边到页面的距离相同,
      // 使两张图片左边对齐
      ccontent[i].style.left = ccontent[minIndex].offsetLeft+'px'
      /* 新插入的图片进行定位 */

      // 更新这一列的高度(这里很关键,因为数组中只会存放num(一行放图片的数目)个元素,
      // 所以插入新图片后原来高度最小值就未必是最小了)
      BoxHeightArr[minIndex] = BoxHeightArr[minIndex] + ccontent[i].offsetHeight
    }
  }
}


// 定义一个函数获取一个容器内中某个容器的数目(此处为获取所有container容器内的box容器)
function getChildElement(parent,content){
  var contentArr = []
  var allContent = parent.getElementsByTagName("*")
  for(var i=0;i<allContent.length;i++){
    if(allContent[i].className == content){
      contentArr.push(allContent[i])
    }
  }
  return contentArr
}


imgLocation('container','box')

 

以上就是一对一直播软件开发,瀑布流式布局更受欢迎, 更多内容欢迎关注之后的文章

标签:box,盒子,软件开发,一对一,流式,cparent,var,图片
From: https://www.cnblogs.com/yunbaomengnan/p/18185681

相关文章

  • EFCore 一对一 实体关系
    一对一实体关系当一个实体与最多一个其他实体关联时,将使用一对一关系。例如,Blog 有一个 BlogHeader,并且 BlogHeader 属于单个 Blog。必需的一对一//Principal(parent)publicclassBlog{publicintId{get;set;}publicBlogHeader?Header{get;se......
  • 软件开发与创新-ColorFinder风险分析和典型用户
    典型用户:风险分析......
  • 2024年汽车软件开发状况调查结果出炉:软件研发人员必看
    在今年1月底,嵌入式静态分析领域公认的行业领导及先驱Perforce公司联合北汇信息首次诚挚邀请中国汽车软件开发专业人士参加2024年汽车发展行业状况报告的调查。现调查结果报告已新鲜出炉!在全球调查结果中,本次调查来自亚洲的答卷占比39%,其中中国在亚洲内占比46%。如您希望了解报告全......
  • 软件开发与创新第二次实验———结对编程:计算出题系统
    一.结对信息2252418盛宇伟2252436董朝二.题目要求小学老师要每周给同学出300道四则运算练习题。这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython两个运算符,100以内的数字,不需要写答案。需要检查答案是否正确,并......
  • 软件开发与创新实践——结对编程
    实验目的本次学习的任务是通过两人结对编程(一个人Coding,一个人审核)的方式,来体会团队合作的过程。本次实验由我和2230232共同完成。编程题目小学老师要每周给同学出300道四则运算练习题。–这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/......
  • 软件开发与创新——结对编程
    本次结对编程作业由我和学号2252406的同学一起编写一、题目:小学老师要求出300道四则运算练习题要求:两个运算符,都是100以内的数字,答案在0-1000之间。拓展功能:有除法时计算的结果保留两位小数,避免除0错误,回答错误的题目存到“错题本.txt”文件中,方便后续查看及改正。300道题全部......
  • 结对编码-软件开发与创新课程设计
    一、题目及运行环境1.小组成员2252331与22523362.题目小学老师要每周给同学出300道四则运算练习题。这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython两个运算符,100以内的数字,不需要写答案。需要检查答案是否正......
  • 产品架构、应用架构、技术架构:软件开发的三个支柱
    在软件开发中,产品架构、应用架构和技术架构是三个重要的支柱。它们在不同层次上定义了软件系统的不同方面和组织结构。下面是对这三个概念的简要解释: 产品架构(ProductArchitecture):产品架构关注的是整个软件产品的结构和组织方式。它定义了软件系统的主要组成部分、模块之间的......
  • 软件开发中的“左移”是什么意思?
    我曾经有过一个经理,在讨论我们的项目时提到,我们需要尽可能地将我们的工作左移。几个月后,在一次面试中,面试官问我是否知道“左移”是什么意思。除非有人没告诉我一个秘密的软件舞蹈,我现在就来告诉你左移是什么意思。(本文视频讲解:java567.com)在软件开发中左移是什么意思?左移是......
  • 软件开发常见指标
    软件开发常见指标:1.代码行数(LinesofCode,LOC):1)GitBash工具cd工作目录find.-typef-print|xargswc-l2)VSCodeVSCodeCounter:能统计项目代码行数、注释行数、以及空行,并且还会展示每个文件的行数以及分不同格式的文件显示。用法:ctrl+shift+p->VSCodeC......