div定位,奇怪的行为

时间:2016-09-18 21:14:31

标签: html css

我正在进行单页网页设计,我希望使用带有#的href来链接同一档案中的不同位置,所需的功能是在点击时移动到链接位置,这可以工作但是如果我向左浮动A,B divs, 我不明白这一点,A和B div已经包含其他东西,但如果我不把浮动:留在CSS中,链接不起作用。那是为什么?



#A,
#B {
  float: left;
}
.cont1 {
  width: 100%;
  height: 1500px;
  background-color: #2077a5;
  float: left;
}

<div id="nav">
  <ul>
    <li><a href="#A">About</a>
    </li>
    <li><a href="#B">Portfolio</a>
    </li>
  </ul>
</div>

<div id="A">
  <div id="about" class="cont1">
    About page content goes here.
  </div>
</div>

<div id="B">
  <div id="portfolio" class="cont1">
    Portfolio page content goes here.
  </div>
</div>
&#13;
&#13;
&#13;

编辑:哇,这是一些快速的答案,非常感谢,我想我不被理解,我的问题是为什么如果我没有设置任何风格的A和B div链接不工作,不要他们自动扩展定位是样式定义div的容器?

2 个答案:

答案 0 :(得分:1)

如果您坚持使用float:left; #A#B,请将clear:both;添加到该第一条规则,以使它们不在同一行开始(在这种情况下)当地的锚点没有任何意义):

#A,
#B {
  float: left;
  clear: both;
}

http://codepen.io/anon/pen/NRRxGy

评论和编辑后的补充:

要尝试查看,请删除A和B的浮动(http://codepen.io/anon/pen/bwwEAr)并在开发人员工具中查看它:#A和&#39; B的大小均为1406 x 0 (!)并且将处于相同的位置。

那是因为只包含浮动元素的DIV将没有&#34;官方&#34;高度(即他们不会包装他们的实际内容) - 搜索有关浮动的问题以获得示例。所以垂直地“松散”#34; #A和#B处于相同的高度,这就是链接导致相同滚动位置的原因。奇怪的东西,但这一切都与浮动元素以及浮动元素如何影响其容器的高度有关。

答案 1 :(得分:0)

问题是你为这两个部分设置了.cont1类,并使它们向左浮动,高度为1500px。试试这个css

 #A, #B {
  min-width: 100%;

}

.cont1 {
  height: 100vh;
  background-color: #2077a5;
  }

你可以使用id =&#34; about&#34;和id =&#34;投资组合&#34;对于链接,所以你不需要额外的div#A,B

<div id="nav">
  <ul>
  <li><a href="#about">About</a></li>
  <li><a href="#portfolio">Portfolio</a></li>
 </ul>
</div>


 <div id="about" class="cont1">
  About page content goes here. 
 </div>    



 <div id="portfolio" class="cont1">
   Portfolio page content goes here. 
 </div>

.cont1 {
width: 100%;
height: 1500px;
background-color: #2077a5;
float: left;
 }