整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML中實現(xiàn)鼠標(biāo)移動到table中某個單元格中顏色改變

          html中,我們經(jīng)常會用到table布局;有時候需要實現(xiàn)指定單元格,當(dāng)鼠標(biāo)移動到上面的時候,該單元格背景變色,不是該行背景變色,也不是僅僅文字的背景變色;


          html的文件結(jié)構(gòu)大家都是知道的了,總體分為head和body部分

          我們要實現(xiàn)變色,在head部分實現(xiàn)格式

          <style>

          .tablex {border-collapse: collapse;}

          .tablex tr {}

          .tablex tr td {text-align:center; line-height:30px;}

          .tablex tr td:hover { background-color:#f00; color:#fff;}

          </style>

          然后在body部分,使用table時候,注明class="tablex".這樣的話,就實現(xiàn)了我們所說的效果了。

          附上完整代碼:

          <html>

          <head>

          <meta http-equiv="Content-Type" content="text/html; charset=GBK" />

          <title>測試鼠標(biāo)移到到表格單元格背景顏色改變的</title>

          <style>

          .table1 {border-collapse: collapse;}

          .table1 tr {}

          .table1 tr td {text-align:center; line-height:30px;}

          .table1 tr td:hover { background-color:#006030; color:#006030;}

          </style>

          </head>

          <body>

          <table class="table1" width="70%" border="1">

          <tr>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          </tr>

          <tr>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          </tr>

          <tr>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          </tr>

          <tr>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          </tr>

          <tr>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          <td>測試</td>

          </tr>

          </table>

          </body>

          </html>

          在任何一個瀏覽器中運(yùn)行,效果如下




          南大盛聯(lián)20年來一直致力于高端IT培訓(xùn)--打造高級軟件人才實戰(zhàn)培訓(xùn)專家,學(xué)生對我們的認(rèn)可是我們一直前進(jìn)的動力;項目團(tuán)隊全球招聘,特聘來自海外的老師進(jìn)行任教,采用100%商業(yè)項目進(jìn)行實戰(zhàn)培訓(xùn),線上線下同步進(jìn)行。

          課程全部緊隨市場需求進(jìn)行設(shè)計,并且動態(tài)進(jìn)行調(diào)整;7天免費(fèi)試聽,0首付開始學(xué)習(xí),學(xué)完后進(jìn)行100%推薦就業(yè),不滿意工作崗位2次推薦。

          選定一個平臺,認(rèn)識一群志同道合的朋友,你的未來人生路必定不一樣。

          目前已經(jīng)開設(shè)下面這些培訓(xùn)項目

          Java培訓(xùn)

          安卓培訓(xùn)

          JavaWeb培訓(xùn)

          Linux培訓(xùn)

          云服務(wù)器布置培訓(xùn)

          HTML5培訓(xùn)

          SEO培訓(xùn)

          視頻剪輯培訓(xùn)

          UI培訓(xùn)

          歡迎您們分享給自己愿意分享的朋友,大家一起來進(jìn)步;相互轉(zhuǎn)告,咨詢,學(xué)習(xí)。

          南大盛聯(lián)培訓(xùn)理念:我懂,我也能讓你懂。

          標(biāo)懸停提示是指當(dāng)鼠標(biāo)懸停在某一元素上時瀏覽器彈出的黃色小文本框,一般開發(fā)者大多會結(jié)合Javascript創(chuàng)建各式各樣的自定義提示,其實通過CSS定位也可以實現(xiàn),首先我們看一下效果圖:

          接下來我們詳細(xì)介紹它的實現(xiàn)方法:

          1. 首先創(chuàng)建一個簡單的帶鏈接的HTML(根據(jù)自己的需要),在鏈接顯示的文本后面添加需要提示的內(nèi)容并置于span標(biāo)簽中(加粗部分)

            <p>

            <a href="www.laosiji.com" style="text-decoration:none">www.你懂的.com<span>(未滿18周歲請勿點(diǎn)擊)</span></a> is a Horror Movies Website.

            </p>

          2. 接下來是關(guān)鍵部分,先將鏈接的position屬性設(shè)置為relative,因為<a>是<span>的父級元素,這樣接下來才可以讓<span>中的提示內(nèi)容根據(jù)<a>中的鏈接文本進(jìn)行絕對定位。<span>中的提示內(nèi)容我們不希望它一開始就顯示出來,所以要將它的display屬性設(shè)置為none.

            a{position:relative;}

            a span{display:none;}

          3. 當(dāng)鼠標(biāo)懸停在鏈接上時我們希望顯示出span中的提示內(nèi)容,這時就需要將span的display屬性設(shè)置為block,為了讓其出現(xiàn)在鏈接的右下方,需要將span的position屬性設(shè)置為absolute,并設(shè)置一定的距離(頂部1em,左邊2em).

            a{position:relative;}

            a span{display:none;}

            a:hover span{display:block;

            position:absolute;top:1em;left:2em;}

          4. 前兩步基已經(jīng)完成了本次案例的主體,剩下的就是給span添加一些樣式,讓它看起來更像是提示。可以添加一些內(nèi)邊距 邊框和背景顏色等。

            <style type="text/css">

            a{position:relative;}

            a span{display:none;}

            a:hover span{display:block;

            position:absolute;top:1em;left:2em;

            width:160px;

            padding:0.2em 0.6em;

            border:1px solid #996633;

            background-color:#FFFF66;

            color:red;}

            </style>

            PS:最后科普一下display:none與visible:hidden的區(qū)別

            display:none ---不為被隱藏的對象保留其物理空間,即該對象在頁面上徹底消失,通俗來說就是看不見也摸不到。

            visible:hidden--- 使對象在網(wǎng)頁上不可見,但該對象在網(wǎng)頁上所占的空間沒有改變,通俗來說就是看不見但摸得到。

          歡看電影的朋友肯定會注意到一個有趣的細(xì)節(jié),就是電影出品方一定會在片頭的Logo環(huán)節(jié)做一個小特效:暗影流動之間光澤一閃而過,這樣做不僅可以提高Logo的辨識度,還可以提升質(zhì)感,一舉兩得。參照華納兄弟影業(yè)(Warner Bros. Pictures)的例子:

          那么,在前端領(lǐng)域,如果使用純CSS技術(shù),能不能實現(xiàn)類似的特效呢?答案當(dāng)然是可以的,這次我們以本站的Logo為例子,以一持萬、提綱挈領(lǐng)地講解一下如何使用純CSS技術(shù)實現(xiàn)圖片Logo鼠標(biāo)懸停光澤一閃而過的光影特效。

          一般情況下,大多數(shù)前端開發(fā)會選擇 linear-gradient() ,這個方法創(chuàng)建一個表示兩種或多種顏色線性漸變的圖片。其結(jié)果屬于<gradient>數(shù)據(jù)類型,是一種特別的<image>數(shù)據(jù)類型。

          簡單用法:

          /* 漸變軸為45度,從藍(lán)色漸變到紅色 */
          linear-gradient(45deg, blue, red);
          
          /* 從右下到左上、從藍(lán)色漸變到紅色 */
          linear-gradient(to left top, blue, red);
          
          /* 從下到上,從藍(lán)色開始漸變、到高度40%位置是綠色漸變開始、最后以紅色結(jié)束 */
          linear-gradient(0deg, blue, green 40%, red);

          那么它怎么和logo圖片結(jié)合使用呢?首先創(chuàng)建一個對象,因為是logo,所以我使用a標(biāo)簽,也就是超級鏈接,隨后聲明偽類mylogo:

          <a href="/" class="mylogo" title="劉悅的技術(shù)博客"></a>

          之后,定義logo的樣式:

          .mylogo{	
          		display:block;
          		margin: 0 auto;
              width:255px;
              height:200px;
              background-image:/logo.png;
              background-repeat: no-repeat;
          }

          接著就是linear-gradient()出場,原理并不復(fù)雜,利用linear-gradient繪制一個白色半透明漸變層,利用背景的負(fù)坐標(biāo)隱藏起來,同時配合transition屬性,在鼠標(biāo)懸停(hover)的時候,設(shè)置1秒鐘的延時動畫,逐漸將光斑的坐標(biāo)進(jìn)行位移,產(chǎn)生一種光澤掠過的效果:

          .mylogo{
                      width: 255px;
                      height: 200px;
           
                      background: -webkit-linear-gradient(left, rgba(255,255,255,0)0, rgba(255,255,255,0.5)50%, rgba(255,255,255,0)100%) no-repeat -270px 0, url(/logo.png) no-repeat;
                      transition: 1s ease;
                  }
          
          .mylogo:hover {
          
          	background-position: 200px 0, 0 0;
          }

          這里需要注意的是,默認(rèn)負(fù)坐標(biāo)一定要超過logo本體的寬度,否則位移就不夠充分,效果是下面這樣的:

          看起來還不錯,這里transition的屬性設(shè)置在logo本體的偽類上面,此時如果logo本體失去鼠標(biāo)的焦點(diǎn),光斑位置又會回到原來的負(fù)坐標(biāo),此時光影又會在回閃一次,也就是一次懸停發(fā)生兩次位移,閃爍兩次,如果只想閃一次,可以將transition加載hover偽類中,這樣離開后不會二次位移,因為動畫效果只會出現(xiàn)在鼠標(biāo)懸停上,鼠標(biāo)離開后,就沒有動畫回閃了:

          .mylogo{
                      width: 255px;
                      height: 200px;
                      /*直接使用background縮放版本*/
                      /*每個漸變點(diǎn)的位置不能太小,不然會出現(xiàn)殘缺光斑*/
                      /*no-repeat -270px 0:將光斑定位隱藏起來*/
                      background: -webkit-linear-gradient(left, rgba(255,255,255,0)0, rgba(255,255,255,0.5)50%, rgba(255,255,255,0)100%) no-repeat -270px 0, url(/logo.png) no-repeat;
                     /* transition: 1s ease;  */
                  }
          
          .mylogo:hover{
          	/*鼠標(biāo)滑過實現(xiàn)光斑滑動,但是在多背景情況下,需要多個background-position屬性值,否則會影響其他背景*/
          	background-position: 200px 0, 0 0;
          	transition: 1s ease;
          }

          效果是這樣的:

          但是這就結(jié)束了嗎?還沒有,因為這看起來似乎。。。有點(diǎn)一律千篇?

          如果所有人都用linear-gradient,就難免有點(diǎn)無趣了,那么有沒有別的不落窠臼的玩兒法呢?

          既然曉得了原理,無非就是位移產(chǎn)生的小把戲,那么我們完全脫離linear-gradient,使用一張帶光澤質(zhì)感的背景圖片shine.png:

          由于使用了背景圖,所以我們需要對代碼進(jìn)行修改,為實體的背景圖添加一個容器,span標(biāo)簽:

          <a href="/" class="mylogo" title="劉悅的技術(shù)博客"><span></span></a>

          樣式和linear-gradient差不多,也是利用負(fù)坐標(biāo)將span標(biāo)簽內(nèi)的背景圖隱藏起來:

          .mylogo span {
          	display: block;
          	background: url("/shine.png") -360px -380px no-repeat;	
          
          	transition-property: all;
          	transition-duration: .7s;
          
          	height: 200px;
          	width: 255px;
          }

          接下來要比linear-gradient要簡單地多,直接設(shè)置懸停屬性,讓背景圖片發(fā)生位移:

          .mylogo:hover span {
          	background-position: 100px 300px;
          }

          效果是這樣的:

          如果仔細(xì)觀察,會發(fā)現(xiàn)背景圖更加契合光影掠過的效果,因為linear-gradient每個漸變點(diǎn)在不同分辨率的屏幕下并不統(tǒng)一,也就是說在高分辨下會出現(xiàn)殘缺光斑。

          暗黑模式下的效果是這樣的:

          看起來似乎更加有質(zhì)感一點(diǎn),除此之外,也許你還想利用transition玩一些更加刺激的效果:

          .mylogo:hover {
                      -webkit-transform: rotate(666turn);
          			transform: rotate(666turn);
          			transition-delay: 1s;
          			transition-property: all;
          			transition-duration: 59s;
          			transition-timing-function: cubic-bezier(.34, 0, .84, 1)
          }

          讓我們旋轉(zhuǎn)、跳躍、閉著眼:


          結(jié)語:兩套方案都可以很好的實現(xiàn)光影特效,區(qū)別在于linear-gradient并不會消耗網(wǎng)站的帶寬,但會消耗電腦的CPU和內(nèi)存,而與背景漸變相比,背景圖像效果會更好一點(diǎn),但是將會更多地使用網(wǎng)絡(luò)帶寬,而webp技術(shù)又可以幫助我們對圖片進(jìn)行極致的壓縮(參見:https://v3u.cn/a_id_190),所以我們可以理解這是一種權(quán)衡,畢竟,書本上寫的是道理,但是現(xiàn)實中講究的是取舍,不是嗎?


          主站蜘蛛池模板: 一本岛一区在线观看不卡| 国产在线精品一区二区不卡| 日韩综合无码一区二区| 不卡无码人妻一区三区音频| 99久久综合狠狠综合久久一区| 亚洲制服丝袜一区二区三区| 亚洲片一区二区三区| 日韩精品一区二区三区不卡 | 好看的电影网站亚洲一区| 精品人妻一区二区三区浪潮在线| 国产色欲AV一区二区三区| 国产精品一区二区久久不卡| 亚洲色无码专区一区| 中文字幕一区视频一线| 亚洲AV成人一区二区三区在线看 | 亚洲国产综合无码一区| 中日韩精品无码一区二区三区| 国产成人精品一区在线| 亚洲毛片αv无线播放一区| 老熟妇高潮一区二区三区| 精品福利一区二区三区精品国产第一国产综合精品 | 亚洲乱码国产一区网址| 日韩AV片无码一区二区不卡| 国内自拍视频一区二区三区| 一区二区三区视频在线观看| 国产亚洲福利精品一区| 国精产品一区一区三区免费视频| 天天爽夜夜爽人人爽一区二区| 国产精品美女一区二区三区| 国产精品视频一区二区三区| 亚洲福利一区二区精品秒拍| 亚洲午夜精品一区二区| 无码人妻AV免费一区二区三区| 久久久久久免费一区二区三区| 国产无套精品一区二区| 国产成人精品一区在线| 后入内射国产一区二区| 国模大胆一区二区三区| 最新欧美精品一区二区三区| 无码少妇一区二区三区浪潮AV| 午夜无码视频一区二区三区|