2017-01-22 74 views
0

所以我有以下HTML/CSS代码使div适应边界?

* { 
 
    box-sizing: border-box; 
 
} 
 

 
.mainlink { 
 
    font-family: "Source Sans Pro", sans-serif; 
 
    font-size: 30px; 
 
    color: rgba(255,0,0,0.7); 
 
    transition: 0.3s ease-in-out; 
 
    text-decoration: none; 
 
    padding: 10px; 
 
} 
 

 
.mainbtn { 
 
    transition: 0.3s ease-in-out; 
 
    border: 1px solid rgba(255,0,0,1); 
 
    width: 40%; 
 
    position: relative; 
 
    margin: auto; 
 
    height: auto; 
 
} 
 

 
div.content { 
 
    position: absolute; 
 
    transform: translate(-1px,1px); 
 
    width: 100%; 
 
} 
 

 
.content a { 
 
    font-family: "Source Sans Pro", sans-serif; 
 
    font-size: 22px; 
 
    color: rgba(255,0,0,0.7); 
 
    display: block; 
 
    list-style: none; 
 
    background-color: #eee; 
 
    transition: 0.2s ease-in-out; 
 
    cursor: pointer; 
 
    text-decoration: none; 
 
    padding: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="mainbtn"> 
 
    <a href="#" class="mainlink">Hello</a> 
 
    <div class="content"> 
 
    <a href="#">World</a> 
 
    <a href="#">You</a> 
 
    <a href="#">Me</a> 
 
    </div> 
 
</div>

这个小练习的目标是创建一个下拉菜单。因此,悬停在“Hello”和div与class =“mainbtn”之上应该展开链接列表(我没有看到动画和转换,因为这不是问题的一部分)。问题是div中class =“content”的链接并没有将class =“mainbtn”的所有div扩展到div的边界。起初,我认为一个简单的盒子尺寸:边框会解决这个问题,但事实并非如此。 任何想法如何我可以使div class =“content”和其中的链接具有整个div的宽度与class =“mainbtn”加边框?

+0

喜欢这个? http://codepen.io/anon/pen/bgWxZb –

+0

你的意思是'content'应该和'mainbtn'的边框重叠? – LGSon

回答

0

我发现如果您包装应该出现在ul标记中的链接,则更容易进行自定义下拉菜单。

在这种fiddle我加入了mainlink锚标记为content格,然后裹在ul标签中的其他环节与周围的锚标记li标签,像这样:

<div class="mainbtn"> 
    <div class="content"> 
     <a href="#" class="mainlink">Hello</a> 
     <ul> 
      <li><a href="#">World</a></li> 
      <li><a href="#">You</a></li> 
      <li><a href="#">Me</a></li> 
     </ul> 
    </div> 
</div> 

然后我用下面的CSS实现你在小提琴中看到的结果。

.content ul { 
    display: none; 
    list-style: none; 
    margin: 0; 
    padding: 0; 
} 

.content .mainlink:hover ~ ul, 
.content .mainlink ~ ul:hover { 
    display: block; 
} 

我也参加了边境从mainbtn类,并把它放在content类,所以下拉出现时的边界将扩大。你可以在这里看到这个updated fiddle

.mainbtn { 
    transition: 0.3s ease-in-out; 
    width: 40%; 
    position: relative; 
    margin: auto; 
    height: auto; 
} 

div.content { 
    position: absolute; 
    transform: translate(-1px,1px); 
    width: 100%; 
    border: 1px solid rgba(255,0,0,1); 
} 
0

请参阅下小提琴:https://jsfiddle.net/q9k87f5c/

这可能是最起码的设置,我能想到的...修复css来满足您的需求。

<div class="items"> 
    <div class="item"> 
    Hello 
    <div class="items"> 
    <div class="item">World</div> 
    </div> 
    </div> 
</div> 

.item{ 
    position:relative; 
} 
.item .items{ 
    display:none; 
} 
.item:hover .items{ 
    display:block; 
    position:absolute; 
} 

基本思想是在嵌套项目的悬停显示上添加一个。这些都隐藏在第一位...