我有一个呈现文本的文本框。这个文本框有一个最大高度,并且它的溢出被设置为auto
,使其可滚动。现在我想引入一个复选框,它呈现在这个文本框的右下角。为了实现这一点,我将复选框绝对定位在右下角。这已经按预期工作:
现在我有一个问题:是否可能使文本在复选框周围换行,以防止文本被复选框遮挡?
同时,必须确保在滚动文本时复选框不会移动,并且它应该(至少在视觉上)保持在文本框内。
我已经尝试使用弹性布局和网格布局方法,但要么失败了,因为在滚动期间复选框移动了,要么是复选框使用了文本框外的额外空间,这是我不想发生的。
还有一个相关问题得到了解决,但在那个问题中,文本不可滚动,因此可以在可滚动的文本框中添加一个不可见的间隔符来打破文本。这个解决方案在这里不起作用,因为我们不知道在哪里添加间隔符,因为根据滚动位置,它必须放在不同的位置。
我的当前版本,在这个fiddle中可以找到文本在复选框下方运行(这是不想要的):
.text {
white-space: pre-wrap;
max-height: 8em;
overflow-y: auto;
}
.read {
display: inline;
padding: 8px;
position: absolute;
bottom: -2px;
right: 36px;
background: white;
border: 1px solid black;
}
.wrapper {
position: relative;
}
<div class="wrapper">
<div class="text">
Hello World Hello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello World Hello World Hello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello World Hello WorldHello WorldHello WorldHello WorldHello World Hello World Hello
World Hello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello World Hello World Hello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello World HelloWorldHello WorldHello WorldHello WorldHello World Hello World Hello
World Hello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello World Hello World Hello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello World HelloWorldHello WorldHello WorldHello WorldHello World Hello World Hello
World Hello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello World Hello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello World Hello World HelloWorldHello WorldHello WorldHello WorldHello World Hello World Hello
World
</div>
<div class="read" id="read">
<input type="checkbox">
<label for="read">Read</label>
</div>
</div>