【问题标题】:How to overlap appended li items in CSS如何在 CSS 中重叠附加的 li 项目
【发布时间】:2019-05-21 19:54:33
【问题描述】:

我创建了许多按钮,当单击这些按钮时,会在 ul 父级中附加和删除包含图像的 li 项。

由于这些 li 项目在 html 中不是静态的,因此用户可以根据单击按钮的顺序以任何顺序添加它们。基本上是 DOM 元素的添加和删除。

$(function() {
$(".addToms").click(function () {
    if ($("li").is('#tomato'))
       $("li").remove('#tomato');     
    else
        $("ul").prepend('<li class="centerUL" id="tomato"><img src="tomato.jpg"></li>');
    });
});

$(function() {
$(".addLettuce").click(function () {
    if ($("li").is('#lettuce'))
       $("li").remove('#lettuce');    
    else
        $("ul").prepend('<li class="centerUL" id="lettuce"><img src="lettuce.jpg"></li>');
    });
});

效果很好。

<div class="addToms">tomato</div>
<div class="addLettuce">lettuce</div>

<ul class="centerUL">

</ul>

我的问题是如何重叠这些动态创建的包含图像的列表项??

我了解 z-index 的概念是如何工作的,但我无法为每个 li 项目设置静态位置,因为我不知道用户将按什么顺序添加哪些 li 项目,所以任何静态或数字我猜值设置不起作用。

如果有人可以提供帮助,请在帖子中查看。

【问题讨论】:

    标签: html css html-lists z-index overlap


    【解决方案1】:

    像这样:

    ul.centerUL {
       position: relative;
    }
    

    这会将您的&lt;UL&gt; 设置为原点。

    .centerUL li {
       position: absolute;
       top: 0;
       left: 0
    }
    

    这将定位您的&lt;LI&gt;

    如果您想独立定位您的 LI,您可以在创建它们时为它们内联样式:

    $("ul").prepend('<li style="'+ someCounter +px'" id="tomato"><img src="tomato.jpg"></li>');
    

    请注意,ID 应该是唯一的,如果您有多个元素,则您的 id="tomato" 是错误的。

    【讨论】:

    • 谢谢,太好了。你能帮忙解释一下‘+ someCounter +px’”代码是指什么意思吗?抱歉,我只写了 6 个月的代码,很想了解其中的逻辑。
    • 在您的代码顶部:var someCounter = 0,然后在您的点击中,您可以说:someCounter = someCounter +10,然后在每次新点击时它会向下移动 10px。
    • 再次感谢。我很想支持您的回答,但我无法获得单击功能以将新附加的 li 项目添加到通常在屏幕上低 10px 的位置。我可以在正在应用和工作的附加函数中使用内联样式,但我不明白当你建议的内联“样式”标签内设置时,创建变量如何将元素移动 10px。您提交的答案正是我想要的,听起来很棒,但我无法让它发挥作用。它实际上停止了当前所有其他脚本的工作。
    猜你喜欢
    • 2015-12-17
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    相关资源
    最近更新 更多