css - 根据里面的内容调整绝对定位元素的宽度
问题描述
我有一个 div(container-right)
绝对位于右侧;
在里面我有一个使用复选框的切换(显示隐藏);点击文本 - Tomandji。
切换显示 div( ),位于andcontent
下方。container-right
container
我需要绝对定位的 div( content
), width 根据里面的内容来调整;我需要这个,因为内容是动态的。
在示例中,我有一个列表。
我希望它ul/li
是水平的,并在必要时低于容器(红色)。
我不希望content
获得(红色)的所有宽度container
,而只是根据内部元素从右到左进行调整;
所以,有第一第二第三内联。
.toggle .trigger {
cursor: pointer; }
.toggle input[type='checkbox'].trigger {
display: none; }
.toggle .content {
display: none; }
.toggle .trigger:checked ~ .content {
display: block; }
.container {
height:120px;
position: relative;
background-color:red;
}
.container-right {
background: #0069aa;
height: 100%;
position: absolute;
right: 0;
top: 0; }
.container-right .toggle {
padding: 0 1rem;
position: relative;
text-align: center;
top: 50%;
transform: translateY(-50%);
}
.container-right .toggle .trigger {
color: #fff;}
.container-right .toggle .trigger * {
display: block; }
.container-right .toggle .trigger::after {
content: "a";
}
.container-right .toggle .trigger:checked ~ label {
color: #4FA738; }
.container-right .toggle .trigger:checked::after {
content: "x"; }
.container-right .toggle .content {
background: #0069aa;
position: absolute;
right: 0;
display:none;
top: 71.5px; }
.container-right .toggle .content ul li {
display: inline-block; }
ul {
padding:0
}
<div class="container">
<div class="container-right">
<div class="toggle">
<input type="checkbox" id="menu-toggle" class="trigger"/>
<label for="menu-toggle" class="trigger">
<span>Tomandji</span>
</label>
<div class="content">
<ul>
<li class="c-list__item"><a href="#">First link</a></li>
<li class="c-list__item"><a href="#">Second link</a></li>
<li class="c-list__item"><a href="#">Third link</a></li>
</ul>
</div>
</div>
</div>
解决方案
正如@CBroe 所述,您可以添加white-space:nowrap
到.content
. 下面是一个工作示例。
.toggle .trigger {
cursor: pointer; }
.toggle input[type='checkbox'].trigger {
display: none; }
.toggle .content {
display: none; }
.toggle .trigger:checked ~ .content {
display: block; }
.container {
height:120px;
position: relative;
background-color:red;
}
.container-right {
background: #0069aa;
height: 100%;
position: absolute;
right: 0;
top: 0; }
.container-right .toggle {
padding: 0 1rem;
position: relative;
text-align: center;
top: 50%;
transform: translateY(-50%);
}
.container-right .toggle .trigger {
color: #fff;}
.container-right .toggle .trigger * {
display: block; }
.container-right .toggle .trigger::after {
content: "a";
}
.container-right .toggle .trigger:checked ~ label {
color: #4FA738; }
.container-right .toggle .trigger:checked::after {
content: "x"; }
.container-right .toggle .content {
background: #0069aa;
position: absolute;
right: 0;
display:none;
top: 71.5px;
/* ###### Add this ###### */
white-space: nowrap;
}
.container-right .toggle .content ul li {
display: inline-block; }
ul {
padding:0
}
<div class="container">
<div class="container-right">
<div class="toggle">
<input type="checkbox" id="menu-toggle" class="trigger"/>
<label for="menu-toggle" class="trigger">
<span>Tomandji</span>
</label>
<div class="content">
<ul>
<li class="c-list__item"><a href="#">First link</a></li>
<li class="c-list__item"><a href="#">Second link</a></li>
<li class="c-list__item"><a href="#">Third link</a></li>
</ul>
</div>
</div>
</div>
推荐阅读
- swift - UIStatusBarStyle 不会改变
- python - 快速验证生成的字符串(+数学)
- mysql - Mysql left join 从结果中删除重复值
- laravel - VueJS + element.eleme.io 如何为 el-select 设置默认选项值
- ios - 将 [String:AnyObject] 类型的字典分配给 [String: String] 给出零错误
- ruby-on-rails - ActiveAdmin 和动态 Rails 命名空间
- core-data - 核心数据 NSManagedObject 转换为 json 格式
- python - 无法在 codechef 上解决 Python 中的 NZEC 错误,尽管它在 IDE 上给出了正确的输出
- ios - iOS - 大标题隐藏了我的身体顶部
- r - 将数据框的列转换为因子