gpt4 book ai didi

jquery - 我怎样才能阻止这个 CSS Accordion 自动向下滚动?

转载 作者:行者123 更新时间:2023-11-28 19:25:57 26 4
gpt4 key购买 nike

我正在为我正在制作的网站使用由 CSS 和 jQuery 制作的 Accordion 。该网站还使用 Bootstrap 为其其他部分设置样式。

每次我打开或关闭标签时,页面都会出于某种原因自动向下滚动,我应该更改什么?提前谢谢大家。

$(document).ready(function() {
$("a.accordion__trigger").click(function() {
$(this).parent().find(".accordion__content").toggleClass("accordion__content__hidden");
});
});
.final__accordion {
position: relative;
display: block;
border: 1px solid #e0e0e0;
font-size: 0.8rem;
}

.final__accordion .accordion__item {
display: block;
margin-top: 5px;
}

.final__accordion .accordion__content {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
background-color: rgba(255, 255, 255, 0.5);
overflow: hidden;
height: 0;
-webkit-transition: height 1s ease, padding 0.3s linear;
-o-transition: height 1s ease, padding 0.3s linear;
transition: height 1s ease, padding 0.3s linear;
}

.final__accordion .accordion__content p {
padding: 20px;
margin: 0;
text-align: left;
max-width: initial;
}

.accordion__item .accordion__content {
overflow: hidden;
box-sizing: content-box;
-moz-box-sizing: content-box;
}

.final__accordion .accordion__content__hidden:target {
/*CHANGED TARGET ON TOGGLE CLASSNAME*/
height: 150px;
text-align: left;
}

.accordion__content__hidden {
height: 0;
}

.final__accordion .accordion__trigger {
text-decoration: none;
}

.final__accordion .accordion__title {
position: relative;
display: block;
margin: 0;
padding: 10px;
font-size: 1em;
background-color: rgb(234, 10, 42);
color: #FFFFFF;
border: 1px solid red;
cursor: pointer;
}

.final__accordion .accordion__title:hover {
background-color: red;
}

.final__accordion .accordion__title:after {
position: absolute;
top: calc(50% - 12px);
right: 20px;
width: 15px;
height: 15px;
border-left: 1px solid #FFFFFF;
border-bottom: 1px solid #FFFFFF;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
content: "";
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="final__accordion" id="#accordion">
<div class="accordion__item">
<a href="#final__tab1" class="accordion__trigger accordion__title">Accordion 1</a>
<div id="final__tab1" class="accordion__content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="accordion__item">
<a href="#final__tab2" class="accordion__trigger accordion__title">Accordion 2</a>
<div id="final__tab2" class="accordion__content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="accordion__item">
<a href="#final__tab3" class="accordion__trigger accordion__title">Accordion 3</a>
<div id="final__tab3" class="accordion__content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="accordion__item">
<a href="#final__tab4" class="accordion__trigger accordion__title">Accordion 4</a>
<div id="final__tab4" class="accordion__content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="accordion__item">
<a href="#final__tab5" class="accordion__trigger accordion__title">Accordion 5</a>
<div id="final__tab5" class="accordion__content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="accordion__item">
<a href="#final__tab6" class="accordion__trigger accordion__title">Accordion 6</a>
<div id="final__tab6" class="accordion__content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
</div>

最佳答案

  1. 点击 <a> 时nchor 标记的默认行为是跳转到由 href 确定的位置值(value)。所以所有<a>href="#/"这基本上可以防止这种跳跃行为。

  2. 使用 jQuery 时,您需要使用 #id .01% 的时间和 .class 99.99% 的时间。所以所有#id被删除。

  3. 对于像滑动这样的动画效果,有 .slideUp/Down/Toggle()

  4. Accordion 的行为是一次只能打开一个部分。所以所有.content除了 .content在点击的 .trigger 之后(即 $(this) )将 .slideUp() .然后 .content在点击的 .trigger 之后将.slideToggle() .

  5. .open.toggleClass().title为箭头设置动画。

顺便说一句,我删除了 .accordion__离开所有类(class)以保持我的理智,随时将其弄乱 .accordion__如果你愿意的话。

$(".trigger").on('click', function(e) {
$('.title').not($(this)).removeClass('open');
$(this).toggleClass('open');
$('.content').not($(this).next('.content')).slideUp();
$(this).next('.content').slideToggle();
});
body {
overflow-y: scroll
}

.accordion {
position: relative;
border: 1px solid #e0e0e0;
font-size: 0.8rem;
}

.accordion .item {
margin-top: 5px;
}

.accordion .content {
display: flex;
align-items: center;
background-color: rgba(255, 255, 255, 0.5);
overflow: hidden;
box-sizing: content-box;
height: 150px;
}

.accordion .content p {
padding: 20px;
margin: 0;
text-align: left;
max-width: initial;
}

.content.hidden {
display: none;
}

.accordion .trigger {
text-decoration: none;
}

.accordion .title {
position: relative;
display: block;
margin: 0;
padding: 10px;
font-size: 1em;
background-color: rgb(234, 10, 42);
color: #FFFFFF;
border: 1px solid red;
cursor: pointer;
}

.accordion .title:hover {
background-color: red;
}

.accordion .title::after {
position: absolute;
top: calc(50% - 12px);
right: 20px;
width: 15px;
height: 15px;
border-left: 1px solid #FFFFFF;
border-bottom: 1px solid #FFFFFF;
transform: rotate(-135deg);
transition: 0.7s;
content: "";
}

.accordion .title.open::after {
transform: rotate(-45deg);
transition: 0.7s;
}
<div class="accordion">
<div class="item">
<a href="#/" class="trigger title">Accordion 1</a>
<div class="content hidden">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="item">
<a href="#/" class="trigger title">Accordion 2</a>
<div class="content hidden">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="item">
<a href="#/" class="trigger title">Accordion 3</a>
<div class="content hidden">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="item">
<a href="#/" class="trigger title">Accordion 4</a>
<div class="content hidden">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="item">
<a href="#/" class="trigger title">Accordion 5</a>
<div class="content hidden">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
<div class="item">
<a href="#/" class="trigger title">Accordion 6</a>
<div class="content hidden">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor laborum, rerum quasi rem placeat quo ratione qui.</p>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

关于jquery - 我怎样才能阻止这个 CSS Accordion 自动向下滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56184841/

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