我想在放置在图片右侧的contenteditable
div
中输入文字。
<div class="container">
<div class="image">
<img src="/path/*.jpg" alt="" />
</div>
<div class="text" contenteditable>
<p></p>
</div>
<div class="clear"></div>
.container {
width: 1000px;
border: 1px solid #000;
}
.image, .text {
position: relative;
}
.image {
width: 500px;
height: 500px;
overflow: hidden;
float: left;
}
.text {
min-height: 30px;
border: 1px solid #000;
}
.clear{
clear: both;
}
我的目标是,当我专注于contenteditable
而不是p
tag
的开头时,将插图放在图像右侧,如您所见的 Fiddle 即可。
一种解决方案是在
中插入<p>
,如其他 Fiddle 所示,但这不是一个非常干净的解决方案:它污染写在里面的文本。
我可以利用JavaScript和jQuery,但首选纯HTML和CSS解决方案
有什么想法吗?
更新 我忘了说文本也应该在图像下面,所以不能浮动或隐藏
答案 0 :(得分:1)
只需尝试margin-left:500px;
.text {
min-height: 30px;
border: 1px solid #000;
margin-left:500px;
}
答案 1 :(得分:1)
添加溢出:隐藏到不应覆盖浮动元素的元素中:
http://jsfiddle.net/nothrem/0mdcLzqs/3/
<div class="container">
<div class="image">
<img src="https://ununsplash.imgix.net/photo-1417021423914-070979c8eb34?fit=crop&fm=jpg&q=75&w=1050" alt="" />
</div>
<div class="text" contenteditable style="overflow:hidden">
<p></p>
</div>
<div class="clear"></div>
</div>
更新:您可以使用Javascript根据元素的内容更改溢出
document.getElementsByClassName('text')[0].onblur = function() {
if (this.innerHTML.replace(/<[^>]+>/, '')) { //remove HTML tags
this.style.overflow = 'visible';
} else {
this.style.overflow = 'hidden';
}
}
完成编辑后模糊,您可能想要添加其他事件,例如onkeyup,onmouseclick等。
答案 2 :(得分:1)
你必须删除div并申请成像这些css样式:
display: -moz-inline-stack;
display: inline-block;
_overflow: hidden;
*zoom: 1;
*display: inline;
与
vertical-align: bottom;
答案 3 :(得分:0)
除非必要,否则我不喜欢浮动广告,我会从图片CSS中移除float: left
并将这两行添加到.image, .text
一行:
display: inline-block;
vertical-align: top;
答案 4 :(得分:0)
获取图片下方的文字
将容器宽度设置为图像的宽度,并按照左右浮动设置文本的位置:
.container {
width: 500px; // width of image
border: 1px solid #000;
}
.image, .text {
position: relative;
}
.image {
width: 500px;
height: 500px;
overflow: hidden;
float: left;
}
.text {
min-height: 30px;
width:100%;
border-top: 1px solid #000;
float:left;
text-align:center;
}
.clear{
clear: both;
}
这是demo