如何为可扩展搜索栏编写代码,将导航 link 变成一个方框?
How to write code for an expandable search bar, with a nav link that becomes a box?
我意识到这个问题一定很难理解,但我真的不知道如何用几句话来解释我想要实现的目标。简而言之,我正在尝试使用搜索功能自定义一个 tumblr 主题,当将鼠标悬停在它上面时,它看起来像 link,但当点击它时,它就像一个可扩展的搜索框。基本上是这样的:search box
我的现在看起来像这样:my search box
代码如下:
.nav {
font-family: 'Montserrat' 'Helvetica Neue' "Arial", serif;
text-transform: uppercase;
font-weight: 400;
padding: 16px 0;
margin-bottom: 80px;
font-size: 12px;
text-align: center;
border-bottom: 2px solid {color:Dividers};
}
.nav li {
margin:0 10px;
display: inline;
line-height: 1;
}
.nav a {
text-decoration: none;
color: {color:Nav}
}
.nav body {
background: #fff;
color: #666;
font: 90%/180% 'Montserrat' 'Helvetica Neue' "Arial", serif;
width: 800px;
max-width: 96%;
margin: 0 auto;
}
/*a {
color: #69C;
text-decoration: none;
}
a:hover {
color: #F60;
}*/
h1 {
font: 12px;
line-height: 110%;
color: #000;
}
p {
margin: 0 0 20px;
}
input {
outline: none;
}
input[type=search] {
-webkit-appearance: textfield;
-webkit-box-sizing: content-box;
font-family: inherit;
font-size: 12px;
}
input::-webkit-search-decoration,
input::-webkit-search-cancel-button {
display: none;
}
input[type=search] {
background: #ededed url(https://static.tumblr.com/ftv85bp /MIXmud4tx/search-icon.png) no-repeat 9px center;
border: solid 1px #ccc;
padding: 9px 10px 9px 32px;
width: 55px;
-webkit-border-radius: 10em;
-moz-border-radius: 10em;
border-radius: 10em;
-webkit-transition: all .5s;
-moz-transition: all .5s;
transition: all .5s;
}
input[type=search]:focus {
width: 130px;
background-color: #fff;
border-color: #66CC75;
-webkit-box-shadow: 0 0 5px rgba(109,207,246,.5);
-moz-box-shadow: 0 0 5px rgba(109,207,246,.5);
box-shadow: 0 0 5px rgba(109,207,246,.5);
}
input:-moz-placeholder {
color: #999;
}
input::-webkit-input-placeholder {
color: #999;
}
<div class="nav">
{block:HasPages}
{block:Pages}<li><a href="{URL}">{Label}</a></li>{block:Pages}
{/block:HasPages}
{block:AskEnabled}<li><a href="/ask">Ask</a></li>{/block:AskEnabled}
{block:SubmissionsEnabled}<li><a href="/submit">Submit</a></li>{/block:SubmissionsEnabled}
<li><a href="/archive">Archive</a></li>
<li><form style="display: inline-block" action='/search'class='search-form' id='nav-search' method='get'>
<input class='header-search-field' name='q' type='search' placeholder='Search'/></form>
</li>
</div>
我知道代码不是我想要实现的目标的正确代码,但这是我有限的编码知识所能做到的最好的。
我应该提一下,目前的搜索功能不是特别好(即它没有 return 它应该的所有结果,只有几个标记的元素),但我不知道问题出在哪里。
您可以编辑 css 文件以获得您想要的效果。
在您的例子中, input[type=search]
标签定义了搜索框未聚焦时的外观。为了删除边框,你定义border:none
属性,否则它会默认为浏览器的值。
您可能也不希望 background
属性 使您的搜索框变灰并带有放大镜图标。
因此,您的 css 文件的段更改为:
input[type=search] {
border: none;
padding: 9px 10px 9px 32px;
width: 55px;
...
}
片段:
.nav {
font-family: 'Montserrat' 'Helvetica Neue' "Arial", serif;
text-transform: uppercase;
font-weight: 400;
padding: 16px 0;
margin-bottom: 80px;
font-size: 12px;
text-align: center;
border-bottom: 2px solid {color:Dividers};
}
.nav li {
margin:0 10px;
display: inline;
line-height: 1;
}
.nav a {
text-decoration: none;
color: {color:Nav}
}
.nav body {
background: #fff;
color: #666;
font: 90%/180% 'Montserrat' 'Helvetica Neue' "Arial", serif;
width: 800px;
max-width: 96%;
margin: 0 auto;
}
/*a {
color: #69C;
text-decoration: none;
}
a:hover {
color: #F60;
}*/
h1 {
font: 12px;
line-height: 110%;
color: #000;
}
p {
margin: 0 0 20px;
}
input {
outline: none;
}
input[type=search] {
-webkit-appearance: textfield;
-webkit-box-sizing: content-box;
font-family: inherit;
font-size: 12px;
}
input::-webkit-search-decoration,
input::-webkit-search-cancel-button {
display: none;
}
input[type=search] {
border: none;
padding: 9px 10px 9px 32px;
width: 55px;
-webkit-border-radius: 10em;
-moz-border-radius: 10em;
border-radius: 10em;
-webkit-transition: all .5s;
-moz-transition: all .5s;
transition: all .5s;
}
input[type=search]:focus {
width: 130px;
background-color: #fff;
border-color: #66CC75;
-webkit-box-shadow: 0 0 5px rgba(109,207,246,.5);
-moz-box-shadow: 0 0 5px rgba(109,207,246,.5);
box-shadow: 0 0 5px rgba(109,207,246,.5);
}
input:-moz-placeholder {
color: #999;
}
input::-webkit-input-placeholder {
color: #999;
}
<div class="nav">
{block:HasPages}
{block:Pages}<li><a href="{URL}">{Label}</a></li>{block:Pages}
{/block:HasPages}
{block:AskEnabled}<li><a href="/ask">Ask</a></li>{/block:AskEnabled}
{block:SubmissionsEnabled}<li><a href="/submit">Submit</a></li>{/block:SubmissionsEnabled}
<li><a href="/archive">Archive</a></li>
<li><form style="display: inline-block" action='/search'class='search-form' id='nav-search' method='get'>
<input class='header-search-field' name='q' type='search' placeholder='Search'/></form>
</li>
</div>
如果您希望在点击搜索框时编辑背景颜色,您必须将 属性 添加到 input[type=search]:focus
标签。
我意识到这个问题一定很难理解,但我真的不知道如何用几句话来解释我想要实现的目标。简而言之,我正在尝试使用搜索功能自定义一个 tumblr 主题,当将鼠标悬停在它上面时,它看起来像 link,但当点击它时,它就像一个可扩展的搜索框。基本上是这样的:search box
我的现在看起来像这样:my search box
代码如下:
.nav {
font-family: 'Montserrat' 'Helvetica Neue' "Arial", serif;
text-transform: uppercase;
font-weight: 400;
padding: 16px 0;
margin-bottom: 80px;
font-size: 12px;
text-align: center;
border-bottom: 2px solid {color:Dividers};
}
.nav li {
margin:0 10px;
display: inline;
line-height: 1;
}
.nav a {
text-decoration: none;
color: {color:Nav}
}
.nav body {
background: #fff;
color: #666;
font: 90%/180% 'Montserrat' 'Helvetica Neue' "Arial", serif;
width: 800px;
max-width: 96%;
margin: 0 auto;
}
/*a {
color: #69C;
text-decoration: none;
}
a:hover {
color: #F60;
}*/
h1 {
font: 12px;
line-height: 110%;
color: #000;
}
p {
margin: 0 0 20px;
}
input {
outline: none;
}
input[type=search] {
-webkit-appearance: textfield;
-webkit-box-sizing: content-box;
font-family: inherit;
font-size: 12px;
}
input::-webkit-search-decoration,
input::-webkit-search-cancel-button {
display: none;
}
input[type=search] {
background: #ededed url(https://static.tumblr.com/ftv85bp /MIXmud4tx/search-icon.png) no-repeat 9px center;
border: solid 1px #ccc;
padding: 9px 10px 9px 32px;
width: 55px;
-webkit-border-radius: 10em;
-moz-border-radius: 10em;
border-radius: 10em;
-webkit-transition: all .5s;
-moz-transition: all .5s;
transition: all .5s;
}
input[type=search]:focus {
width: 130px;
background-color: #fff;
border-color: #66CC75;
-webkit-box-shadow: 0 0 5px rgba(109,207,246,.5);
-moz-box-shadow: 0 0 5px rgba(109,207,246,.5);
box-shadow: 0 0 5px rgba(109,207,246,.5);
}
input:-moz-placeholder {
color: #999;
}
input::-webkit-input-placeholder {
color: #999;
}
<div class="nav">
{block:HasPages}
{block:Pages}<li><a href="{URL}">{Label}</a></li>{block:Pages}
{/block:HasPages}
{block:AskEnabled}<li><a href="/ask">Ask</a></li>{/block:AskEnabled}
{block:SubmissionsEnabled}<li><a href="/submit">Submit</a></li>{/block:SubmissionsEnabled}
<li><a href="/archive">Archive</a></li>
<li><form style="display: inline-block" action='/search'class='search-form' id='nav-search' method='get'>
<input class='header-search-field' name='q' type='search' placeholder='Search'/></form>
</li>
</div>
我知道代码不是我想要实现的目标的正确代码,但这是我有限的编码知识所能做到的最好的。
我应该提一下,目前的搜索功能不是特别好(即它没有 return 它应该的所有结果,只有几个标记的元素),但我不知道问题出在哪里。
您可以编辑 css 文件以获得您想要的效果。
在您的例子中, input[type=search]
标签定义了搜索框未聚焦时的外观。为了删除边框,你定义border:none
属性,否则它会默认为浏览器的值。
您可能也不希望 background
属性 使您的搜索框变灰并带有放大镜图标。
因此,您的 css 文件的段更改为:
input[type=search] {
border: none;
padding: 9px 10px 9px 32px;
width: 55px;
...
}
片段:
.nav {
font-family: 'Montserrat' 'Helvetica Neue' "Arial", serif;
text-transform: uppercase;
font-weight: 400;
padding: 16px 0;
margin-bottom: 80px;
font-size: 12px;
text-align: center;
border-bottom: 2px solid {color:Dividers};
}
.nav li {
margin:0 10px;
display: inline;
line-height: 1;
}
.nav a {
text-decoration: none;
color: {color:Nav}
}
.nav body {
background: #fff;
color: #666;
font: 90%/180% 'Montserrat' 'Helvetica Neue' "Arial", serif;
width: 800px;
max-width: 96%;
margin: 0 auto;
}
/*a {
color: #69C;
text-decoration: none;
}
a:hover {
color: #F60;
}*/
h1 {
font: 12px;
line-height: 110%;
color: #000;
}
p {
margin: 0 0 20px;
}
input {
outline: none;
}
input[type=search] {
-webkit-appearance: textfield;
-webkit-box-sizing: content-box;
font-family: inherit;
font-size: 12px;
}
input::-webkit-search-decoration,
input::-webkit-search-cancel-button {
display: none;
}
input[type=search] {
border: none;
padding: 9px 10px 9px 32px;
width: 55px;
-webkit-border-radius: 10em;
-moz-border-radius: 10em;
border-radius: 10em;
-webkit-transition: all .5s;
-moz-transition: all .5s;
transition: all .5s;
}
input[type=search]:focus {
width: 130px;
background-color: #fff;
border-color: #66CC75;
-webkit-box-shadow: 0 0 5px rgba(109,207,246,.5);
-moz-box-shadow: 0 0 5px rgba(109,207,246,.5);
box-shadow: 0 0 5px rgba(109,207,246,.5);
}
input:-moz-placeholder {
color: #999;
}
input::-webkit-input-placeholder {
color: #999;
}
<div class="nav">
{block:HasPages}
{block:Pages}<li><a href="{URL}">{Label}</a></li>{block:Pages}
{/block:HasPages}
{block:AskEnabled}<li><a href="/ask">Ask</a></li>{/block:AskEnabled}
{block:SubmissionsEnabled}<li><a href="/submit">Submit</a></li>{/block:SubmissionsEnabled}
<li><a href="/archive">Archive</a></li>
<li><form style="display: inline-block" action='/search'class='search-form' id='nav-search' method='get'>
<input class='header-search-field' name='q' type='search' placeholder='Search'/></form>
</li>
</div>
如果您希望在点击搜索框时编辑背景颜色,您必须将 属性 添加到 input[type=search]:focus
标签。