【问题标题】:Css div absolute surrounded by text [duplicate]Css div绝对被文本包围[重复]
【发布时间】:2014-05-14 07:39:41
【问题描述】:

我正在尝试用 position: absolute 包围 div。 始终在 div 下显示文本。

我正在使用的 CSS:

.all {
    display: block;
    width: 250px;
    min-height: 180px;
    height: auto;
    position: relative;
    background: #fa65fc;
}
.abs {
    position: absolute;
    top:  80px;
    left: 200px;
    float: right;
    width: 50px;
    height: 100px;
    background: #4542df;
}

两个 div:

<div class="all">
    <div class="abs">ABS</div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
</div>

这里是链接:JSFiddle

我想做这样的事情:

提前致谢。

【问题讨论】:

  • 绝对定位的 div 不可能。

标签: html text css-position absolute surround


【解决方案1】:

您可以通过使用 css 插入一个虚拟元素来实现您正在寻找的结果。这种方法意味着您不需要将 &lt;div class="abs"&gt; 定位在该 div 内容的中间。如果您无法控制内容是什么(在内容输入到 cms 的情况下),这可能会很有用。

HTML:

<div class="all">
    <div class="abs">ABS</div>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
</div>

CSS:

.all {
    display: block;
    width: 250px;
    min-height: 180px;
    height: auto;
    position: relative;
    background: #fa65fc;
}

.all:before { 
    content: "";
    float: right;
    height: 80px;
    width: 0;
}

.abs {
    clear: both;
    float: right;
    width: 50px;
    height: 100px;
    background: #4542df;
}

链接到JSFiddle

.all:before&lt;div class="all"&gt; 的开头插入一个右浮动、无宽度、高80px 的虚拟元素。

因为.abs 是向右浮动的(但不是绝对定位),它现在会尝试在 div 的顶部保持浮动。添加clear: both 会强制它下降到任何其他浮动元素下方,因此它最终会向下移动 80px 以清除它之前的虚拟浮动。

【讨论】:

  • 非常感谢!这就是我所需要的:)))) 因为我使用的是 WordPress,所以我无法控制 div 前后的文本。
  • 这是一个我不知道的好方法,点赞!
【解决方案2】:

你不能用绝对位置来做到这一点。但是,您可以使用静态位置和带有一些边距的float: right; 来实现您在图像上显示的内容。

这是一个更新的 jsFiddle:http://jsfiddle.net/U5Pg5/2/

HTML:

<div class="all">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
<div class="abs">ABS</div>
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
</div>

CSS:

.all {
    display: block;
    width: 250px;
    min-height: 180px;
    height: auto;
    position: relative;
    background: #fa65fc;
}
.abs {
    float: right;
    width: 50px;
    height: 100px;
    background: #4542df;
    margin-left: 15px;
    margin-top: 10px;
    margin-bottom: 10px;
}

【讨论】:

  • 是的,我知道图像,但是这个解决方案对我来说并不好,因为会生成这个文本。
猜你喜欢
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 2015-01-14
相关资源
最近更新 更多