javascript - 点击/ul li/jQuery 平滑滚动

标签 javascript jquery scroll

我在“问答”部分遇到问题。就像有 4 个问题,它们是链接。 如果你点击其中一个,一个“p”就会滑下来。等等。但我希望当您单击问题时,页面向下或向上滚动到合适的位置(如顶部)。

$(function() {
  var $_openedFaq = null;


  function openFaq($__p) {
    $__p.slideDown();
  }


  function closeFaq($__p) {
    $__p.slideUp();
  }


  $('.faq ul li').each(function() {
    var $faq = $(this);
    var $p = $(this).find('p');


    $(this).find('a').click(function(e) {
      e.preventDefault();

      if ($_openedFaq != null) {
        closeFaq($_openedFaq.find('p'));

        $_openedFaq.find('a').removeClass("open");
      }


      if (($_openedFaq == null) || (($_openedFaq != null) && !$faq.is($_openedFaq))) {
        openFaq($p);

        $_openedFaq = $faq;

        $p.prev('a').addClass("open");

      } else {
        $_openedFaq = null;
      }
    });
  });
});
   
.faq {
  background-color: #f5f5f5;
  padding-top: 65px;
  padding-bottom: 65px;
}

.faq div.container div.row div.col-sm-6 h1 {
  font-family: 'Source Serif Pro', serif;
  text-align: center;
  font-size: 60px;
  margin: 0;
  padding-bottom: 40px;
}

.faq div.container div.row div.col-sm-6 ul {
  list-style-type: none;
  padding: 0;
}

.faq div.container div.row div.col-sm-6 ul li {
  font-weight: bold;
  font-size: 14px;
  padding: 10px 10px;
  padding-top: 20px;
  border-bottom: 1px solid #bfbfbf;
  position: relative;
}

.faq div.container div.row div.col-sm-6 ul li:last-child {
  border-bottom: none;
}

.faq div.container div.row div.col-sm-6 ul li a {
  text-decoration: none;
  color: #4a4a4a;
  padding-right: auto;
  -webkit-transition: color 0.25s linear;
  -o-transition: color 0.25s linear;
  transition: color 0.25s linear;
}

.faq div.container div.row div.col-sm-6 ul li a:hover {
  color: black;
}

.faq div.container div.row div.col-sm-6 ul li a:hover::after {
  color: black;
}

.faq div.container div.row div.col-sm-6 ul li a::after {
  content: "\e008";
  font-family: "road-trip-project-icons";
  color: #f9b40a;
  position: absolute;
  top: 20px;
  right: 0;
  -webkit-transition: color 0.25s linear;
  -o-transition: color 0.25s linear;
  transition: color 0.25s linear;
}

.faq div.container div.row div.col-sm-6 ul li a.open {
  color: black;
}

.faq div.container div.row div.col-sm-6 ul li a.open::after {
  content: "\e007";
  font-family: "road-trip-project-icons";
  color: black;
  position: absolute;
  top: 20px;
  right: 0;
}

.faq div.container div.row div.col-sm-6 ul li p {
  font-weight: normal;
  display: none;
}

.faq div.container div.row div.col-sm-6 img {
  width: 100%;
}

.faq {
  padding-top: 200px;
  height: 750px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<section class="faq">
  <div class="container">
    <div class="row">
      <div class="col-sm-6">
        <h1>Q&As</h1>
        <ul>
          <li>
            <a href="#">Question 1</a>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
            </p>
          </li>
          <li>
            <a href="#">Question 2</a>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
            </p>
          </li>
          <li>
            <a href="#">Question 3</a>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
            </p>
          </li>
          <li>
            <a href="#">Question 4</a>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
            </p>
          </li>
        </ul>
      </div>
      <div class="col-sm-6">
        <img src="../includes/img/faqs.jpg" alt="Are you ready ?">
      </div>
    </div>
  </div>
</section>

因此,当您单击“问题 1”时,我希望页面滚动,直到她与问题 1 进行比较。抱歉我的英语很糟糕 ^^

谢谢。

最佳答案

$(document).on('click', 'a[href^="#"]', function    (     (event) {
event.preventDefault();

$('html, body').animate({
    scrollTop: $($.attr(this, 'href')).offset().top
}, 500);

});

href是目标的id

关于javascript - 点击/ul li/jQuery 平滑滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49129012/

相关文章:

javascript - 开 Jest 确认快照更改

jquery - 如何用信息叠加图像?

iphone - iOS 使用 PullToRefreshView 使 UICollectionView 可滚动

jquery - IE再次失效,jQuery滚动震动剧烈

javascript - JavaScript 导入如何在后台工作?

javascript - 我应该使用哪个 node.js 套接字引擎?

javascript - 如何在JavaScript中的类和扩展类创建的对象之间进行引用?

javascript - 如何将一个div附加到另一个div中?

javascript - Jquery Closest 找不到元素

javascript - 触发特定容器内每 500 像素的滚动