提问人:Rip 提问时间:2/14/2023 最后编辑:KeithRip 更新时间:2/14/2023 访问量:40
将文本溢出设置为可见,在动态添加的 div 中没有滚动条
Setting text overflow to visible with no scroll bars in dynamically added divs
问:
如何将文本溢出设置为可见,在动态添加的 s 中没有滚动条?
根据文档,我认为这将是默认设置,但有些东西我不明白。
将文本添加到直接或子项似乎不会更改输出。<div>
<div>
<p>
这是 CodePen 上的演示。
还有来自 CodePen 的代码:
let container = document.querySelector("#container");
let string = "HELLO WORLD!";
for (row = 0; row < 11; row++) {
for (col = 0; col < 16; col++) {
let tile = document.createElement("div");
container.appendChild(tile);
$(tile).addClass("tile");
if (row == 5 && col > 1 && col < 14) {
let p = document.createElement("p");
tile.appendChild(p);
$(p).addClass("letter");
$(p).text(string[col - 2]);
}
}
}
:root {
--tileWidth: 30px;
}
.container {
display: grid;
grid-template-columns: var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth);
}
.tile {
display: block;
width: var(--tileWidth);
height: var(--tileWidth);
position: relative;
background-color: teal;
font-size: calc(var(--tileWidth)*2);
color: tomato;
padding: 0;
text-align: center;
font-family: Impact;
}
.letter {
overflow: visible visible;
margin: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container" class="container"></div>
答:
0赞
Keith
2/14/2023
#1
你遇到的问题是右边和下面的磁贴被覆盖了,因为它们有背景颜色。
您可以做的是更改插入 div 的顺序,例如。反之亦然。或者更改 z-Index,使向上和向左的平铺具有更高的 z 索引。
下面是更改 z 索引的示例。
let container = document.querySelector("#container");
let string = "HELLO WORLD!";
let z = 16 * 11;
for (row = 0; row < 11; row++) {
for (col = 0; col < 16; col++) {
let tile = document.createElement("div");
tile.style.zIndex = z--;
container.appendChild(tile);
$(tile).addClass("tile");
if (row == 5 && col > 1 && col < 14) {
let p = document.createElement("p");
tile.appendChild(p);
$(p).addClass("letter");
$(p).text(string[col - 2]);
}
}
}
:root {
--tileWidth: 30px;
}
.container {
display: grid;
grid-template-columns: var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth) var(--tileWidth);
}
.tile {
display: block;
width: var(--tileWidth);
height: var(--tileWidth);
position: relative;
background-color: teal;
font-size: calc(var(--tileWidth)*2);
color: tomato;
padding: 0;
text-align: center;
font-family: Impact;
}
.letter {
overflow: visible visible;
margin: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container" class="container"></div>
评论
0赞
Rip
2/14/2023
超。z-index 方法效果很好。我计划对这些元素进行动画处理,所以我的猜测是,如果它们移动,以相反的顺序添加 div 会在相反的方向上产生重叠。我尝试向字母类添加一个 z-index,但这并没有改变输出。我以为所有的 p 都会画在所有 div 的前面,而 p 没有背景颜色。每个元素是否为其子元素创建新的 z-index 框架?
0赞
Rip
2/14/2023
事实证明,我之前对 z-index 的实验不起作用,因为 z 默认处于禁用状态。元素的位置属性必须更改为默认值以外的任何属性,才能在绘制元素时使用元素 z 值。我仍然不清楚为什么 z-index 不适用于 p,因为文档说 position 属性适用于所有元素。在这里,我将字母嵌套在第二个 div 中,没有背景颜色、相对位置和 z 索引,字母溢出:codepen.io/fcdobbs/pen/mdGbYgB?editors=0100
评论