首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使它使当你点击一个菜单项,另一个改变颜色?

如何使它使当你点击一个菜单项,另一个改变颜色?
EN

Stack Overflow用户
提问于 2021-07-04 13:22:40
回答 3查看 212关注 0票数 1

当您单击.侧栏菜单中的li之一时,如何使.侧栏中的一个li圆圈将背景颜色更改为白色,方法是向其中添加.actived类?此外,当单击.侧边栏菜单中的其中一个li时,.侧栏-nav中的圆圈应根据单击的元素更改颜色。例如,他们点击“名片网站”,第一个圆圈亮起来,点击“网店”,第三个圈亮起来。

站点ct03638.tmweb.ru

代码jsfiddle.net/pjzs9uxw/

代码语言:javascript
运行
复制
.actived {
    background-color:  #fff;
    transition: 0.3s;
}
代码语言:javascript
运行
复制
 <section class="services" id="services">
            <div class="wrapper">
                <div class="content">
                    <div class="sidebar">
                        <h3>Наши услуги</h3>
                        <ul class="sidebar-menu">
                            <li id="business-card"><a href="#">Сайт-визитка</a></li>
                            <li id="landing"><a href="#">Landing page</a></li>
                            <li id="market"><a href="#">Интернет-магазин</a></li>
                            <li id="corp"><a href="#">Корпоративный сайт</a></li>
                            <li id="bitrix"><a href="#">1C Битрикс</a></li>
                            <li id="advertising"><a href="#">Контекстная реклама</a></li>
                            <li id="seo"><a href="#">SEO оптимизация</a></li>
                            <li id="promotion"><a href="#">Продвижение в соц. сетях</a></li>
                            <li id="marketing"><a href="#">Контент-маркетинг</a></li>
                        </ul>
                        <ul class="sidebar-nav">
                            <li class="business-card"></li>
                            <li class="landing"></li>
                            <li class="market"></li>
                            <li class="corp"></li>
                            <li class="bitrix"></li>
                            <li class="advertising"></li>
                            <li class="seo"></li>
                            <li class="promotion"></li>
                            <li class="marketing"></li>
                        </ul>
                    </div>
                </div>
            </div>
        </section>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-04 14:10:45

您可以使用单击的li的index(),然后使用该addClasssidebar-nav ul中使用相同的li

演示代码

代码语言:javascript
运行
复制
$('.sidebar-menu li a').on('click', function(e) {
  e.preventDefault()
  var index_ = $(this).closest("li").index() //get index
  $('.sidebar-nav li').removeClass('actived');//remove from other
  $(".sidebar-nav li:eq(" + index_ + ")").addClass('actived'); //add class where index is same
});
代码语言:javascript
运行
复制
.actived {
  background-color: red;
  transition: 0.3s;
}

.sidebar-nav li {
  width: 7px;
  height: 7px;
  border: 1px solid black;
  border-radius: 50px;
  margin-right: 5px;
  cursor: pointer;
}

.sidebar-nav {
  list-style: none;
  display: flex;
  justify-content: flex-start;
  margin-left: 120px;
}
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<section class="services" id="services">
  <div class="wrapper">
    <div class="content">
      <div class="sidebar">
        <h3>Наши услуги</h3>
        <ul class="sidebar-menu">
          <li id="business-card"><a href="#">Сайт-визитка</a></li>
          <li id="landing"><a href="#">Landing page</a></li>
          <li id="market"><a href="#">Интернет-магазин</a></li>
          <li id="corp"><a href="#">Корпоративный сайт</a></li>
          <li id="bitrix"><a href="#">1C Битрикс</a></li>
          <li id="advertising"><a href="#">Контекстная реклама</a></li>
          <li id="seo"><a href="#">SEO оптимизация</a></li>
          <li id="promotion"><a href="#">Продвижение в соц. сетях</a></li>
          <li id="marketing"><a href="#">Контент-маркетинг</a></li>
        </ul>
        <ul class="sidebar-nav">
          <li class="business-card"></li>
          <li class="landing"></li>
          <li class="market"></li>
          <li class="corp"></li>
          <li class="bitrix"></li>
          <li class="advertising"></li>
          <li class="seo"></li>
          <li class="promotion"></li>
          <li class="marketing"></li>
        </ul>
      </div>
    </div>
  </div>
</section>

票数 1
EN

Stack Overflow用户

发布于 2021-07-04 14:33:23

click ul元素上添加sidebar-menu事件侦听器并捕获单击的li元素的索引,然后获取相同索引的circle元素并在其上添加active类,并从前面突出显示的元素中删除active类。

代码语言:javascript
运行
复制
const menuEle = document.querySelector("#side-menu");
let higlightedIndex = -1;

menuEle.addEventListener("click", (e) => {
  const listItem = e.target.closest("li");
  if (listItem) {
    const index = [...menuEle.children].indexOf(listItem);
    const list = document.querySelector("#sidebar-nav").children;
    if (higlightedIndex >= 0) {
      list[higlightedIndex].classList.remove("active");
    }
    list[index].classList.add("active");
    higlightedIndex = index;
  }
});
代码语言:javascript
运行
复制
.active {
    background-color: #FAE93E;
}

.circle {
  width: 20px;
  height: 20px;
  border: 1px solid black; 
  border-radius: 50%;
  display: inline-block;
}
代码语言:javascript
运行
复制
<section class="services" id="services">
            <div class="wrapper">
                <div class="content">
                    <div class="sidebar">
                        <h3>Наши услуги</h3>
                        <ul class="sidebar-menu" id="side-menu">
                            <li id="business-card"><a href="#">Сайт-визитка</a></li>
                            <li id="landing"><a href="#">Landing page</a></li>
                            <li id="market"><a href="#">Интернет-магазин</a></li>
                            <li id="corp"><a href="#">Корпоративный сайт</a></li>
                            <li id="bitrix"><a href="#">1C Битрикс</a></li>
                            <li id="advertising"><a href="#">Контекстная реклама</a></li>
                            <li id="seo"><a href="#">SEO оптимизация</a></li>
                            <li id="promotion"><a href="#">Продвижение в соц. сетях</a></li>
                            <li id="marketing"><a href="#">Контент-маркетинг</a></li>
                        </ul>
                        <div id="sidebar-nav">
                            <span class="business-card circle"></span>
                            <span class="landing circle"></span>
                            <span class="market circle"></span>
                            <span class="corp circle"></span>
                            <span class="bitrix circle"></span>
                            <span class="advertising circle"></span>
                            <span class="seo circle"></span>
                            <span class="promotion circle"></span>
                            <span class="marketing circle"></span>
                        </div>
                    </div>
                </div>
            </div>
        </section>

票数 0
EN

Stack Overflow用户

发布于 2021-07-04 14:00:03

在按钮的单击函数上,尝试向与此当前项相关的父菜单元素中添加设置类或属性的行。这样,您就可以根据当前菜单项对整个菜单应用不同的样式。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68245146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档