Html 选项卡式导航

Html 选项卡式导航,html,css,Html,Css,我很难想出如何做到以下几点: 我想有两个标签(水平,彼此相邻),一个用于搜索(并标记为这样),另一个用于发布(标记为这样)。选择“搜索”选项卡时,我希望显示一个搜索框;选择“发布”选项卡时,我希望显示另一个搜索框。我不希望搜索框被隐藏。我猜它本质上是使用CSS的标签导航,但我一辈子都不知道如何让它工作 这是我到目前为止使用的html(我是新手,所以请提供任何建议) 这是纯css的最佳选择 /// Markup <ul class="tabs"> &

我很难想出如何做到以下几点:

我想有两个标签(水平,彼此相邻),一个用于搜索(并标记为这样),另一个用于发布(标记为这样)。选择“搜索”选项卡时,我希望显示一个搜索框;选择“发布”选项卡时,我希望显示另一个搜索框。我不希望搜索框被隐藏。我猜它本质上是使用CSS的标签导航,但我一辈子都不知道如何让它工作

这是我到目前为止使用的html(我是新手,所以请提供任何建议)



这是纯css的最佳选择

/// Markup

<ul class="tabs">
        <li tabindex="1">
            <a>Search</a>
            <div class="tab-content">
                Search : <input type="text" />
            </div> 
        </li>
        <li tabindex="1">
            <a>Post</a>
            <div class="tab-content">
                Post: <input type="text" />
            </div> 
        </li>
    </ul>


/// CSS

html,
body {
  height: 100%;
  width: 100%;
  margin: 0;
  overflow: hidden;
}
ul.tabs li {
  float: left;
  margin: 20px 0 5px 10px;
  list-style: none;
  width: 100px;
}
ul.tabs li a {
  display: block;
  background-color: #ccc;
  padding: 5px 10px;
  cursor: pointer;
  text-align: center;
}
ul.tabs li a:hover {
  background-color: #7cc6fb;
}
ul.tabs li:focus {
  outline: none;
}
ul.tabs li:focus > a {
  background-color: #0094ff;
}
ul.tabs li:focus .tab-content {
  z-index: 100;
}
ul.tabs li .tab-content {
  position: absolute;
  left: 20px;
  top: 70px;
  right: 20px;
  bottom: 20px;
  z-index: 10;
  padding: 50px;
  background-color: #fff;
  border: 1px solid #999;
}
///标记
  • 搜寻 搜索:
  • 邮递 职位:
///CSS html, 身体{ 身高:100%; 宽度:100%; 保证金:0; 溢出:隐藏; } 李先生{ 浮动:左; 利润率:20px 0 5px 10px; 列表样式:无; 宽度:100px; } ul.lia{ 显示:块; 背景色:#ccc; 填充物:5px10px; 光标:指针; 文本对齐:居中; } ul.a:悬停{ 背景色:#7cc6fb; } 李:聚焦{ 大纲:无; } ul.tabs li:焦点>a{ 背景色:#0094ff; } ul.tabs li:焦点。选项卡内容{ z指数:100; } ul.tabs li.选项卡内容{ 位置:绝对位置; 左:20px; 顶部:70像素; 右:20px; 底部:20px; z指数:10; 填充:50px; 背景色:#fff; 边框:1px实心#999; }
这是如何使用
:target
伪类实现的

加成
使用纯css还有另一种方法。难点在于保留选项卡的“活动”状态,这可以通过使用选项卡按钮上的
单选输入来实现。这有点粗俗,但效果很好

html将如下所示:

<ul class="tabs">
    <li class="tabs-page">
        <input type='radio' name='tab' id='tab-search' checked/>
        <label for='tab-search'>Search</label>
        <div class="content">
            <h2>The search page</h2>
        </div>
    </li>
    <li class="tabs-page">
        <input type='radio' name='tab' id='tab-post' />
        <label for='tab-post'>Post</label>
        <div class="content">
            <h2>The post page</h2>
        </div>
    </li>
</ul>
input[name='tab'] {
    display: none;
}
input[name='tab'] ~ .content {
    display: none;
}
input[name='tab']:checked ~ .content {
    display: block;
}
通过组合
:checked
选择器(检测“选项卡按钮”的状态)和同级
~
选择器,您可以确定应该显示哪个选项卡页面

我也为您树立了一个小榜样:

很抱歉我上一篇文章。我稍微修改了Danield的选项卡式视图,现在它的可扩展性和可靠性更高了

丹克斯·丹尼尔

    li {
                display: inline-block;
                margin-right: 10px;
                list-style: none;
            }

            .frame {
                display: none;
            }

                .frame:target {
                    display: block;
                }





    /// Markup


    <div id="navigation">
            <ul class="nav">
                <li><a href="#tab1">Tab1</a></li>
                <li><a href="#tab2">Tab2</a></li>
                <li><a href="#tab3">Tab3</a></li>
                <li><a href="#tab4">Tab4</a></li>
            </ul>
        </div>

            <div id="tab1" class="frame">
                <p>
                    Tab 1
                </p>
            </div>

            <div id="tab2" class="frame">
                <p>
                    Tab 2
                </p>
            </div>

            <div id="tab3" class="frame">
                <p>
                    Tab 3
                </p>
            </div>

            <div id="tab4" class="frame">
                <p>
                    Tab 4
                </p>
            </div>
li{
显示:内联块;
右边距:10px;
列表样式:无;
}
.框架{
显示:无;
}
.帧:目标{
显示:块;
}
///加价
表1

表2

表3

表4


请为我们提供一些代码(例如,via)以及您目前所获得的内容。您可以使用纯css和:target伪类来实现这一点,但这通常是通过javascript实现的。上面的一个有很多限制。您可以很容易地使用:目标选择器和设置或覆盖z索引值、显示或可见性等来创建选项卡式视图。与:目标选择器类似,您可以使用id属性锚定选项卡内容框架。i、 e并使用id=“search”定义一个元素,以便浏览器本身知道该做什么。然后可以捕获“onhashchange”事件并相应地切换元素。但这需要一点javascript。(最多10行)您明确表示不希望在任何帧上显示:无。这就是为什么这个黑客。
<ul class="tabs">
    <li class="tabs-page">
        <input type='radio' name='tab' id='tab-search' checked/>
        <label for='tab-search'>Search</label>
        <div class="content">
            <h2>The search page</h2>
        </div>
    </li>
    <li class="tabs-page">
        <input type='radio' name='tab' id='tab-post' />
        <label for='tab-post'>Post</label>
        <div class="content">
            <h2>The post page</h2>
        </div>
    </li>
</ul>
input[name='tab'] {
    display: none;
}
input[name='tab'] ~ .content {
    display: none;
}
input[name='tab']:checked ~ .content {
    display: block;
}
    li {
                display: inline-block;
                margin-right: 10px;
                list-style: none;
            }

            .frame {
                display: none;
            }

                .frame:target {
                    display: block;
                }





    /// Markup


    <div id="navigation">
            <ul class="nav">
                <li><a href="#tab1">Tab1</a></li>
                <li><a href="#tab2">Tab2</a></li>
                <li><a href="#tab3">Tab3</a></li>
                <li><a href="#tab4">Tab4</a></li>
            </ul>
        </div>

            <div id="tab1" class="frame">
                <p>
                    Tab 1
                </p>
            </div>

            <div id="tab2" class="frame">
                <p>
                    Tab 2
                </p>
            </div>

            <div id="tab3" class="frame">
                <p>
                    Tab 3
                </p>
            </div>

            <div id="tab4" class="frame">
                <p>
                    Tab 4
                </p>
            </div>