【问题标题】:Howto make a div appear when clicking link in navigation单击导航中的链接时如何使div出现
【发布时间】:2016-04-28 10:48:52
【问题描述】:

好吧,我来自荷兰,请原谅我的英语不好。我会尽量具体一点....

目标

有一个导航栏,当点击一个项目时,它会显示一个包含内容的 div。

好的,出于测试目的,我制作了一个简单的 jsfiddle https://jsfiddle.net/hjuekLhq/

[HTML]

    <nav class="navigation">
      <ul>
      <li class="item1"><a href="#content1">content1</a></li>
      <li class="item2"><a href="#content2">content2</a></li>
      <li class="item3"><a href="#content3">content3</a></li>
      </ul>
    </nav>
<div id="content1">content 1 text</div>
<div id="content2">content 2 text</div>
<div id="content3">content 3 text</div>

[CSS]

.navigation {background:blue;width:100%;}
.navigation li {display:inline-block;width: 5em;background:white;color:black;padding:1em;}
.navigation a {text-decoration:none;}

#content1 {background:green;color:white;padding:5em;}
#content2 {background:orange;color:white;padding:5em;}
#content3 {background:black;color:white;padding:5em;}

#content1 {display:block;}
#content2 {display:none;}
#content3 {display:none;}

.item1:hover #content1 {display:block;}
.item1:hover #content2 {display:none;}
.item1:hover #content3 {display:none;}

.item2:hover #content1 {display:none;}
.item2:hover #content2 {display:block;}
.item2:hover #content3 {display:none;}

.item3:hover #content1 {display:none;}
.item3:hover #content2 {display:none;}
.item3:hover #content3 {display:block;}

上面的小提琴是我想要的,但不起作用......

以下小提琴是一个工作示例,但它不会显示所需的导航栏。

https://jsfiddle.net/o883h71u/

[HTML]

  <li class="item1"><a href="#content1">content1</a></li>
  <li class="item2"><a href="#content2">content2</a></li>
  <li class="item3"><a href="#content3">content3</a></li>

<div id="content1">content 1 text</div>
<div id="content2">content 2 text</div>
<div id="content3">content 3 text</div>

[CSS]

.item1, .item2, .item3 {display:inline-block;width: 5em;background:white;color:black;padding:1em;}
.item1 a, .item2 a, .item3 a {text-decoration:none;}

#content1 {background:green;color:white;padding:5em;}
#content2 {background:orange;color:white;padding:5em;}
#content3 {background:black;color:white;padding:5em;}

#content1 {display:block;}
#content2 {display:none;}
#content3 {display:none;}

.item1:hover ~#content1 {display:block;}
.item1:hover ~#content2 {display:none;}
.item1:hover ~#content3 {display:none;}

.item2:hover ~#content1 {display:none;}
.item2:hover ~#content2 {display:block;}
.item2:hover ~#content3 {display:none;}

.item3:hover ~#content1 {display:none;}
.item3:hover ~#content2 {display:none;}
.item3:hover ~#content3 {display:block;}

我希望我足够清楚我想在这里完成什么。单击菜单项时,应出现一个 div,而其他 div 应消失。

任何帮助将不胜感激! 哦,是的,如果可能的话,仅限 CSS!没有 Javascript...

谢谢!

