Html 如何使元素与其父元素一起增加高度(未指定父元素高度)

Html 如何使元素与其父元素一起增加高度(未指定父元素高度),html,css,Html,Css,这个问题已经被问过好几次了,但从我所看到的情况来看,所有人都至少有4-5岁。因此,我想知道是否有一种新的更好/更简单的方法来做到这一点 我有一个菜单,里面有一个按钮,菜单的大小会根据贴在菜单上的标志而变化。因此,当我上传一个大徽标时,菜单的高度被拉伸,但按钮的高度保持不变。菜单栏没有指定的高度,因此height:100%将不起作用 图像更清晰: 白色栏是我的菜单,灰色区域是我的按钮 html标记: <nav class="navbar navbar-default navbar-stat

这个问题已经被问过好几次了,但从我所看到的情况来看,所有人都至少有4-5岁。因此,我想知道是否有一种新的更好/更简单的方法来做到这一点

我有一个菜单,里面有一个按钮,菜单的大小会根据贴在菜单上的标志而变化。因此,当我上传一个大徽标时,菜单的高度被拉伸,但按钮的高度保持不变。菜单栏没有指定的高度,因此
height:100%
将不起作用

图像更清晰:

白色栏是我的菜单,灰色区域是我的按钮

html标记:

<nav class="navbar navbar-default navbar-static-top m-b-0">
    <div class="navbar-header">
        <a class="navbar-toggle hidden-sm hidden-md hidden-lg " href="javascript:void(0)" data-toggle="collapse" data-target=".navbar-collapse"><i class="ti-menu"></i></a>
        <div class="top-left-part"><a class="logo" href="index.php"><img style="height:100%;" src="logo.png" alt="home" /></a></div>
        <ul class="nav navbar-top-links navbar-left hidden-xs">
            <li><a href="javascript:void(0)" class="open-close hidden-xs waves-effect waves-light"><i class="icon-arrow-left-circle ti-menu"></i></a></li>
        </ul>
        <ul class="nav navbar-top-links navbar-right pull-right">
            <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#"><b class="hidden-xs"><i class="fa fa-user"></i> User</b> </a>
                <ul class="dropdown-menu dropdown-user animated flipInY">
                    <li>item</li>
                    <li>item</li>
                    <li>item</li>
                    <li>item</li>
                    <li>item</li>
                    <li>item</li>
                    <li>item</li>
                </ul>
            </li>
        </ul>
    </div>
</nav>

使用CSS,这可以通过父级的
display:table
和子级的
display:table cell
来实现。但我不建议你在你目前的情况下使用它,因为你有很多div,导航条等等

所以我提出了一个JQ解决方案。我希望你不介意。它很容易理解,如果需要,也很容易修改

如果有帮助,请告诉我

请看这里的小提琴>

JQ代码:

var newHeight = $(".top-left-part").height()
$(".pull-right > li.dropdown > a.dropdown-toggle").height(newHeight)

为了垂直对齐文本,我添加了

a.dropdown-toggle {
    display:flex
    align-items:center;
}  

使用CSS,这可以通过父级的
display:table
和子级的
display:table cell
来实现。但我不建议你在你目前的情况下使用它,因为你有很多div,导航条等等

所以我提出了一个JQ解决方案。我希望你不介意。它很容易理解,如果需要,也很容易修改

如果有帮助,请告诉我

请看这里的小提琴>

JQ代码:

var newHeight = $(".top-left-part").height()
$(".pull-right > li.dropdown > a.dropdown-toggle").height(newHeight)

为了垂直对齐文本,我添加了

a.dropdown-toggle {
    display:flex
    align-items:center;
}  

下面是一个可能会有所帮助的概念验证解决方案。此解决方案仅使用CSS,不需要JavaScript

.wrap
成为包含导航、徽标等内容的父容器

.wrap
中,在右侧创建一个包含按钮的受保护区域。为此,请指定
右填充:100px
(例如),然后指定
位置:相对

现在可以定义一个名为
。右面板
的元素,该元素将包含按钮等。对于
。右侧面板
,指定
位置:绝对
,并将偏移设置为
顶部:0
底部:0
,以强制其保持在父块的高度,然后
右侧:0
将其固定在父块的右侧,然后设置
宽度:100px
(例如)

更改父容器中的内容时,
。右侧面板将以响应方式显示父容器的高度

这里的限制是您需要为右侧面板/元素指定宽度,这可能不会太大,因为您了解按钮的设计(如尺寸)

对于没有徽标或徽标的高度小于按钮固有高度的情况,可能需要为父级
指定
最小高度
。wrap

注意:如果您使用的是像Bootstrap这样的CSS框架,您可能需要做更多的工作来将其融入浮动父级,但我还没有尝试过

.wrap{
边框:1px点蓝色;
位置:相对位置;
右边填充:100px;
}
.右面板{
边框:1px灰色虚线;
位置:绝对位置;
右:0;
排名:0;
底部:0;
宽度:100px;
}

一些标题可以是文本或徽标。
一些内容等等

按钮什么的


以下是一个概念验证解决方案,可能会有所帮助。此解决方案仅使用CSS,不需要JavaScript

.wrap
成为包含导航、徽标等内容的父容器

.wrap
中,在右侧创建一个包含按钮的受保护区域。为此,请指定
右填充:100px
(例如),然后指定
位置:相对

现在可以定义一个名为
。右面板
的元素,该元素将包含按钮等。对于
。右侧面板
,指定
位置:绝对
,并将偏移设置为
顶部:0
底部:0
,以强制其保持在父块的高度,然后
右侧:0
将其固定在父块的右侧,然后设置
宽度:100px
(例如)

更改父容器中的内容时,
。右侧面板将以响应方式显示父容器的高度

这里的限制是您需要为右侧面板/元素指定宽度,这可能不会太大,因为您了解按钮的设计(如尺寸)

对于没有徽标或徽标的高度小于按钮固有高度的情况,可能需要为父级
指定
最小高度
。wrap

注意:如果您使用的是像Bootstrap这样的CSS框架,您可能需要做更多的工作来将其融入浮动父级,但我还没有尝试过

.wrap{
边框:1px点蓝色;
位置:相对位置;
右边填充:100px;
}
.右面板{
边框:1px灰色虚线;
位置:绝对位置;
右:0;
排名:0;
底部:0;
宽度:100px;
}

一些标题可以是文本或徽标。
一些内容等等

按钮什么的


javaScript是一个选项吗?javaScript是一个选项吗?太棒了,我已经用javaScript修复了它,但这比我拥有的代码要少。此外,文本现在垂直居中。要垂直对齐文本,我在
a.下拉菜单上添加了
display:flex
,以及
align items:center是的,我注意到了,干得不错,太棒了,我已经用javascript修复了它,但这比我的代码要少。还有文本