html - 如何根据内容调整绝对子元素的大小,包括大于父元素?
问题描述
我正在创建一个下拉菜单,并希望菜单下拉菜单能够根据其内容调整大小,而菜单“标题”保持固定宽度。因此,如果下拉项的文本比父标题长,则下拉区域将大于标题,否则,下拉菜单将按标题调整大小。下拉选项中的文本不应该换行我知道这可以通过 javascript 实现,但是可以仅使用 CSS 来完成吗?
所以我有一个带有以下 HTML 的菜单:
<div class="menu">
<div class="menu-item">
<div class="title">Menu Title 1</div>
</div>
<div class="menu-item">
<div class="title">Menu Title 2</div>
<div class="dropdown">
<div class="option">Menu Option 1</div>
<div class="option">Menu Option 2</div>
<div class="option">Long Menu Option 3</div>
</div>
</div>
<div class="menu-item">
<div class="title">Menu Title 3</div>
</div>
<div class="menu-item">
<div class="title">Menu Title 4</div>
</div>
</div>
使用以下 CSS 设置样式:
html, body, .menu{
margin:0;
padding:0;
width:400px;
}
.menu-item{
width: calc(25% - 2px);
float:left;
position:relative;
}
.title{
border: 1px solid #000
}
.dropdown{
position:absolute;
left:0;
top:100%;
background-color:#fff;
/* width:138px; /* uncomment this for desired effect */
}
.option{
border: 1px solid #000;
}
演示(添加width: 138px;
到.dropdown
样式中可以看到想要的效果):https ://codepen.io/anon/pen/LXyKBJ
解决方案
询问后不久我找到了解决方案!
添加white-space: nowrap;
到.dropdown
元素会强制文本不换行,从而将 div 扩展到父大小之外。添加min-width: 100%
可确保下拉列表不会小于父级。
我专注于宽度和显示属性,错过了这个明显的解决方案。
推荐阅读
- python - 如何在 sympy 中使用和表达微分运算符?
- flutter - Flutter 的 GetIt 与后台应用程序
- java - 使用 TypeSafeMap 强制编译类型安全
- java - 将多个 Drools DRL 文件添加到 KieBase 中,这如何影响规则的执行顺序?
- r - 如何使用 tidyverse 管道重命名具有行字符值的列?
- android - 为什么我的小部件没有占用底部导航栏中的所有空间?
- google-sheets - Google Sheets LOOKUP 函数返回错误的值?
- swift - SwiftUI 中的自动布局
- firebase - Godot Firebase 密码恢复帮助
- python - 我正在尝试使用 discord.py 制作一个不和谐的机器人命令,该命令从文本文件中提取随机引用并在聊天中打印出来