如何建立一个样式新颖的css3搜索框

html-css020

如何建立一个样式新颖的css3搜索框,第1张

搜索框大概是web开发中最常用的UI元素之一,我想基本没有必要去介绍如何使用它。无论是网站还是web应用,都会为了增强用户体验而添加它,那么你是不是也想过设计一个别致的搜索框?

在今天的文章中,大家将会学到如何使用伪元素来创建一个超酷的CSS3搜索框。当然在开始介绍前你也可以下载源代码或者查看在线演示。

HTML举例:

正如接下来你所看到的,标记很少,并且很容易理解:

<form class=“cf form-wrapper”>

<input type=“text” placeholder=“Search here.。.” required>

<button type=“submit”>Search</button>

</form>

你可能注意到了HTML5的特殊属性,像placeholder和required,简介如下:

.placeholder-基本上,这个属性的作用在于当文本框获得焦点之前,先在文本框里显示一个域的信息,直到获得焦点后,域的信息被隐藏。

.required-这个属性说明了当前元素是表单提交中的一个必需属性。

HTML5也给我们带来了一个新的type属性:type="search"。

小贴士:HTML 元素像img 和input 都没有内容,所以,像before这样的伪元素不会为我们的搜索框呈现任何箭头。我的解决方案是使用button type=“submit” 元素代替普通的input type=“submit”。这样,我们就可以用ENTER键来提交表单。

CSS举例

接下来,你将会看到demo里必要的样式:

清除浮动

.cf:before, .cf:after{

content:“”

display:table

}

.cf:after{

clear:both

}

.cf{

zoom:1

}

表单元素

有前缀的属性像-moz、-box、-shadow 不包括在内,我只想让下面的代码保持干净。

/* Form wrapper styling */

.form-wrapper {

width: 450px

padding: 15px

margin: 150px auto 50px auto

background: #444

background: rgba(0,0,0,.2)

border-radius: 10px

box-shadow: 0 1px 1px rgba(0,0,0,.4) inset, 0 1px 0 rgba(255,255,255,.2)

}

/* Form text input */

.form-wrapper input {

width: 330px

height: 20px

padding: 10px 5px

float: left

font: bold 15px ‘lucida sans’, ‘trebuchet MS’, ‘Tahoma’

border: 0

background: #eee

border-radius: 3px 0 0 3px

}

.form-wrapper input:focus {

outline: 0

background: #fff

box-shadow: 0 0 2px rgba(0,0,0,.8) inset

}

.form-wrapper input::-webkit-input-placeholder {

color: #999

font-weight: normal

font-style: italic

}

.form-wrapper input:-moz-placeholder {

color: #999

font-weight: normal

font-style: italic

}

.form-wrapper input:-ms-input-placeholder {

color: #999

font-weight: normal

font-style: italic

}

/* Form submit button */

.form-wrapper button {

overflow: visible

position: relative

float: right

border: 0

padding: 0

cursor: pointer

height: 40px

width: 110px

font: bold 15px/40px ‘lucida sans’, ‘trebuchet MS’, ‘Tahoma’

color: #fff

text-transform: uppercase

background: #d83c3c

border-radius: 0 3px 3px 0

text-shadow: 0 -1px 0 rgba(0, 0 ,0, .3)

}

.form-wrapper button:hover{

background: #e54040

}

.form-wrapper button:active,

.form-wrapper button:focus{

background: #c42f2f

outline: 0

}

.form-wrapper button:before { /* left arrow */

content: ‘’

position: absolute

border-width: 8px 8px 8px 0

border-style: solid solid solid none

border-color: transparent #d83c3c transparent

top: 12px

left: -6px

}

.form-wrapper button:hover:before{

border-right-color: #e54040

}

.form-wrapper button:focus:before,

.form-wrapper button:active:before{

border-right-color: #c42f2f

}

.form-wrapper button::-moz-focus-inner { /* remove extra button spacing for Mozilla Firefox */

border: 0

padding: 0

}

1、新建html文档。

2、书写hmtl代码。

<div class="container">

<div id="search">

<label for="search">点击查看效果(<a href="#" target="_blank">11111111111</a>):</label>

<input type="text" name="q">

<input class="button" type="submit" value="Search">

</div>

</div>

3、书写css代码。

<style>

body { background-color: #f1f1f1margin: 0}

body,  input,  button { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif}

.container { margin: 30px auto 40px autowidth: 800pxtext-align: center}

a { color: #4183c4text-decoration: nonefont-weight: bold}

a:hover { text-decoration: underline}

h3 { color: #666}

ul { list-style: nonepadding: 25px 0}

li { display: inlinemargin: 10px 50px 10px 0px}

input[type=text],  input[type=password] { font-size: 13pxmin-height: 32pxmargin: 0

padding: 7px 8pxoutline: nonecolor: #333background-color: #fffbackground-repeat:

no-repeatbackground-position: right centerborder: 1px solid #cccborder-radius: 3px

box-shadow: inset 0 1px 2px rgba(0,0,0,0.075)-moz-box-sizing: border-boxbox-sizing:

border-boxtransition: all 0.15s ease-in-webkit-transition: all 0.15s ease-in 0vertical-align: middle}

button { position: relativedisplay: inline-blockmargin: 0padding: 8px 15pxfont-size:

13pxfont-weight: boldcolor: #333text-shadow: 0 1px 0 rgba(255,255,255,0.9)white

space: nowrapbackground-color: #eaeaeabackground-image: -moz-linear

gradient(#fafafa, #eaeaea)background-image: -webkit-linear-gradient(#fafafa, #eaeaea)

background-image: linear-gradient(#fafafa, #eaeaea)background-repeat: repeat-x

border-radius: 3pxborder: 1px solid #dddborder-bottom-color: #c5c5c5box-shadow:

01px 3px rgba(0,0,0,.05)vertical-align: middlecursor: pointer-moz-box-sizing: border-box

box-sizing: border-box-webkit-touch-callout: none-webkit-user-select: none-khtml

user-select: none-moz-user-select: none-ms-user-select: noneuser-select: none

webkit-appearance: none}

.button:hover,  .button:active { background-position: 0 -15pxborder-color: #ccc #ccc

#b5b5b5}

.button:active { background-color: #dadadaborder-color: #b5b5b5background-image:

nonebox-shadow: inset 0 3px 5px rgba(0,0,0,.15)}

.button:focus,  input[type=text]:focus,  input[type=password]:focus { outline: noneborder

color: #51a7e8box-shadow: inset 0 1px 2px rgba(0,0,0,.075), 0 0 5px rgba(81,167,232,.5)}

label[for=search] { display: blocktext-align: left}

#search label { font-weight: 200padding: 5px 0}

#search input[type=text] { font-size: 18pxwidth: 705px}

#search .button { padding: 10pxwidth: 90px}

</style>

4、代码整体结构。

5、查看效果。

HTML 元素像img 和input 都没有内容,所以,像before这样的伪元素不会为我们的搜索框呈现任何箭头。我的解决方案是使用button type=“submit” 元素代替普通的input type=“submit”。这样,我们就可以用ENTER键来提交表单。