<div id="test" class="pad" contenteditable="true">
<div id="a" class="fif">text1</div>
<div id="b" class="fif">text2</div>
</div>
在上面的代码中,我有一个contenteditable
div和许多div里面(子div)。子div的数量动态变化,div标签之间的内容也会变化。我想要text1
和text2
(即div标签之间的内容)显示在同一行上,中间没有任何空白。另外,在输入contenteditable
div时,如果我按ENTER键,它应该转到下一行。
我尝试了float:left
,但它不允许我在输入contenteditable
div时按ENTER键转到下一行。display:inline
, span
在使用时显示2div内容之间的空白。我尝试使用flex
从http://www.w3.org/TR/css3-flexbox/,但没有得到所需的输出。
只要让<div>
s有display: inline
或display: inline-block
,并在HTML源代码中删除它们之间的空白。
是否使用inline
或inline-block
取决于您希望div内的内容如何布局。这是MDN关于这个主题的一篇文章。
演示:http://jsfiddle.net/timdown/GVZPX/
CSS:.fif {
display: inline; /* Or inline-block */
}
HTML: <div id="test" class="pad" contenteditable="true">
<div id="a" class="fif">text1</div><div id="b" class="fif">text2</div>
</div>
<div>
<div style="display: inline-block;">1</div>
<div style="display: inline-block;">2</div>
</div>
回答这个问题已经超过5年了,因为除了蒂姆·唐恩对实际问题的打击之外,没有一个答案。进一步解释一下,下面是内联块两个元素的情况:
两个行内块div之间的空白是需要的。当您内联一个元素(在本例中是内联块)时,实际上是在指示浏览器将所有元素并排放在同一行上。通过这样做,您实际上将div等同于行上的空白(空格/制表符等),因为它们共享行空间。
在您的代码片段中,在结束div标记(</div>
)和下一个开始<div>
标记之间有4个空格字符。浏览器渲染引擎将多个空格缩小为一个空格,这个空格占用了额外的字符,这就是你在这种情况下观察到的。
<div id="a" class="fif">text1</div><!--
--><div id="b" class="fif">text2</div>
或
<div id="a" class="fif">text1</div
><div id="b" class="fif">text2</div>
或
<div id="a" class="fif">text1</
div><div id="b" class="fif">text2</
div>
最后一个是无效的XML,但是浏览器不会拒绝。
您的小提琴与上面的变通方法在这里分叉:http://jsfiddle.net/AshwinPrabhuB/otavbncr/1/
使用display:inline
作为内部div
#test div{
display:inline;
}
.pad {
background-color: #eee;
padding: 4px;
overflow:hidden /* first */
}
.fif {
display: inline-block;
margin: 0;
padding: 4px 8px;
float:left /* second part */
}
这里的jsFiddled
我不确定我完全理解,但这可能会有所帮助:http://jsfiddle.net/UwZsm/3
.fif {display: inline-block; margin: 0 -4px 0 0;}
我测试了一个想法,我相信它对你所说的有用。
<html>
<head>
<title>test</title>
<style>
.fif{
padding:0px;
float:left;
}
</style>
</head>
<body>
<div id="test" class="pad" contenteditable="true">
<div id="a" class="fif">text1</div>
<div id="b" class="fif">text2</div>
</div>
</body>
</html>
希望有帮助!
如果你有权限访问html代码,我就知道了。
<div id="test" class="pad" contenteditable="true">
<table>
<tr>
<td>
<div id="a" class="fif">text1</div>
</td>
<td>
<div id="b" class="fif">text2</div>
</td>
</tr>
</table>
</div>
<style>
.pad {
background-color: #eee;
padding: 0px;
overflow:hidden
}
.fif {
display: inline-block;
margin: 0;
padding: 0;
}
table,td,tr{
padding:0;
}
#a {
background-color: #ddd;
}
#b {
background-color: #ccc;
}
</style>
http://jsfiddle.net/hari_OM/4GfcJ/2/
这里没有空格。
<div id="test" class="pad" contenteditable="true">
<div id="a" class="fif">text1</div><div id="b" class="fif">text2</div>
</div>