我试图使用column属性将一些列表项对齐到列中。列正确地对齐了我的元素,但是每个元素的阴影都是破坏的。列的第一个元素的阴影的上半部分滞后于上一列。
请参阅下图和this codepen进行演示。
以下是代码:
HTML:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
CSS:
li {
width: 50px;
height: 70px;
text-align: center;
display: block;
background-color: tomato;
padding: 10px;
line-height: 70px;
-webkit-column-break-inside: avoid;
page-break-inside: avoid;
break-inside: avoid;
box-shadow: 0px 0px 9px 4px #CCC;
-webkit-box-shadow: 0px 0px 9px 4px #CCC;
-moz-box-shadow: 0px 0px 9px 4px #CCC;
}
ul {
margin: 40px;
-webkit-column-count: 4;
-webkit-column-gap: 25px;
column-count: 4;
column-gap: 25px;
width: 300px;
}
我想知道是否有办法解决此问题。我可以使用flex或任何其他网格技术,但这是我最简单方便的方法。我想知道导致这个问题的原因是什么,以及是否可以修复。如果此问题已在本网站上讨论过,请提供链接。 TIA
编辑:这似乎对mozilla工作正常,这个问题可以在chrome中看到。
答案 0 :(得分:2)
对于Chrome,您需要添加一些边距以包含足够的空间以显示阴影,以避免看到它被破坏并避免框打破,此时您需要使用{{1} }
display:inline-block;
&#13;
/* Added*/
li {
margin: 5px 0;
display: inline-block;
}
/* End added*/
li {
width: 50px;
height: 70px;
text-align: center;
background-color: tomato;
padding: 10px;
line-height: 70px;
-webkit-column-break-inside: avoid;
page-break-inside: avoid;
break-inside: avoid;
box-shadow: 0px 0px 9px 4px #CCC;
}
ul {
margin: 40px;
-webkit-column-count: 3;
-moz-column-count: 3;
column-count: 3;
-webkit-column-gap: 25px;
-moz-column-gap: 25px;
column-gap: 25px;
width: 300px;/* for 3 col, 375px for 4 cols ;) */
}
&#13;
此外,如果你计算4列,将大小设置为大约375px,或者对于3列,300px应该没问题
3年后......虫子还在。
通过<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
backface-visibility:hidden;
&#13;
/* Added*/
li {
margin: 5px 0;
display: inline-block;
backface-visibility:hidden;
}
/* End added*/
li {
width: 50px;
height: 70px;
text-align: center;
background-color: tomato;
padding: 10px;
line-height: 70px;
-webkit-column-break-inside: avoid;
page-break-inside: avoid;
break-inside: avoid;
box-shadow: 0px 0px 9px 4px #CCC;
}
ul {
margin: 40px;
-webkit-column-count: 3;
-moz-column-count: 3;
column-count: 3;
-webkit-column-gap: 25px;
-moz-column-gap: 25px;
column-gap: 25px;
width: 300px;/* for 3 col, 375px for 4 cols ;) */
}
&#13;
答案 1 :(得分:1)
你可以试试这个
li {
width: 50px;
height: 70px;
text-align: center;
display: block;
background-color: tomato;
padding: 10px;
line-height: 70px;
box-shadow: 0px 0px 9px 4px #CCC;
-webkit-box-shadow: 0px 0px 9px 4px #CCC;
-moz-box-shadow: 0px 0px 9px 4px #CCC;
margin:10px;
float:left;
}
ul {
margin: 40px;
width: 300px;
}