我想在我的flexbox导航菜单之间添加项目符号,但只想让它们出现在同一行的flex项目之间。不要出现在行首或行尾,并且如果flex项目自己独占一行,则根本不要出现。
我一直在使用这个问题(CSS styling for horizontal list with bullet only between elements)作为起点,但修改了前两个答案,使其适用于flexbox。
这是我的代码: http://codepen.io/anon/pen/EjQzWZ JS:
CSS(基本上与我链接到的原始问题完全相同):
我认为问题是由于项目符号添加的额外空间引起的。
我认为完全通过CSS而不是JS来解决它会更简单和更干净,但我不确定flexbox项目是否可以实现这一点。尽管flexbox项目似乎占用比其内容更宽的宽度,但CSS选择器 ::after 似乎只计算实际内容宽度。
我的JS出了什么问题?我能让它更好/更干净吗?
我一直在使用这个问题(CSS styling for horizontal list with bullet only between elements)作为起点,但修改了前两个答案,使其适用于flexbox。
这是我的代码: http://codepen.io/anon/pen/EjQzWZ JS:
<script>
$(function() {
var lastElement = false;
$("ul li").each(function(index) {
if (lastElement && lastElement.offset().top == $(this).offset().top) {
$(lastElement).after( $('<li>').attr('class', 'bullet') );
}
lastElement = $(this);
});
});
</script>
CSS(基本上与我链接到的原始问题完全相同):
<style>
.bullet {
width: 6px;
height: 7px;
background-position: 50% 50%;
background-repeat: no-repeat;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAOElEQVQI113M0Q3AIBRC0aM76P7jmHSmSj/6mibyc4EQkEEWuYtDmU1SXO1d6H7tjgupIl8+P+cD22cff9U1wbsAAAAASUVORK5CYII=);
}
</style>
大多数情况下,一切都正确渲染。但在某些浏览器宽度下,会出现不应该存在的项目符号。例如,如果将窗口调整为678像素宽(根据codepen.io计数器显示在屏幕中央),当它不应该时,顶部行右侧会出现一个项目符号。(根据浏览器的不同,它可能在678像素下正常工作,但有几个地方确实会发生,我只在Chrome和IE11上进行了测试)。
我认为问题是由于项目符号添加的额外空间引起的。
我认为完全通过CSS而不是JS来解决它会更简单和更干净,但我不确定flexbox项目是否可以实现这一点。尽管flexbox项目似乎占用比其内容更宽的宽度,但CSS选择器 ::after 似乎只计算实际内容宽度。
我的JS出了什么问题?我能让它更好/更干净吗?