gpt4 book ai didi

jQuery SlideDown 使其他元素跳转

转载 作者:行者123 更新时间:2023-12-01 01:24:55 36 4
gpt4 key购买 nike

我正在尝试构建一个具有动态高度和数量的元素列表,当用户单击它们时,这些元素会上下滑动。问题是,当时只需要显示其中一个,而其他的则在点击后会自动向上滑动。

我遇到了位于正在滑下的元素下方的元素的问题。它们似乎会跳下来,然后再次跳到正确的位置,大约 7 像素(我假设它是 div.text 的 5 像素顶部边距 + 边框的 2 像素)。

滑动div:

<div class="slide">
<div class="bar">
<a href="#" class="title">Slide #1</a>
</div>
<div class="text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed odio nulla. Pellentesque auctor molestie ipsum, ut lobortis mauris laoreet id. Praesent ut dolor sed dui euismod mattis a at nisl. Etiam mi dolor, placerat eget feugiat nec, tempus id risus. Ut sed lobortis arcu. Fusce vestibulum enim sed quam tristique sagittis. Etiam at tempor enim.
</div>
</div>

我用来向上/向下滑动它们的脚本。

$('.text').hide();
$('.slide .bar a').click(function(){
if($(this).parent().next('.text').is(':hidden')){
$('.text').slideUp(200);
$(this).parent().next('.text').slideDown(200);
}
else if($(this).parent().next('.text').is(':visible')){
$(this).parent().next('.text').slideUp(200);
}

});

为了更好地说明, fiddle :http://jsfiddle.net/Q682D/1/

有什么简单的方法可以解决这个问题吗?我想保留边框和边距,或者至少让 div.text 看起来与现在一样。

最佳答案

我能够得到你想要的外观,没有“跳跃”,使用下面的 Accordion 方法,看来这可能是两个选项中更好的一个。

Accordion 方法

jQuery UI Accordion

<强> jsFiddle

CSS

a {
text-decoration: none;
color: #252525;
}
.bar {
border-radius: 6px;
box-shadow: 0 0 0 1px #bbb;
height: 34px;
border: 1px solid #eacec3 !important;
background: #ddb09e;
/* Old browsers */
filter: none !important;
box-shadow: inset 0 -17px 30px 0 #c98c75, 0 0 0 1px #84413f;
width: 400px;
margin-bottom:0.5em;
}
.text {
background: #fff;
border: 1px solid #aaa;
border-radius: 6px;
font: 14px'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif;
padding: 10px;
width: 365px;
}
.title {
float: left;
font: bold 17px'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif;
line-height: 35px;
margin-left: 12px;
text-decoration: none !important;
text-shadow: -1px -1px 0px rgba(0, 0, 0, 0.2), 1px 1px 0px rgba(255, 255, 255, 0.3);
vertical-align: middle;
}
.ui-accordion .ui-accordion-header {
display: block;
cursor: pointer;
position: relative;
padding:0;
}
.ui-accordion .ui-accordion-content {
padding: 1em 1.2em;
border-top: 1px solid #aaa;
overflow: auto;
}
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
color: #000;
text-decoration: none;
}
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
background:none;
font-weight: normal;
color: #fff;
width:400px;
border: 1px solid #fff;
}
.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
position: absolute;
left: 0;
top: 40%;
margin-top: -8px;
}

js

 $(function () {
$("#accordion").accordion({
collapsible: true,
active: false
});
});

html

<div id="accordion">
<div>
<div class="bar"> <a href="#" class="title">Slide #1</a>
</div>
</div>
<div class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<br>
<form>Text:
<input type="text">
<br>
<input type="checkbox">
<br>
<input type="radio">
<br>
<input type="button" value="Button">
</form>
</div>

slideDown/slideUp 方法

不太干净,但我使用 box-sizing:border-box; 并稍微重新组织了一下,得到了大部分的跳转。仍然有轻微的闪烁,但这也许会引导您走向正确的方向。

<强> jsFiddle2

CSS

a {
text-decoration: none;
color: #252525;
}
.slide {
padding-bottom: 15px;
width: 400px;
}
.bar {
border-radius: 6px;
box-shadow: 0 0 0 1px #bbb;
height: 34px;
border: 1px solid #eacec3 !important;
background: #ddb09e;
/* Old browsers */
filter: none !important;
box-shadow: inset 0 -17px 30px 0 #c98c75, 0 0 0 1px #84413f;
width: 400px;
margin-bottom:0.25em;
}
.text {
background: #fff;
border: 1px solid #aaa;
border-radius: 6px;
font: 14px'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif;
padding: 10px;
width: 400px;
box-sizing:border-box;
-moz-box-sizing:border-box;
}
.title {
float: left;
font: bold 17px'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif;
line-height: 35px;
margin-left: 12px;
text-decoration: none !important;
text-shadow: -1px -1px 0px rgba(0, 0, 0, 0.2), 1px 1px 0px rgba(255, 255, 255, 0.3);
vertical-align: middle;
}

更新:我怀疑.slideDown().slideUp()动画计算中可能存在错误,如果将其更改为 .show().hide() 跳转就会消失。

<强> jsFiddle3

关于jQuery SlideDown 使其他元素跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466408/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com