javascript - insertAdjacentHTML 后,即使启用滚动,部分元素也会显示,如何避免覆盖?

标签 javascript html css

请运行代码片段来理解我的问题。

点击方 block 2次后,滚动条可见。但是,部分显示了最左边/最右边的正方形,我不知道如何避免这种情况。

还想强调一下,我:

  1. 更喜欢将正方形居中对齐
  2. 水平和垂直插入将被实现。

此 GIF 演示了最终期望的结果/示例输出:

.

function insertElement(ev) {
  let this_node = ev.target;
  this_node.insertAdjacentHTML('afterend', '<div class="square" onclick="insertElement(event);"></div>');
}
.container {
  display: -webkit-flex;
  justify-content: center;
  width: 100px;
  padding: 20px;
  background-color: #fff280;
  overflow: scroll;
}

.square {
  min-width: 45px;
  height: 45px;
  margin: 5px;
  background-color: #9c9c9c;
}
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
</head>

<body>
  <div class="container">
    <div class="square" onclick="insertElement(event);"></div>
  </div>
</body>

</html>

最佳答案

如果你想保持样式居中不溢出,溢出后左对齐,需要2个容器,里面的容器适应内容的宽度(不是父级),例如使用 display: inline-flex,像这样:

function insertElement(ev) {
  let this_node = ev.target;
  this_node.insertAdjacentHTML('afterend', '<div class="square" onclick="insertElement(event);"></div>');
}
.scrollContainer {
  width: 150px;
  height: 150px;
  overflow: scroll;
}

.centerContainer {
  display: inline-flex;
  overflow: visible;
  min-width: 100%;
  min-height: 100%;
  justify-content: center;
  align-items: center;
  background-color: #fff280;
}

.square {
  min-width: 45px;
  height: 45px;
  margin: 5px;
  background-color: #9c9c9c;
}
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
</head>

<body>
  <div class="scrollContainer">
    <div class="centerContainer">
      <div class="square" onclick="insertElement(event);"></div>
    </div>
  </div>
</body>

</html>

关于javascript - insertAdjacentHTML 后,即使启用滚动,部分元素也会显示,如何避免覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123394/

相关文章:

html - 在表 td 中显示到中心的跨度

html - 使用位置 :absolute while keeping it inside the document flow

javascript - 在文本字符串中找到 <img> 标签

html - Javascript 中旋转的 If 语句

java - 将网站数据绘制成图表

javascript - JS 一直有效,直到我将它带入基础框架

javascript - 在给定 URL 的情况下抓取网站上最大的图像

javascript - 不一致的 Javascript 元素控制

javascript - IE8 无法向窗口返回的 JavaScript 对象添加属性

javascript - 如何在 Javascript 中创建带命名空间的静态函数?