首先,我的 CSS 技能是……正在进行中的工作。但到目前为止,我已经成功地将一堆列表项排列在一个网格中。http://jsfiddle.net/ashanova/Y4SR3/2/
我现在想做的是将列表项居中。我试图替换float
为,inline
但它会导致每个项目的width
andheight
崩溃。我还想在每个列表项中水平和垂直居中文本,理想情况下省略(不是单词)溢出文本。作为最后一个规范,如果可能的话,我只想将 CSS 修改为 theul
及其子项。
首先,我的 CSS 技能是……正在进行中的工作。但到目前为止,我已经成功地将一堆列表项排列在一个网格中。http://jsfiddle.net/ashanova/Y4SR3/2/
我现在想做的是将列表项居中。我试图替换float
为,inline
但它会导致每个项目的width
andheight
崩溃。我还想在每个列表项中水平和垂直居中文本,理想情况下省略(不是单词)溢出文本。作为最后一个规范,如果可能的话,我只想将 CSS 修改为 theul
及其子项。
虽然当您处理多个父元素和子元素以及在 2 个轴上居中(/中间)时,语言有点不清楚,但我认为如果其他答案不是您想要的,您可能真的想要display: table-cell
.
检查这个小提琴。
如果你给你的li
元素display: table-cell
,text-align: center
和vertical-align: middle
,我认为文本会适当地安排自己。不幸的是,table-cell
元素不接受边距,所以我添加了一个 10px 的边框。
为了完成溢出文本的截断和椭圆的插入,您需要使用某种 javascript。
更新
通过许多其他答案和评论了解了更多关于您所追求的内容后,我在这里提出了一个更好的解决方案:http: //jsfiddle.net/crowjonah/jx8sD/
您需要做的是<a class="list-item">
在元素内插入标签li
,并使用以下 CSS:
.tile li {
background-color: white;
display: block;
float: left;
margin: 10px;
overflow: hidden;
}
.tile li a.list-item{
display: table-cell;
vertical-align: middle;
height: 75px;
text-align: center;
width:75px;
}
Text-align: center
将使您的列表项与中心对齐。Vertical-align: text-top
将项目垂直对齐到中心。
这将做你想要的。内联块项目的边框很痛苦,所以我使用边框使其看起来正确。
.tile li {
background-color: white;
display:inline-block;
border: 10px solid red;
width: 75px;
height: 75px;
text-align:center;
display:table-cell;
vertical-align:middle;
overflow: hidden;
}