Мне трудно понять, как сделать следующее:
Я хочу иметь две вкладки (горизонтальные рядом друг с другом), одну для поиска (и помечен как таковой), а другую для записи (помечен как таковой). Когда выбрана вкладка поиска, я хочу, чтобы окно поиска присутствовало, и когда выбрана вкладка post, я хочу, чтобы в нем присутствовало другое окно поиска. Я не хочу, чтобы окна поиска были скрыты. Я предполагаю, что это по существу табуляция навигации с использованием CSS, но я не могу на всю жизнь понять, как заставить ее работать.
это html, который у меня есть до сих пор (я новичок в этом, поэтому, пожалуйста, любой совет будет замечательным)
<div id="navigation">
<ul class="nav">
<li class="first-selected"><a href="">Search</a></li>
<div class="search">
<p><form method="post" action="twocents.html">
<label for="Search"></label>
<input type="text" name="Search" id="Search"/>
<input type="submit" value="Search"/></p>
</div>
<li class="second-selected"><a href="">Post</a></li>
<div class="post">
<p><form method="post" action="twocents.html">
<label for="Search"></label>
<input type="text" name="Post" id="Post"/>
<input type="submit" value="Post"/></p>
</div>
</ul>
</div>
Извините за мой предыдущий пост. Я немного изменил вкладку с вкладками Danile, и теперь он масштабируется и более надежен.
Thanx 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>
Есть и другой способ с чистым css. Трудность заключается в сохранении "активное" состояния вкладки, и это может быть сделано с помощью radio
- входа на кнопке вкладки. Это немного хакерский, но он отлично работает
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>
Обратите внимание на входы и метки, которые будут служить в качестве кнопок. (также обратите внимание, что я исправил вашу разметку, вы можете использовать только li
как прямой дочерний элемент ul
!)
Css будет выглядеть примерно так:
input[name='tab'] {
display: none;
}
input[name='tab'] ~ .content {
display: none;
}
input[name='tab']:checked ~ .content {
display: block;
}
Объединив селектор :checked
(чтобы определить состояние кнопки "tab") и селектор sibling ~
, вы можете определить, какую вкладку следует отображать.
Я также привел небольшой пример для вас: http://jsfiddle.net/j9YbW/
Так вы делаете это с помощью :target
pseudo class
<div id="navigation">
<ul class="nav">
<li class="first-selected"><a href="#Search">Search</a></li>
<li class="second-selected"><a href="#Post">Post</a></li>
</ul>
</div>
<div id="Post" class="post">
<p><form method="post" action="twocents.html">
<label for="Search"></label>
<input type="text" name="Post" id="Post"/>
<input type="submit" value="Post"/></p>
</div>
<div id="Search" class="search">
<p><form method="post" action="twocents.html">
<label for="Search"></label>
<input type="text" name="Search" id="Search"/>
<input type="submit" value="Search"/></p>
</div>
li
{
display: inline-block;
}
.search
{
display: block;
}
.post
{
display:none;
}
.post:target
{
display: block;
}
.post:target + .search
{
display: none;
}
Это лучшее, что вы могли бы сделать с чистым 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;
}