1.會伸縮的搜索表單
常在 sf.gg 混的人都知道,它的頂部導航欄是這樣的:
當輸入框獲得焦點就會變成這樣的:
利用 CSS3 的 Transition 屬性,我們可以簡單做出一個類似的搜索表單出來:
HTML 標記:
XML/HTML Code復制內容到剪貼板
CSS 樣式:
CSS Code復制內容到剪貼板
*{
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過渡
示例:
CSS Code復制內容到剪貼板
-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 屬性來實現動畫效果。