【问题讨论】:

    标签: html css navigation hover


    【解决方案1】:

    这可能有助于解决您的问题...

    尝试点击菜单标签

    [codepan link here]
    

    http://codepen.io/amiteshchauhan/pen/oxaBPG

    【讨论】:

    • 嗯,是的,这似乎有效,给我一些时间把它放在我的网站上。我会回来告诉我这是否是我一直在寻找的!
    • 不,不是这样,第一个内容需要在点击第 2 或第 3 项时可见并消失....
    • 但是通过一些测试和混乱,我找到了一个可行的解决方案:请参阅oene-jacq.nl/sdouma-html/test.html 了解我是如何做到的......我基本上使用了@Amites Chauhan sollution,并将硬链接导航链接中的页面,其中包含#content1,因此它会出现......谢谢!
    • 哇!好东西。 @Amitesh Chauhan
    【解决方案2】:

    我们需要为任何事件动作调用 js。以下是显示标签的代码。

    $('.navigationcontainer').addClass('hide');
    $('.navigationcontainer').eq(0).removeClass('hide');
    $('.navigation li').eq(0).find('a').addClass('active');
    $('.navigation a').click(function(e){
      e.preventDefault()
      $('.navigation a').removeClass('active');
      $(this).addClass('active');
      var id = $(this).attr('href');
      $(id).removeClass('hide').siblings('div').addClass('hide');
    })
    .navigation {background:blue;width:100%;}
    .navigation li {display:inline-block;width: 5em;background:white;color:black;padding:1em;}
    .navigation a {text-decoration:none;}
    .navigation a.active{background:red;}
    
    #content1 {background:green;color:white;padding:5em;}
    #content2 {background:orange;color:white;padding:5em;}
    #content3 {background:black;color:white;padding:5em;}
    
    .navigationcontainer.hide{display:none;}
    
    .item1:hover #content1 {display:block;}
    .item1:hover #content2 {display:none;}
    .item1:hover #content3 {display:none;}
    
    .item2:hover #content1 {display:none;}
    .item2:hover #content2 {display:block;}
    .item2:hover #content3 {display:none;}
    
    .item3:hover #content1 {display:none;}
    .item3:hover #content2 {display:none;}
    .item3:hover #content3 {display:block;}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <nav class="navigation">
          <ul>
          <li class="item1"><a href="#content1">content1</a></li>
          <li class="item2"><a href="#content2">content2</a></li>
          <li class="item3"><a href="#content3">content3</a></li>
          </ul>
        </nav>
    <div class="navigationwrapper">
    <div id="content1" class="navigationcontainer">content 1 text</div>
    <div id="content2" class="navigationcontainer">content 2 text</div>
    <div id="content3" class="navigationcontainer">content 3 text</div>
      </div>

    【讨论】:

    • JS 未在问题中标记
    • 这也可以像我希望的那样工作,但是正在使用 java,如果可能的话,我不想使用 java..... 无论如何,谢谢您的回答。当无法绕过 java 时,我可能会使用它!
    • 它在我的网站上无法正常工作...在 jsfiddle 中,我需要将
    • 在 jsfiddle 中需要在 External Resources 中添加 jquery library js url 才能正常工作
    • 您是否在控制台中遇到任何问题。
    【解决方案3】:

    这是使用 css 的代码。

    .navigation {background:blue;width:100%;}
    .navigation li {display:inline-block;width: 5em;background:white;color:black;padding:1em;}
    .navigation a {text-decoration:none;}
    .navigation a.active{background:red;}
    
    #content1 {background:green;color:white;padding:5em;}
    #content2 {background:orange;color:white;padding:5em;}
    #content3 {background:black;color:white;padding:5em;}
    
    .navigationcontainer{display:none;}
    .inputelement:checked ~ .navigationwrapper .navigationcontainer{display:none;}
    
    
    .one:checked ~ .navigationwrapper #content1{display:block;}
    .two:checked ~ .navigationwrapper #content2{display:block;}
    .three:checked ~ .navigationwrapper #content3{display:block;}
    
    span{display:inline-block; background:yellow; width:100px; height:50px}
    .inputelement{position:absolute;width:100px; height:50px; opacity:0;}
    .inputelement:checked + span{background:red;}
    <input type="radio" class="inputelement one" name="menu" checked />
    <span>content1</span>
    <input type="radio" class="inputelement two" name="menu" />
    <span>content2</span>
    <input type="radio" class="inputelement three" name="menu" />
    <span>content3</span>
    <div class="navigationwrapper">
    <div id="content1" class="navigationcontainer">content 1 text</div>
    <div id="content2" class="navigationcontainer">content 2 text</div>
    <div id="content3" class="navigationcontainer">content 3 text</div>
      </div>

    【讨论】:

    • 这确实是实现我想要的东西的好方法,但是我想在我正在构建的 wordpress 主题中使用它。 wordpress 使用 nav, ul li 的东西。有什么方法可以将它与 nav, ul, li 一起使用吗?而且我仍然想念我的菜单栏....
    • 我觉得不可能。因为我们无法使用 css 选择器导航到父子节点。
    • 好的,谢谢你的好主意!对于我正在构建的特定菜单项,我的选项卡式菜单栏可能会派上用场
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多