如何避免这些重叠元素

时间:2013-08-11 10:06:21

标签: css position

我在codepen上玩弄了一些代码,试图习惯html / css,因为我对定位不太满意。这一定非常愚蠢,但我不能让它发挥作用。

HTML:

<div id="hh">
    <h1>Wacom Hover Effect</h1>
</div>
<div id="cl">
    <a href="#" data-text="Read More" class="button-hover">Read More</a>
    <a href="#" data-text="Learn More" class="button-hover">Learn More</a>
    <a href="#" data-text="Read Article" class="button-hover">Read Article</a>
    <a href="#" data-text="Download" class="button-hover">Download</a>
</div>

CSS:

*, :before, :after{ @include box-sizing('border-box'); }
body{ padding: 1em; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background: #eee; }

#hh{
   position:absolute; 
   left:50%
   }

h1{
  position:relative;
  left:-50%;
  font: 300 3em/1em 'Open Sans', sans-serif;
  border: solid 0.00019em #000;
  margin-bottom: 0.2em;
  padding: 0.4em 0.2em 0.4em 0.2em;
  background-color:lightblue;
  border-radius:0.2em;
  }
#cl{
   clear:both;
 }

.button,
 [class*="button-"]{

  position: relative;
  display: inline-block;
  overflow: hidden;
  float:left;
  margin: 0 1em 1em 0;
  padding: 0 4em;
  height: 3.5em;
  font: 300 1em/3.5em 'Open Sans', sans-serif;
  text:{
    decoration: none;
    shadow: 0 1px 3px rgba(black, .35);
   }
  letter-spacing: .08em;
  color: #fff;
  background: #0090C0;
  border: solid 1px #fff;
  border-radius: 2px;
  @include transition(.35s ease all);

}

}

之后有关于悬停等的一些不相关的代码。 结果如下:http://codepen.io/roygbiv/full/FjLcA

所以我希望h1在中心,我在这里找到了放置#hh绝对值的方法,左边:50%然后是h1相对左边:-50%。它搞砸了定位。

我想要的是中心顶部的h1,然后是它下面的4“a”(不是中心,只是不重叠)。

2 个答案:

答案 0 :(得分:0)

position: absolute放在元素上会使所有其他元素忽略它。这可以通过将display: inline-block放在h1上的text-align: center#hh上来解决:

检查新笔:http://codepen.io/anon/pen/kovaC

#hh {
  text-align: center;
}

h1{
  font: 300 3em/1em 'Open Sans', sans-serif;
  border: solid 0.00019em #000;
  margin-bottom: 0.2em;
  padding: 0.4em 0.2em 0.4em 0.2em;
  background-color:lightblue;
  border-radius:0.2em;
  display: inline-block;
}

inline-block使元素的框适应其文本的宽度。我认为标题的所需外观是蓝色框不是100%宽度,否则h1和其他块元素就是这种情况。

答案 1 :(得分:-1)

我在css中做了以下修改,它按预期工作:

#hh{
  text-align: center;
  margin-left:auto;
  margin-right:auto;
  width:40%;
}

h1{
  font: 300 3em/1em 'Open Sans', sans-serif;
  border: solid 0.00019em #000;
  margin-bottom: 0.2em;
  padding: 0.4em 0.2em 0.4em 0.2em;
  background-color:lightblue;
  border-radius:0.2em;
}