【问题标题】:Absolute div height being cut off inside relative div绝对 div 高度在相对 div 内被截断
【发布时间】:2018-05-24 12:39:58
【问题描述】:

我无法正确显示一个绝对定位的 div。除非我为父(相对)div 设置一个我无法做到的高度,否则它会被切断,因为我永远不会知道所需的高度。

我最初没有使用任何绝对定位,但 comm div 的内容被包裹在 avatar div 下方,所以我认为绝对定位可以解决它,它已经解决了,除了文本在底部。

这是结构,您可以在this fiddle 中看到发生了什么。

body {
  background: #212121;
  font-family: arial;
}

.main {
  width: 80%;
  margin: 20px auto;
}

.wrap {
  width: 100%;
  background: white;
  padding: 10px;
  overflow: hidden;
  position: relative;
}

a.avatar {
  width: 45px;
  height: 45px;
  border-radius: 50%;
  overflow: hidden;
  display: inline-block;
  float: left;
  margin-right: 10px;
  position: relative;
}

a.avatar img {
  width: 100%;
}

.top {
  display: block;
  overflow: hidden;
  position: absolute;
  left: 70px;
}

a.name {
  font-weight: bold;
  margin-right: 10px;
  float: left;
}

.posted {
  color: #BBB;
  font-size: 12px;
  padding-top: 3px;
  float: left;
}

p.comm {
  display: block;
  position: absolute;
  left: 70px;
  top: 20px;
  height: 100%;
}
<div class="main">
  <div class="wrap">
    <a href="https://example.com" class="avatar"><img src="http://www.tangoflooring.ca/wp-content/uploads/2015/07/user-avatar-placeholder.png" /></a>
    <div class="top">
      <a href="https://example.com" class="name">John Doe</a>
      <div class="posted">8 mins ago</div>
    </div>
    <p class="comm">Lorem ipsum dolor sit amet.
    </p>
  </div>
  <div class="wrap">
    <a href="https://example.com" class="avatar"><img src="http://www.tangoflooring.ca/wp-content/uploads/2015/07/user-avatar-placeholder.png" /></a>
    <div class="top">
      <a href="https://example.com" class="name">Jane Doe</a>
      <div class="posted">11 mins ago</div>
    </div>
    <p class="comm">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    </p>
  </div>
  <div class="wrap">
    <a href="https://example.com" class="avatar"><img src="http://www.tangoflooring.ca/wp-content/uploads/2015/07/user-avatar-placeholder.png" /></a>
    <div class="top">
      <a href="https://example.com" class="name">Jimmy Doe</a>
      <div class="posted">18 mins ago</div>
    </div>
    <p class="comm">Ut enim ad minim veniam.
    </p>
  </div>
</div>

【问题讨论】:

  • 您是否考虑过使用 flexbox 将元素放置在另一个元素的下方?通过这样做,它将自动占用全部剩余空间,而无需指定。
  • 刚刚尝试过 flexbox,它将文本包裹在头像下方,这与我之前使用浮动时遇到的问题相同。 - jsfiddle.net/Lw77x3pk

标签: html css


【解决方案1】:

尝试使用此修改后的 css 代码。

body {
  background: #212121;
  font-family: arial;
}

.main {
  width: 80%;
  margin: 20px auto;
}

.wrap {
  width: 100%;
  background: white;
  padding: 10px;
  position: relative;
}

a.avatar {
  width: 45px;
  height: 45px;
  border-radius: 50%;
  overflow: hidden;
  display: inline-block;
  float: left;
  margin-right: 10px;
  position: relative;
}

a.avatar img {
  width: 100%;
}

.top {
  display: flex;
  margin-left: 70px;
}

a.name {
  font-weight: bold;
  margin-right: 10px;
}

.posted {
  color: #BBB;
  font-size: 12px;
  padding-top: 3px;
}

p.comm {
  display: block;
  margin-left: 70px;
  height: 100%;
}

【讨论】:

    【解决方案2】:

    您需要将.top.comm 包装在div 中,并使用flex 来实现它

    body {
      background: #212121;
      font-family: arial;
    }
    
    .main {
      width: 80%;
      margin:20px auto;
    }
    
    .wrap {
      width: 100%;
      background: white;
      padding: 10px;
      overflow: hidden;
      position: relative;
      display: flex;
    }
    
    a.avatar {
      margin-right: 10px;
    }
    a.avatar img {
      width: 45px;
      height: 45px;
      border-radius: 50%;
    }
    
    .top {
      width: 100%;
      overflow: hidden;
    }
    
    a.name {
      font-weight: bold;
      margin-right: 10px;
      float: left;
    }
    
    .posted {
      color: #BBB;
      font-size: 12px;
      padding-top: 3px;
      float: left;
    }
    
    p.comm {
      margin-top: 5px;
    }
    .right {
      max-width: 88%;
    }
    <div class="main">
    
        <div class="wrap">
        <a href="https://example.com" class="avatar"><img src="http://www.tangoflooring.ca/wp-content/uploads/2015/07/user-avatar-placeholder.png"></a>
        <div class="right">
        	<div class="top">
              <a href="https://example.com" class="name">Jane Doe</a>
              <div class="posted">11 mins ago</div>
            </div>
        <p class="comm">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do </p>
        </div>
      </div>
    
    	  <div class="wrap">
        <a href="https://example.com" class="avatar"><img src="http://www.tangoflooring.ca/wp-content/uploads/2015/07/user-avatar-placeholder.png"></a>
        <div class="right">
        	<div class="top">
              <a href="https://example.com" class="name">Jane Doe</a>
              <div class="posted">11 mins ago</div>
            </div>
        <p class="comm">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
        </div>
      </div>
        
        <div class="wrap">
        <a href="https://example.com" class="avatar"><img src="http://www.tangoflooring.ca/wp-content/uploads/2015/07/user-avatar-placeholder.png"></a>
        <div class="right">
        	<div class="top">
              <a href="https://example.com" class="name">Jane Doe</a>
              <div class="posted">11 mins ago</div>
            </div>
        <p class="comm">Lorem ipsum dolor sit amet</p>
        </div>
      </div>
    
    </div>

    工作小提琴here

    【讨论】:

      【解决方案3】:

      只需修改您的p.comm 选择器,如下所示:

      p.comm {
          display: block;
          position: relative;
          top: 10px;
          padding-left: 60px;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-22
        • 1970-01-01
        • 2017-09-29
        • 2011-05-06
        • 2013-11-19
        相关资源
        最近更新 更多