我有两个按钮,一个在另一个之上,固定在页面的右侧。我拥有它,当用户点击顶部按钮时,它将内容向左滑动,并将第二个按钮设置为低于内容,以便用户仍可看到它。显示的内容实际上是具有可折叠面板的手风琴,因此当用户点击accordion-control
按钮时,它隐藏当前显示的内容并显示请求的内容。基于手风琴高度的动画按钮位置
问题
根据手风琴内容在其上方的高度,仅当我选择一个accordion-control
以打开和关闭第二个按钮移动。当我选择不同的accordion-control
时,它将第二个按钮的position: top
添加到页面的下方,而不是从position:top
中减去,从而使其与上述内容保持一致。
目的
要使第二个按钮始终被定位手风琴内容上面下面,基于内容的高度,无论用户选择什么accordion-control
。
的jsfiddle
https://jsfiddle.net/patrickmcd121/55am802a/2/
jQuery的手风琴功能
$(function() {
$('.accordion-control').click(function() {
if($(this).next('.accordion-panel').hasClass('active')) {
$('.active').removeClass('active').slideUp(); //if current accord-control is clicked twice
} else {
$('.active').removeClass('active').slideUp();
$(this).next('.accordion-panel').addClass('active').slideDown();
}
});
})
jQuery来定位第二按钮
$('#faqSlider .accordion-control').click(function() {
var accord_panel = $(this).next('.accordion-panel');
var accord_panel_height = accord_panel.outerHeight();
console.log(accord_panel.text());
if((!accord_panel.is(':visible')) && (!(accord_panel).is(':animated'))) {
$('#guideSlider, #guideSlider-button').animate({'top': '+='+(accord_panel_height)});
} else {
if (!(accord_panel).is(':animated')) {
$('#guideSlider, #guideSlider-button').animate({'top': '-='+(accord_panel_height)});
} //carry on monday, issue with button below moving down
}
})
<aside>
<div id="faqSlider-button">
<span></span>
<span></span>
<span></span>
<span></span>
<p class="no-margin-bottom">FAQ</p>
</div>
<div id="guideSlider-button">
<span></span>
<span></span>
<span></span>
<span></span>
<p class="no-margin-bottom">Guide</p>
</div>
<div id="faqSlider">
<ul class="accordion no-padding no-margin-bottom">
<li>
<button class="accordion-control text-md-left">1. Lorem Ipsum</button>
<div class="accordion-panel">
<ul class="no-padding">
<li><li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li></li>
<li><li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li></li>
</ul>
</div>
</li>
<li>
<button class="accordion-control text-md-left">2. Lorem Ipsum</button>
<div class="accordion-panel">
<ul class="no-padding">
<li><li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li></li>
<li><li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li></li>
</ul>
</div>
</li>
<li>
<button class="accordion-control text-md-left">3. Lorem Ipsum</button>
<div class="accordion-panel">
<ul class="no-padding">
<li><li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li></li>
<li><li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li></li>
</ul>
</div>
</li>
</ul>
</div>
<div id="guideSlider">
<ul class="accordion no-padding no-margin-bottom">
<li>
<button class="accordion-control text-md-left">1. Create your User Profile</button>
<div class="accordion-panel">
<ul class="no-padding">
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li>
</ul>
</div>
</li>
<li>
<button class="accordion-control text-md-left">2. Add the details of your Care Receivers (you can store up to four)</button>
<div class="accordion-panel">
<ul class="no-padding">
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li>
</ul>
</div>
</li>
<li>
<button class="accordion-control text-md-left">3. Create the profiles for your Responders (you can choose up to five for each Care Receiver)</button>
<div class="accordion-panel">
<ul class="no-padding">
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li>
</ul>
</div>
</li>
</ul>
</div>
.accordion li { list-style: none; }
.accordion button:focus { outline-color: #E6E8E3; }
.accordion-panel li:before {
content: url('../imgs/dash-point.png');
padding-right: 1rem;
}
.accordion-panel { display: none; padding: 1rem; background: #fff}
.accordion-control {
background: #fff;
border: 1px solid #E6E8E3;
padding: 1rem;
width: 100%;
}
.accordion-control:hover, .accordion-control.active
{ cursor: pointer; background: #eeeeee; }
你能尝试添加代码为'snippet'或'fiddle'因为当我试着在'小提琴'中复制这个,我只是不能将这与你在提问中提到的设计联系起来。此外,试着在问题中命名你的按钮[第二和第一] .. :) –
** [Here是我可以实现的或者是r eplicate](https://jsfiddle.net/Guruprasad_Rao/krt6jtjw/)**。 –
与我袒护我会给你一个JSFiddle –