gpt4 book ai didi

javascript - 从文档流中删除元素

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:49 27 4
gpt4 key购买 nike

我正在使用 [type=checkbox] 为我创建的自定义下拉菜单记录用户输入。我也将它用于浏览器中的 required 功能。

enter image description here

但是,我遇到的问题是该元素似乎至少需要 1pxheight 才能在用户访问时触发浏览器警告消息尝试在不填写该部分的情况下提交表格。这是一个问题,因为下拉菜单的 heightauto,所以一旦显示浏览器警告消息,它就会将所有内容向上移动,以便有一个 >1px 底部间隙。

enter image description here

值得注意的是,只有在显示警告消息时或显示警告消息后,内容才会发生变化。

我知道我可以通过 positioning 元素 absolutely 使用 JS 来解决这个问题,但我正在尝试尽可能少地使用 JS。因此,我为容器指定了一个 position: relative,并定位该元素,使其始终显示在容器元素的底部中心,就像所有其他字段一样。

#dropdown {
position: relative;
}

#subject {
width: 1px;
height: 1px;
position: absolute;
top: 100%;
left: 50%;
transform: translateX(-50%);
pointer-events: none;
padding: 0;
opacity: 0;
margin: 0;
}

正如我上面所说,我已经尝试将高度设置为 0,但这样做不会触发警告消息。我还尝试了几个不同的 display 值(我将在完成此设置后检查其余值)。我也试过应用 position: absolute; bottom: 0; 到列表中的最后一个选项。这些东西都不起作用。

const
option = document.querySelector('#option')

document.querySelector('#dropdown').addEventListener('click', function(){
option.style.maxHeight = option.scrollHeight + 'px'
})
#dropdown {
position: relative;
overflow: hidden;
box-sizing: border-box;
border: solid red 3px;
}

#label {
padding: 50px;
}

#option {
max-height: 0;
transition:
.5s max-height;
}

#option:hover {
background: skyblue;
}

#checkbox {
width: 5px;
height: 5px; /* added extra pixels to emphasize the issue */
position: absolute;
top: 100%;
left: 50%;
transform: translateX(-50%);
pointer-events: none;
padding: 0;
opacity: 0;
margin: 0;
}
<form>
<div id='dropdown'>
<div id='label'>Subject</div>
<div id='option'>Last Option</div>
<input id='checkbox' type='checkbox' required />
</div>
<input type='submit' />
</form>

有人知道我如何仅使用 CSS 就能做到这一点吗?

容器的 heightauto 是否有可能?

最佳答案

使用 position: staticdisplay: block 似乎对我有用。这确实使工具提示出现在 div 的顶部,但是:

const option = document.getElementById('option')

document.getElementById('dropdown').addEventListener('click', function(){
option.style.maxHeight = option.scrollHeight + 'px'
})
#dropdown {
position: relative;
overflow: hidden;
box-sizing: border-box;
border: solid red 3px;
}

#label {
padding: 50px;
}

#option {
max-height: 0;
transition:
.5s max-height;
}

#option:hover {
background: skyblue;
}

#checkbox {
/* display: block; */
width: 100%;
/* height: 11px; */
position: absolute;
pointer-events: none;
bottom: 0;
padding: 0;
opacity: 0;
margin: 0;
background-color: #0f0f0f;
width: 5px;
left: 50%;
}

#checkbox {

}
<form>
<div id='dropdown'>
<div id='label'>Subject</div>
<div id='option'>Last Option</div>
<input id='checkbox' type='checkbox' required />
</div>
<input type='submit' />
</form>

我发现使用 top: 100%; 是这里的问题。

关于javascript - 从文档流中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com