從事網頁設計有一段時間了,  最近有一些學平面設計的朋友也想了解網頁前端設計的一些技巧 , 前端基本工不外乎就是強大的三大語言龍頭, H.C.J , 老實說,  我並沒有很會寫 javascript ,  jquery 但是htmlCSS倒是比較熟練, 今天我來說說 CSS3 當中非常迷人的hover效果  , 這對高手來說易如反掌, 不過對新手來說倒是挑戰性比較高 , 講解前建議你一定要對 html 標籤的父子關係要非常清楚,  不然會學的很痛苦。
(PS:例如 這個網站所呈現出來的效果

一般基礎的hover css 就是

<ul>
     <li>
        <img src="" alt="" />
         <span>test</span>
        <p>
javascript </p>
        <a href="#"> hover </a>
    </li>
</ul>

<style>
a { color:#eee; }
a:hover { color:#000; }
</style>

這樣是最基本的連結樣式, 等於只指定了a標籤在觸發時顏色由#eee 轉換為#000; 
若要做出一個比較華麗的效果是不行的, 有些新手會用這種方式企圖想讓整個 li 裡頭的元素都動起來
<style>
img:hover { opacity:.7;}
span { fon-size:13px;}
span:hover { fon-size:15px;}
p { fon-size:13px;}
p:hover { fon-size:15px;}
</style>

等於是把li裡頭所有的元素都個別添加一個hover  ,  看起來好像合理, 但這是個致命錯誤 , 因為你指定的是li裡頭的子孫們當觸發時要產生什麼效果
所以正確的做法是要這樣,  你必須將hover事件指派給 li , 讓 li 來告訴他的子孫當觸發時要做些什麼事情
像是這樣
 <style>
li:hover span {  
  fon-size:15px;
}
li:hover p {
  fon-size:15px;
}
</style>


這樣子的寫法差別在哪, 原本的寫法是你滑鼠移到span或p的時候他才會產生樣式, 而寫在 li 在指派給裡頭的子孫
這樣你滑鼠移到li 的時候, 所有子元素只要你有設定樣式的都會同時執行hover事件

css選擇器這個邏輯打通之後, 接下來就靠你的創意了, 要加什麼動畫加什麼效果就看你了 ,  當然之後我會陸續貼上一些源碼跟教學
歡迎來這裡的初學者一同研究, 當然如果是高手, 也歡迎你的指教! 

 

在此獻上一個效果 , 像是以前flash常用的酷炫遮色閃光片效果 , 落落長呀

.button.cover-color {
    position: relative;
    overflow: hidden;
    text-align: center;
    font-size: 13px;
    line-height: 40px;
    color: #fff;
    background: #c22a42;
    display: inline-block;
    width: 130px;
    height: 40px;
    -webkit-transition: all .2s;
    -moz-transition: all .2s;
    -ms-transition: all .2s;
    transition: all .2s;
    -webkit-transition-timing-function: cubic-bezier(0.165, 0.84, 0);
    -moz-transition-timing-function: cubic-bezier(0.165, 0.84, 0);
    -ms-transition-timing-function: cubic-bezier(0.165, 0.84, 0);
    transition-timing-function: cubic-bezier(0.165, 0.84, 0)
}

.button.cover-color:after {
    position: absolute;
    top: -30px;
    left: -145px;
    content: '';
    background: -moz-linear-gradient(left, rgba(255,255,255,0) 24%, rgba(255,255,255,0.96) 50%, #fff 51%, rgba(255,255,255,0.04) 76%, rgba(255,255,255,0) 77%);
    background: -webkit-linear-gradient(left, rgba(255,255,255,0) 24%, rgba(255,255,255,0.96) 50%, #fff 51%, rgba(255,255,255,0.04) 76%, rgba(255,255,255,0) 77%);
    background: linear-gradient(to right, rgba(255,255,255,0) 24%, rgba(255,255,255,0.96) 50%, #fff 51%, rgba(255,255,255,0.04) 76%, rgba(255,255,255,0) 77%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#00ffffff',GradientType=1 );
    display: block;
    width: 180px;
    height: 100px;
    -webkit-transform: skew(20deg, 20deg);
    transform: skew(20deg, 20deg);
    -webkit-transition: all .2s;
    -moz-transition: all .2s;
    -ms-transition: all .2s;
    transition: all .2s;
    -webkit-transition-timing-function: cubic-bezier(0.165, 0.84, 0);
    -moz-transition-timing-function: cubic-bezier(0.165, 0.84, 0);
    -ms-transition-timing-function: cubic-bezier(0.165, 0.84, 0);
    transition-timing-function: cubic-bezier(0.165, 0.84, 0)
}

.button.cover-color:hover:after {
    left: 105px;
    -webkit-transition: all .2s;
    -moz-transition: all .2s;
    -ms-transition: all .2s;
    transition: all .2s;
    -webkit-transition-timing-function: cubic-bezier(0.165, 0.84, 0);
    -moz-transition-timing-function: cubic-bezier(0.165, 0.84, 0);
    -ms-transition-timing-function: cubic-bezier(0.165, 0.84, 0);
    transition-timing-function: cubic-bezier(0.165, 0.84, 0)
}
 

arrow
arrow

    jk-mimo 發表在 痞客邦 留言(0) 人氣()