1.会伸缩的搜索表单
常在 sf.gg 混的人都知道,它的顶部导航栏是这样的:
当输入框获得焦点就会变成这样的:
利用 CSS3 的 Transition 属性,我们可以简单做出一个类似的搜索表单出来:
HTML 标记:
<header>
<form action="#" method="post" class="searchForm">
<label for="search">search</label>
<input type="search" id="search" name="search" placeholder="search">
</form>
</header>
CSS 样式:
*{
margin: 0;
padding: 0;
}
header{
font-family: helvetica,arial,sans-serif;
display: block;
overflow: hidden;
width:500px;
margin: 15px;
border-radius: 3px;
background-color: #ddd;
}
form.searchForm{
/*包含label和input的容器*/
width: 200px;
margin: 5px;
padding: 5px;
}
form.searchForm input{
width: 90px;
padding: 2px 0 3px 5px;
outline: none;
font-size: 1.2em;
border-color: #eee #ccc #ccc #eee;
border-radius: 10px;
/*针对webkit内核的浏览器的厂商前缀*/
-webkit-transition:0.5s width;
}
form.searchForm input:focus{
width: 400px; /*如果失去焦点,则缩回原来长度*/
}
form.searchForm label{
display: none; /*标注是必要的,但不用显示出来*/
}
效果图:
默认:
获得焦点:
对于那些可以输入的控件,大家又俗称其为 字段。每个表单控件(
submit
按钮除外),都有一个对应的label
文本元素,用于描述控件代表的数据。所以,一个搜索框就是 一个字段的表单。
2.CSS3过渡
示例:
-webkit-transition:0.5s width;
注意:
transition
属性需要使用带厂商前缀的形式——这里示例只带有Webkit
(Chrome / Safari)前缀的属性。
CSS3 过渡可以让 CSS 属性产生动画效果。平常被某些事件触发时变化很突然的样式,比如鼠标悬停时改变链接颜色,使用过渡后会在指定的时间段内逐渐变化。第一条 CSS 规则设定属性的初始状态和过渡参数。第二条 CSS 规则设定事件发生时属性的目标状态。
通常,过渡动画是由用户鼠标悬停时的 :hover
伪类规则和表单元素获得焦点时的 :focus
伪类规则触发的。除此之外,还可以在一个带类名选择符的规则中设定新状态,然后通过 JavaScript(或其他 JS 类库)为元素添加这个类名来触发过渡,添加类名的时机可以是鼠标点击或其它事件发生时。
有五个过渡属性:
-
transition-property
,过渡的 CSS 属性名,比如 color、 width; -
transition-duration
,过渡的持续时间,以秒或毫秒设定,比如 2s、 500ms; -
transition-timing-function
,过渡的调速函数,决定动画效果是否平滑,是先慢后快还
是先快后慢,比如 ease-in、 ease-out、 ease-in-out 或 linear(默认值); -
transition-delay
,过渡开始前的延迟时间,以秒或毫秒设定,比如 1s、 200ms; -
transition
,过渡的简写属性,例如 transition:color 2s ease-in 1ms; 。
注意::很多(并非全部)CSS 属性都可以通过
transition
属性来实现动画效果。
源码下载
推荐阅读
- CSS3 过渡 - W3School
- CSS3 transition 属性 - W3School
- CSS3 Transition - W3CPlus
- CSS Transitions - W3CWorking Draft
参考资料
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。