jquery - 单击时展开 li 元素 100% 宽度并将同级元素推出

标签 jquery html css

我想要将 li 元素排列在任意数量的列中。

enter image description here

<ul>
    <li class="yellow">
        Yellow Block
    </li>
    <li class="red">
        Red Block
    </li>
    <li class="green">
        Green Block
    </li>
</ul>

当单击其中一列时,我希望该 li 增长到 100%,并将其同级列推出 View 之外。

$('li').on("click", function(){
    $(this).addClass("active");
    $(this).siblings().addClass("nonActive");
})

我宽松地使用术语“ View 的插入”,尽管这只是所需的视觉效果,动画可能涉及插入/移动、隐藏或宽度变化,以看起来最干净的为准。

我尝试过的:

将点击宽度设置为 100%,将同级宽度设置为 0%:

https://jsfiddle.net/bo28dy10/

.active{
    width: 100%;
}
.nonActive{
    width 0%;
}

问题:收缩时会导致自动换行,无法设置无换行,因为某些情况下标签会以全宽度换行。

将点击宽度设置为 100%,将包装器设置为溢出:隐藏: https://jsfiddle.net/gqqeq4wu/

.active{
    width: 100%;
}
ul{
    overflow: hidden;
}

问题:这只是迫使 sibling 向下排,而不是将它们推出,我无法在父级上设置固定高度。

将点击宽度设置为 100%,将同级设置为显示:无: https://jsfiddle.net/xf0om99t/

.active{
    width: 100%;
}
.nonActive{
    display:none;
}

问题:您无法在显示上使用动画:无,我希望这是一个平滑的过渡。

那么模拟这种外观的正确方法是什么?

(奖励:如果我可以去掉列宽(即 33.33%),并且让这些列自动扩展以均匀地填充父级,那就太好了,我可能在考虑 Flexbox?)

最佳答案

你就快到了

overflow:hidden;
white-space:nowrap;

就可以了。漂亮又流畅

看这里

https://jsfiddle.net/bo28dy10/2/

关于jquery - 单击时展开 li 元素 100% 宽度并将同级元素推出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39664089/

相关文章:

javascript - 当有波斯语字符时,如何改变文本区域的方向?

javascript - FullCalendar updateEvent 不起作用 : Cannot read property 'clone' of undefined

javascript - 背景网址,只有一张图片有效

javascript - 如何将缩略图添加到提及当前幻灯片的光滑 slider 的点

html - 选择元素的文本对齐在 IE 中不起作用

jquery - 背景图像在不同尺寸上改变宽度和高度

javascript - AJAX : How to make loaded page appear below the page that calls it

html - CSS:使用 Materialize 框架在 Chrome 中截断 header

html - 如何水平对齐 fieldset 元素?

javascript - Cheerio.js lodash 依赖