Rob*_*jic 8 html css html-table
我需要在标题文本的两侧创建一个标题长度相等的标题,并在行和文本之间创建一个固定大小的填充.文本会有所不同,因此不能设置宽度.这些行应占用标题容器中可用的所有剩余宽度.标题文字不得设置背景,因为它背后的背景会有所不同.像这样的东西:
-------------------------------------------------- -------一些文字----------------------------------------- ----------------
我用表解决了它:
<table width="100%">
<td><hr /></td>
<td style="width:1px; padding: 0 10px; white-space: nowrap;">Some text</td>
<td><hr /></td>
</table>?
Run Code Online (Sandbox Code Playgroud)
你可以在这里试试:http://jsfiddle.net/md2dF/3/
从语义上讲,这是一个非常糟糕的解决方案,标题与表格数据无关.没有桌子你会怎么做?
总结一下(因为建议的解决方案都忽略了一个或多个要求):
Ger*_*der 21
没有任何技巧:
fieldset.title {
border-top: 1px solid #aaa;
border-bottom: none;
border-left: none;
border-right: none;
display: block;
text-align: center;
}
fieldset.title legend {
padding: 5px 10px;
}Run Code Online (Sandbox Code Playgroud)
<fieldset class="title">
<legend>Some text</legend>
</fieldset>Run Code Online (Sandbox Code Playgroud)
没有任何背景颜色或图像:
<div>
<div><hr></div>
<span>Some text</span>
<div><hr></div>
</div>?
Run Code Online (Sandbox Code Playgroud)
CSS:
div {
width:300px;
text-align:center;
display:table;
}
div > div {
display:table-cell;
vertical-align:middle;
}
div > span {
white-space:nowrap;
}?
Run Code Online (Sandbox Code Playgroud)
适用于IE8 +
没有任何图像:
<div>
<span>Some text</span>
</div>??????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
CSS:
?div {
border-bottom:1px solid #000;
line-height:16px;
text-align:center;
}
span {
background:#FFF;
position:relative;
bottom:-8px; /* half of line-height */
padding:0 15px;
}
Run Code Online (Sandbox Code Playgroud)
你可以使用任何块,你想(元素h1,h2,whatever而不是)div.
在不知道宽度和背景颜色的情况下解决此问题的方法如下:
结构体
<div class="strike">
<span>Kringle</span>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.strike {
display: block;
text-align: center;
overflow: hidden;
white-space: nowrap;
}
.strike > span {
position: relative;
display: inline-block;
}
.strike > span:before,
.strike > span:after {
content: "";
position: absolute;
top: 50%;
width: 9999px;
height: 1px;
background: red;
}
.strike > span:before {
right: 100%;
}
.strike > span:after {
left: 100%;
}
Run Code Online (Sandbox Code Playgroud)