我使用Bootstrap的网格系统进行了这种响应式设计:
HTML
<div class="container">
<div class="col-xs-12 col-md-7 view">
<div id="panelviewer">
<div class="row">
<div class="col-xs-12 col-md-6 panel1"><a href="javascript:void(0)">ONE</a></div>
<div class="col-xs-12 col-md-6 panel2"><br><br><a href="javascript:void(0)">TWO</a></div>
</div>
</div>
</div>
</div>
CSS
.container {
max-width:600px;
overflow:visible;
}
.view {
border:dashed #333 1px;
}
.row {
overflow:visible;
}
#panelviewer {
position:relative;
}
#panelviewer .row {
white-space:nowrap;
}
.panel1 {
display:inline-block;
float:none;
background:#ccc;
vertical-align:top
}
.panel2 {
display:inline-block;
float:none;
background:#eee;
vertical-align:top
}
@media (min-width: 990px) {
#panelviewer {
width:671px;
}
}
.open {
right:100%;
margin-left:-34px;
}
我正在尝试创建一个切换效果,将div带入视图中。我似乎无法正确测量。具体来说,我有这些问题:
right
偏移量与margin-left
值相结合而不会将整个div带入视野?查看(并调整大小)JsFiddle demo,看看我的意思。
答案 0 :(得分:1)
您问题的一些答案:
我建议您重置.row
元素的边距和填充,然后不要同时使用left
和right
位置,请坚持使用。将各个面板声明为块级元素,并使用绝对定位。但是,由于绝对定位会将它们从文档流中取出,因此您需要为父项声明一个显式高度。
.row {
overflow:visible;
position: relative;
width: 100%;
height: 50px; /* Or any desired value */
margin: 0;
}
#panelviewer {
position: relative;
}
.row > div {
position: absolute;
width: 100%;
}
.panel1 {
display: block;
background: #ccc;
}
.panel2 {
display: block;
background: #eee;
left: 100%;
}
.open {
left: -100%;
}
答案 1 :(得分:1)
根据Terry的回答,我最终取消了父div padding
上的view
。除了4px空间之外,这使得div成为一致。
然后我使用<!-- -->
hack将其删除:
<div class="row">
<div class="col-xs-12 col-md-6 panel1">
<a href="javascript:void(0)">ONE</a>
</div><!--
--><div class="col-xs-12 col-md-6 panel2">
<br><br><a href="javascript:void(0)">TWO</a>
</div>
</div>