我有几个相同的HTML元素一个接一个地出现:
<span>1</span>
<span>2</span>
<span>3</span>
我正在寻找使用仅限CSS
在元素之间添加空间的最佳方式[no space] [1] [space 10px] [2] [space 10px] [3] [no space]
此外:
更新
看起来我不清楚。我不想使用任何其他HTML MARKUP,如
<span></span> <span></span> <span class="last_span"></span>
我不想使用表格
我希望CSS
自动定位第一个和最后一个范围我不想使用javascript
可选要求:最后一个跨度可能不是父标记的最后一个,但它将是父标记的最后一个。 Spans之间没有任何其他标签。
答案 0 :(得分:195)
这样做的好方法是:
span + span {
margin-left: 10px;
}
每个span
前面都有一个span
(因此,除了第一个span
之外的每个margin-left: 10px
都会有{{1}}。
以下是对类似问题的更详细解答:Separators between elements without hacks
答案 1 :(得分:23)
只需使用保证金或填充。
在您的具体情况下,您只能在第二个margin:0 10px
上使用<span>
。
<强>更新强>
这是一个很好的CSS3解决方案(jsFiddle):
span {
margin: 0 10px;
}
span:first-of-type {
margin-left: 0;
}
span:last-of-type {
margin-right: 0;
}
自Internet Explorer 9以来,支持使用:nth-child()
,:last-child
,:first-of-type
等选择器进行高级元素选择。
答案 2 :(得分:9)
您可以利用span
是内联元素
span{
word-spacing:10px;
}
但是,如果跨越
中有多个文字,此解决方案将会中断答案 3 :(得分:6)
这很容易。
您可以通过排除第一个元素来设置元素样式,只需一行代码:
span ~ span {
padding-left: 10px;
}
并完成,没有类操作。
答案 4 :(得分:3)
您可以这样写:
span{
margin-left:10px;
}
span:first-child{
margin-left:0;
}
答案 5 :(得分:3)
span:not(:last-child) {
margin-right: 10px;
}
答案 6 :(得分:1)
<span>
是一个内联元素,所以你不能在它们之间留出间距而不会使它成为块级别。
试试这个
水平
span{
margin-right: 10px;
float: left;
}
垂直
span{
margin-bottom: 10px;
}
与所有浏览器兼容。
答案 7 :(得分:1)
您应该将元素包装在容器中,然后使用新的CSS3功能,例如css grid,free course,然后使用为您的特定问题创建的grid-gap:value
span{
border:1px solid red;
}
.inRow{
display:grid;
grid-template-columns:repeat(auto-fill,auto);
grid-gap:10px /*This add space between elements, only works on grid items*/
}
.inColumn{
display:grid;
grid-template-rows:repeat(auto-fill,auto);
grid-gap:15px;
}
&#13;
<div class="inrow">
<span>1</span>
<span>2</span>
<span>3</span>
</div>
<div class="inColumn">
<span>4</span>
<span>5</span>
<span>6</span>
</div>
&#13;
答案 8 :(得分:0)
span.middle {
margin: 0 10px 0 10px; /*top right bottom left */
}
<span>text</span> <span class="middle">text</span> <span>text</span>
答案 9 :(得分:0)
或者,您可以使用以下组合立即正确设置边距而不是覆盖它,而不是设置边距而不是覆盖它:
span:not(:first-of-type) {
margin-left: 5px;
}
span:not(:last-of-type) {
margin-right: 5px;
}
答案 10 :(得分:0)
将这些规则添加到父容器中:
display: grid
grid-auto-flow: column
grid-column-gap: 10px
答案 11 :(得分:0)
如果要对齐各种项目,并且希望在所有面上都具有相同的边距,则可以使用以下内容。不论类型如何,带有container
的每个元素都将获得相同的周围空白。
.container {
display: flex;
}
.container > * {
margin: 5px;
}
如果您希望将项目连续对齐,但是第一个元素触摸container
的最左边缘,并且所有其他元素均等间距,则可以使用以下方法:
.container {
display: flex;
}
.container > :first-child {
margin-right: 5px;
}
.container > *:not(:first-child) {
margin: 5px;
}