gpt4 book ai didi

javascript - 当溢出设置为隐藏时检测溢出

转载 作者:行者123 更新时间:2023-11-28 08:10:11 24 4
gpt4 key购买 nike

我有一个有趣的问题。

背景:我有一个简单的标题。一个 Logo 和两个链接 float 在左侧,两个下拉菜单链接 float 在右侧,所有这些都包含在 100% 宽度的标题 div 中。如果我水平地缩小屏幕,两个下拉菜单链接就会落在左侧 float 元素下方(当然)。经过一些研究后,我决定在父标题 div 上使用溢出:隐藏,以便两个下拉菜单消失而不是下降到下一行。这个解决方案非常适合我的情况。但是,我发现由于overflow:hidden的解决方案,下拉菜单层在标题下方被切断了。仅供引用,我的下拉菜单是使用简单的 javascript 创建的,它在 css 类之间切换以获得下拉效果。我只是在javascript中的onclick事件函数中添加了一行,当单击菜单链接时,溢出从overflow:hidden更改为overflow:none(当然,当菜单未单击时切换回隐藏),效果很好因为如果菜单按钮可见,则应该永远不会溢出(当溢出时它们会消失并隐藏)。

问题:如果用户打开菜单(也称为单击下拉菜单链接),然后在没有先关闭菜单的情况下缩小水平滚动条,则标题的溢出仍然设置为无,因为用户没有关闭将标题切换回隐藏状态,因为菜单仍然打开。因此,我最初的问题是两个菜单链接再次落在 float 的左侧 div 下方。根据我已经在做的事情,我试图在 header 中提出某种 onchange() 事件,该事件将检测何时存在溢出,即使溢出设置为隐藏。有什么想法吗?

相关 CSS 代码:

.level1raise { //header class
background: #F8F8F8;
margin: 0px;
border-bottom: 1px solid #BCD2EE;
height: 55px;
overflow: hidden;
}
.level1drop { //alternate header class
background: #F8F8F8;
margin: 0px;
border-bottom: 1px solid #BCD2EE;
height: 55px;
overflow: none;
}

切换菜单的 Javascript 示例:

function supportdrop() {

if (document.getElementById("support").className == "hidesupportmenu") {
document.getElementById("support").className = "showsupportmenu";
document.getElementById("supportdrop").className = "supportmenuheadclicked";
document.getElementById("supportarrow").className = "uparrowimage";
document.getElementById("help").className = "hidehelpmenu";
document.getElementById("helpdrop").className = "helpmenuhead";
document.getElementById("helparrow").className = "downarrowimage"; //^THESE DEAL WITH MENU
document.getElementById("level1").className = "level1drop"; //THIS IS THE HEADER TOGGLE
} else if (document.getElementById("support").className == "showsupportmenu") {
document.getElementById("support").className = "hidesupportmenu";
document.getElementById("supportdrop").className = "supportmenuhead";
document.getElementById("supportarrow").className = "downarrowimage"; //^MENU
document.getElementById("level1").className = "level1raise"; //HEADER TOGGLE
}

}

如果您需要我发布更多代码,我会的,但我认为我所包含的内容显示了我正在做的事情,否则请告诉我。我会发布一个尝试的解决方案,但我不确定要尝试什么解决方案。我试图避免使用 JQuery。谢谢!

最佳答案

我为任何其他尝试类似路径的人提出了一个解决方案。因为 (1) 我使用页面的 100% 宽度并且页面是动态的,所以我可以禁用水平滚动条,并且 (2) 标题内元素的宽度不会改变,因此我可以在之前添加所需的最小宽度下拉菜单链接下降到下一行,我可以使用以下解决方案:

HTML:

<body onresize="checkwidth()">

Javascript:

function checkwidth() {

var currentwidth = window.innerWidth || document.documentElement.clientWidth ||
document.body.clientWidth;

if (currentwidth < 770) {

document.getElementById("level1").className = "level1raise";
document.getElementById("help").className = "hidehelpmenu";
document.getElementById("helpdrop").className = "helpmenuhead";
document.getElementById("helparrow").className = "downarrowimage";
document.getElementById("support").className = "hidesupportmenu";
document.getElementById("supportdrop").className = "supportmenuhead";
document.getElementById("supportarrow").className = "downarrowimage";

} else {

document.getElementById("level1").className = "level1drop";

}

}

工作精美并且是跨浏览器的。有点粗糙,但是哦,好吧。

关于javascript - 当溢出设置为隐藏时检测溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24310364/

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