【问题标题】:Converting horizontal tabs to vertical tabs将水平选项卡转换为垂直选项卡
【发布时间】:2011-04-08 19:37:48
【问题描述】:

我正在尝试修改以下example 并制作垂直标签

我想我在某种程度上实现了这一点,唯一缺少的是将标签内容与容器顶部对齐。 (标签内容显示在标签列表下方)。

我被困住了,因为我不知道该怎么做。这是修改后的代码。

我提前为多行代码道歉。我是网页设计的新手,尽管这对我来说看起来很复杂,但我相信它对你们以前的人来说很简单!

CSS

body {
    background: #f0f0f0;
    margin: 0;
    padding: 0;
    font: 10px normal Verdana, Arial, Helvetica, sans-serif;
    color: #444;
    }
.container {width: 500px; margin: 10px auto;}
ul.tabs {
    margin: 0;
    padding: 0;
    float: left;
    list-style: none;
    height: 32px;
    border-bottom: 1px solid #999;
    border-left: 1px solid #999;
    width: 20%;
    }
ul.tabs li {
    float: top;
    margin: 0;
    padding: 0;
    height: 31px;
    line-height: 31px;
    border: 1px solid #999;
    border-left: none;
    margin-bottom: 0px;
    background: #e0e0e0;
    overflow: hidden;
    position: relative;
    }
ul.tabs li a {
    text-decoration: none;
    color: #000;
    display: block;
    font-size: 1.2em;
    padding: 0 20px;
    border: 1px solid #fff;
    outline: none;
}
ul.tabs li a:hover {
    background: #ccc;
}   
html ul.tabs li.active, html ul.tabs li.active a:hover  {
    background: #fff;
    border-bottom: 1px solid #fff;
}
.tab_container {
    border: 1px solid #999;
    width: 200%;
    background: #fff;
    -moz-border-radius-bottomright: 5px;
    -khtml-border-radius-bottomright: 5px;
    -webkit-border-bottom-right-radius: 5px;
    -moz-border-radius-bottomleft: 5px;
    -khtml-border-radius-bottomleft: 5px;
    -webkit-border-bottom-left-radius: 5px;
    }
.tab_content {
    padding: 120px;
    font-size: 1.2em;
    }
.tab_content h2 {
    font-weight: normal;
    padding-bottom: 10px;
    border-bottom: 1px dashed #ddd;
    font-size: 1.8em;
}

JavaScript

$(document).ready(function() {
    //Default Action
    $(".tab_content").hide(); //Hide all content
    $("ul.tabs li:first").addClass("active").show(); //Activate first tab
    $(".tab_content:first").show(); //Show first tab content

    //On Click Event
    $("ul.tabs li").click(function() {
    $("ul.tabs li").removeClass("active"); //Remove any "active" class
    $(this).addClass("active"); //Add "active" class to selected tab
    $(".tab_content").hide(); //Hide all tab content
    var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
    $(activeTab).fadeIn(); //Fade in the active content
    return false;
    });

});

HTML

<div class="container"> 
<ul class="tabs"> 
    <li><a href="#tab1">Gallery</a></li> 
    <li><a href="#tab2">Submit</a></li> 
    <li><a href="#tab2">The Third</a></li> 
</ul> 
<div class="tab_container"> 
    <div id="tab1" class="tab_content"> 
        <h2>Gallery</h2> 
        <p>Text 1 </p> 
    </div> 
    <div id="tab2" class="tab_content"> 
        <h2>Submit</h2> 
        <p>Text 2 </p> 
    </div> 
    <div id="tab3" class="tab_content"> 
        <h2>The last one</h2> 
        <p>Text 3 </p> 
    </div> 
</div> 
</div>

jsFiddle Demo

【问题讨论】:

  • 没有像float: top 这样的东西,而且你应用的样式比你需要的多 200%。 :)
  • 哈哈,我同意你的看法。一旦我得到这个想法,我就会开始报废(我想我快到了,多亏了马特的建议)。我也是所有这一切的新手,需要一些时间来弄清楚基本的东西......例如,感谢您指出没有float: top这样的东西!!!

标签: jquery css


【解决方案1】:

更改此 CSS 规则:

.tab_content {
    padding: 120px;
    font-size: 1.2em;
}

到这里:

.tab_content {
    padding-left: 120px;
    min-height: 240px;
    font-size: 1.2em;
}

http://jsfiddle.net/mattball/4BEm2/1/


编辑 OP 询问 “如果您单击第三个选项卡,您会注意到底部边框消失了。有没有办法解决这个问题?(并且理想情况下使活动选项卡的右边框消失)"

更改此 CSS 规则:

html ul.tabs li.active,
html ul.tabs li.active a:hover {
    background: #FFF;
    border-bottom: 1px solid #FFF;
}

到这里:

ul.tabs li.active {
    background: #FFF;
    border-right: 1px solid #FFF;
}

http://jsfiddle.net/mattball/4BEm2/2/

【讨论】:

  • 谢谢!最后一件事:如果单击第三个选项卡,您会注意到底部边框消失了。有办法解决吗? (理想情况下,使活动标签的右边框消失)
  • @Matt:这是在我的网站中开发垂直标签的好方法吗? (换句话说,您是否建议我使用其他一些 jquery 库来实现所需的选项卡效果?)
  • 如果它有效,它就有效。不过,至少您应该将其放入插件中。如果您确实想使用其他人已经可以使用的代码,请尝试this/this
  • @Matt Ball:很好的解释。我有一个问题:为什么在html代码中从#tab1#tab2...中删除“#”会导致标签系统无法正常工作?
  • @Rami:这是因为 jQuery 需要来自 href 属性的 # 来将其转换为 ID 选择器。另一种方法是从 href 中删除 #,并将 $(activeTab).fadeIn(); 更改为 $('#'+activeTab).fadeIn();。不过,在 href 中包含 # 的好处是,当 JavaScript 关闭时它会优雅地降级。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 2018-07-13
相关资源
最近更新 更多