如果文本长于多级无精打采下拉导航菜单中的宽度,如何让块更改宽度

How to get block to change width if text is longer then the width in a multilevel listless drop down navigation menu

我有一个无精打采的多级下拉菜单。我有一个问题,如果 link 的文本较长,则块的宽度和高度不会扩展,并且 link 的一部分在框外。

我在 https://jsfiddle.net/JoeyD473/x57d8jbg

有一个 JSFiddle 设置
<!-- HTML -->
<nav role="navigation" id="mainNavigationBar" class="nav_ul_1">
<div class="nav_li">
    <a href="/dnd_tools" class="nav_links">Home</a>
</div>
<div class="nav_li">
        <a href="/dnd_tools/initiative_tracker" class="nav_links">Initiative Tracker <span class="glyphicon glyphicon-menu-down"></span></a>
  <div class="nav_ul_hidden">
    <div class="nav_li">
      <a href="/dnd_tools/initiative_tracker" class="nav_links">Encounters <span class="glyphicon glyphicon-menu-right"></span></a>
      <div class="nav_ul_hidden">
        <div class="nav_li">
          <a href="initiative_tracker/encounter/1">Test</a>
        </div>
        <div class="nav_li">
          <a href="initiative_tracker/encounter/2">Sort Test</a>
        </div>
      </div>
    </div>
    <div class="nav_li">
      <a href="/dnd_tools/initiative_tracker/create_encounter" class="nav_links">Create Encounter</a>
    </div>
  </div>
</div>
 <div class="nav_li">
   <a href="/logout" class="nav_links">Logout</a>
 </div>
  </nav>

CSS

    #mainNavigationBar
{
    z-index:9999;
    height:50px;
    background:linear-gradient(to bottom, #28343B 8%, #828C95 65%, #B5BDC8 100%);
    border:solid 1px #000000;
}

#mainNavigationBar > .nav_li
{
    padding:0 10px 0 10px;
}

#mainNavigationBar > .nav_li > a
{
    color:rgb(12, 81, 46);
    font-size:1.25em;
    font-weight:bold;
}

.nav_li
{
    display:inline-block;
    position:relative;
    height:49px;
    vertical-align:middle;
    line-height:49px;
    z-index:9999;
}

.nav_ul_1 .nav_ul_hidden
{
    position:absolute;
    display:none;
    color:rgb(12, 81, 46);
}

.nav_ul_1 .nav_ul_hidden a
{
    color:rgb(12, 81, 46);
    font-size:1em;
    font-weight:bold;
}

.nav_ul_1 .nav_ul_hidden .nav_li
{
    padding:0 10px 0 10px;
    background:linear-gradient(to bottom, #28343B 8%, #828C95 65%, #B5BDC8 100%);
    color:rgb(12, 81, 46);
    min-width:100%;
    min-height: 49px;
    margin-top:10px;
    border-radius:25px 25px 25px 25px;
    border:rgb(12, 81, 46) 1px outset;
    box-shadow:5px 5px 10px 0 #0F0F0F;
}

.nav_ul_1 .nav_ul_hidden .nav_li:first-child
{
    padding:0 10px 0 10px;
    color:#000000;
    width:100%;
    margin-top:-10px;
    border-radius:25px 25px 25px 25px;
    box-shadow:5px 5px 10px 0 #0F0F0F;
}

.nav_ul_1 .nav_ul_hidden .nav_li .nav_ul_hidden .nav_li
{
    margin-left:10px;
}

.nav_ul_1 .nav_ul_hidden .nav_li .nav_ul_hidden .nav_li:first-child
{
    color:rgb(12, 81, 46);
    margin-left:10px;
    margin-top: 0;
}

.nav_li:hover > .nav_ul_hidden
{
    display:block;
}

.nav_ul_hidden .nav_ul_hidden
{
    left:100%;
    top:0;
}

如果您将鼠标悬停在主动跟踪器上,然后在遇到的情况下,您会看到第二个 link 称为 "Sort Test",单词 "Test" 不在漂亮的块中,而是在其下方。

如何让块增加宽度(对于特定下拉列表中的所有 link)以适合文本?

是的,我正在使用 Bootstrap,但我不喜欢它们的下拉菜单,因为它只有一个级别,我想要无限下拉级别的可能性以及我看到的所有必需的解决方案 Javascript 我希望它严格基于 CSS。尽管这无关紧要,但以防万一后端使用 Laravel 5.2

在您的代码中添加此更改,即只需将 100% 中的 width 添加到 .nav_ul_hidden

.nav_ul_1 .nav_ul_hidden
{
    position:absolute;
    display:none;
    color:rgb(12, 81, 46);
    width:100%;
    height:auto;
}