覆盖绝对位置为

时间:2017-12-29 14:17:39

标签: css3 css-position padding absolute

我已将一个<div>放在另一个位置绝对位置且左边距为10px填充(这是因为我想显示阴影)。 问题是基础<div>的内容显示在标题<div>的左侧,如何避免这种情况?如果我使用border-left而不是padding-left,则不显示阴影。

&#13;
&#13;
#container {
    background-color: green;
    display: flex;
}
.item {
    background-color: white;
    border: 1px solid black;
    flex-grow: 0;
}

.bigContent{
  height: 1000px;
  width: 1000px;
}

.scroll{
  overflow: auto;
  height: 300px;
  width: 500px;
}

.header{
  height: 280px;
  width: 200px;
  position: absolute;
  z-index: 1;
  padding-left:10px;
  overflow:hidden;
  display: inline;
  border: solid 1px;
}

.headerContent{
  background: lightgrey;
  height: 280px;
  width: 200px;
  box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
&#13;
<div id="container">
  <div id="header" class="header">
    <div class="headerContent">
      <div class="shadow">
        <table width="500px">
          <tr><td>Header</td></tr>
        </table>
      </div>  
    </div>
  </div>
    <div class="item scroll">
      <div class="bigContent">
         <table width="500px">
            <tr><td>Some content</td><td>Some content</td><td>Some content</td><td>Some content</td><td>Some content</td><td>Some content</td></tr>
         </table>
      </div>      
    </div>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

  

问题是基础<div>的内容显示在。{   标题<div>左侧,如何避免这种情况?

您已在标题div上正确添加padding-left以允许阴影,并且标题div确实位于内容之上。但是,标题div默认情况下具有透明背景。

因此,为了隐藏下面的内容,您只需在标题div中添加白色背景。

.header {
  ...
  background-color: white;
}

&#13;
&#13;
#container {
    background-color: green;
    display: flex;
}
.item {
    background-color: white;
    border: 1px solid black;
    flex-grow: 0;
}

.bigContent{
  height: 1000px;
  width: 1000px;
}

.scroll{
  overflow: auto;
  height: 300px;
  width: 500px;
}

.header{
  height: 280px;
  width: 200px;
  position: absolute;
  z-index: 1;
  padding-left:10px;
  overflow:hidden;
  display: inline;
  border: solid 1px;
  background-color: white;
}

.headerContent{
  background: lightgrey;
  height: 280px;
  width: 200px;
  box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
&#13;
<div id="container">
  <div id="header" class="header">
    <div class="headerContent">
      <div class="shadow">
        <table width="500px">
          <tr><td>Header</td></tr>
        </table>
      </div>  
    </div>
  </div>
    <div class="item scroll">
      <div class="bigContent">
         <table width="500px">
            <tr><td>Some content</td><td>Some content</td><td>Some content</td><td>Some content</td><td>Some content</td><td>Some content</td></tr>
         </table>
      </div>      
    </div>
</div>
&#13;
&#13;
&#13;