【问题标题】:Bootstrap list-group-item display引导列表-组-项目显示
【发布时间】:2019-12-24 18:55:40
【问题描述】:

我有一个与 Bootstraps 列表组类一起显示的链接列表。我正在尝试向其中一个链接添加一个很棒的字体图标。我有 jquery 代码,当它被点击时会改变图标。问题是,如果我在链接中添加一个跨度来保存图标,则该图标将显示在下一行。我发现这是由于 display:block 行。如果我删除它,该图标将显示在与链接相同的行上,但链接的整体格式会失去列表组的外观。这是我的jsfiddle。您可以看到 stock 类的第一个 div 在下一行显示图标,而我的类在一行显示图标。

我不知道如何使用 jsfiddle 来显示链接的实际外观,但我希望这不会影响答案。有没有办法让它工作,或者我应该更改图标代码以使用带有 javascript 函数的 onclick?

    <style>
    .my-list-group-item {
     position: relative;
     /*display: block;*/
     padding: 0px 15px; /* adjust here */
     margin-bottom: -1px;
     border: 1px solid #ddd;
     line-height: 1em /* set to text height */
    }
    </style>

    <div class="list-group list-group-flush">
    <div>
    <a class="list-group-item list-group-item-action" href="example.com">Link 1</a>
    <span class="more far fa-thumbs-down" id="parent-1"></span>
    </div>

    <div>
    <a class="my-list-group-item-action" href="example.com">Link 1</a>
    <span class="more far fa-thumbs-down" id="parent-2"></span>
    </div>
    </div>

    <script>
    $(".more").click(function() {  

     var id = this.id;
     $("#"+id).toggleClass('fa-thumbs-up fa-thumbs-down'); 
    });
    </script>

【问题讨论】:

  • 如果我理解正确,您希望两者 () 出现在一行中,但您的代码无法正常工作,因为它没有显示在单行! ?
  • 我需要两个跨度出现在一行上。如果我在 之前移动第二个跨度,那么一切都会按我的意愿显示。但是由于保存图标的第二个跨度是链接的一部分,因此单击图标时不会调用 jquery 函数。如果我把它放在链接代码之外,jquery 可以工作,但图标会出现在第二行。我希望这能让它更清楚。
  • 我解决了你的问题,如果我理解正确的话。固定代码在 div 标签下的同一行中有一个 span 标签和一个标签。对吗?
  • 你能把代码给我看看吗?

标签: bootstrap-4 itemgroup


【解决方案1】:

您的代码中的一切都很好,一切都与设计有关。所以我为你找到了两种方法:

1-在标签中发送跨度标签:

$(".more").click(function() {  
 
 var id = this.id;
 $("#"+id).toggleClass('fa-thumbs-up fa-thumbs-down'); 
 
});
.float-left {
  float: left;
}
.cen {
  height: 100% !important;
  padding : 5px;
  padding-left : 0 !important;
} 
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.css" rel="stylesheet"/>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list-group list-group-flush"> 
<a class=" list-group-item list-group-item-action" href='#'>Link 1
<span class="cen more far fa-thumbs-down float-left mr-1" id="parent-1"></span>
</a>
</div>

2-i 使用 z-index 和负边距:

$(".more").click(function() {  
 
 var id = this.id;
 $("#"+id).toggleClass('fa-thumbs-up fa-thumbs-down'); 
 
});
span {
  margin-top : -30px !important;
  z-index : 1;
  padding-left : 10px;
  width : 0 !important;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list-group list-group-flush"> 
<a class=" list-group-item list-group-item-action" href='#'>Link 1</a>
<span class="cen more far fa-thumbs-down float-left mr-1" id="parent-2">

</span>
</div>

我希望它可以解决您的问题,或者给您一个想法。

【讨论】:

  • 感谢您的代码。但是,它不能满足我的需要。我已经更新了我的 jsfiddle - jsfiddle.net/user3052443/7Lakygch/33 - 链接 1 正在使用您的代码。这样做的目的是显示指向页面的链接,如果有与之相关的页面,则向下图标将显示它们。但是对于链接 1,它只是一个链接,因此无法正常工作。链接 2 和 3 正在使用您的第二种方法,但我无法让它们正确显示。链接 4 和 5 显示了原始问题。就链接和上/下部分而言,它们可以按我的意愿工作。但只有第一个图标发生变化,外观不正确。
  • 确定您想要的第一步:1-当用户单击不同的项目时,该项目的重击图标不会更改为链接 1。 2- 您希望项目水平显示还是垂直显示?
  • 这是一个链接列表。如果其中一个链接有子链接,那么它旁边应该会出现一个图标。如果单击父链接,它将充当普通链接并加载其编码的任何页面。但是如果单击它旁边的图标,则会显示子链接。在这种情况下,页面不会重新加载。感谢您耐心地理解这一点。我意识到如果不能看到它是很困难的。此外,在您之前的示例中,您展示了 mr-1 类。这是一个引导类还是只是一个错字?
  • 是的,这意味着右边距 1 像 pl-1 意味着向左填充 - 它不是 1px 边距或填充,您可以在引导文档中看到所有这些,我认为您可以使用引导折叠 2- 5 个父母,所以当用户点击父母 1 时它会折叠其他父母,看看这个 jfiddle jsfiddle.net/0wgr7bms
  • 感谢您的努力,但仍然不正确。如果您添加 href="somepage" 它会接管跨度,因此图标不会更改。我查看了折叠选项,但该部分代码已损坏,因此不需要该选项。我认为这更像是一个 CSS 问题而不是 Bootstrap 问题。感谢您解释 mr-1。我以前从未见过。如果我找到解决方案,我将继续使用它并在此处发布。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2020-07-23
  • 2021-01-24
  • 2017-07-31
  • 2019-08-19
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多