Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲精品久久久久综合中文字幕,日韩精品影视,好男人资源在线观看高清社区

          整合營銷服務(wù)商

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

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

          js 獲取元素在文檔上的坐標(biāo)

          js 獲取元素在文檔上的坐標(biāo)

          .獲取元素在文檔上的坐標(biāo)

          function DocuemntHtmlPageXY (elem) {
           var rect=elem.getBoundingClientRect();
           var scrollTop=window.scrollTop || (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop || 0;
           var scrollLeft=window.scrollLeft || (document.documentElement && document.documentElement.scrollLeft) || document.body.scrollLeft || 0;
           var html=document.documentElement || document.getElementsByTagName_r('html')[0];
           //修復(fù)ie6 7 下的瀏覽器邊框也被算在 boundingClientRect 內(nèi)的 bug
           var deviation=html.getBoundingClientRect();
           //修復(fù) ie8 返回 -2 的 bug
           deviation={ //FF 不允許修改返回的對(duì)象
           left: deviation.left < 0 ? 0 : deviation.left,
           top: deviation.top < 0 ? 0 : deviation.top
           };
           return {
           left: rect.left + scrollLeft - deviation.left,
           top: rect.top + scrollTop - deviation.top
           };
           }
          

          2.舉例如下:

          于基于Python+PyQt的框架結(jié)構(gòu)的程序開發(fā),前面已經(jīng)講了很多小例子了,有興趣的小伙伴們可以翻看下前面的文章。

          總體來說,實(shí)現(xiàn)相同的功能,相比于其它如C/C++等編程語言,確實(shí)簡單太多了。

          下面,再給出一個(gè)小例子,使用PyQt5界面庫,在Python3上來實(shí)現(xiàn)一個(gè)簡單的顏色拾取器的小工具,下面看看具體的實(shí)現(xiàn)過程吧。

          1、實(shí)例說明

          本例運(yùn)行界面如下圖所示,實(shí)現(xiàn)的功能是,實(shí)時(shí)捕捉當(dāng)前鼠標(biāo)所在位置的顏色并進(jìn)行顯示,顯示結(jié)果包括顏色指示、顏色的RGB值、顏色的CSS值及當(dāng)前鼠標(biāo)的坐標(biāo)值等信息。



          2、實(shí)現(xiàn)思路

          可考慮在定時(shí)器超時(shí)事件中每隔一段時(shí)間(如20ms)取一次當(dāng)前鼠標(biāo)所在的位置的顏色信息,對(duì)該顏色值進(jìn)行解析并分別顯示其RGB值和CSS樣式的值。

          在PyQt中進(jìn)行編程實(shí)現(xiàn)時(shí),需要考慮以下兩個(gè)問題:

          • 如何取當(dāng)前鼠標(biāo)的位置信息?
          • 如何獲取當(dāng)前位置的顏色值并將其分解為RGB值和CSS值?

          對(duì)于第一個(gè)問題,可使用PyQt類中的QCusor類的pos()函數(shù)實(shí)時(shí)獲取當(dāng)前的鼠標(biāo)位置信息。

          對(duì)于第二個(gè)問題,可使用QScreen類的grabWindow()函數(shù),將當(dāng)前鼠標(biāo)所在區(qū)域存儲(chǔ)為QPixmap類型的畫布里面,然后再使用toImage()函數(shù)將其轉(zhuǎn)化為圖像,有了圖像信息后,就可獲取該圖像上任意像素點(diǎn)的顏色信息(QColor類型)了。最后使用QColor類的red()、green()、blue()函數(shù)分別獲取其RGB值即可。對(duì)于顏色的CSS值顯示,直接將RGB值轉(zhuǎn)換為16進(jìn)制顯示即可。

          3、核心代碼實(shí)現(xiàn)

          在定時(shí)器超時(shí)槽函數(shù)里面實(shí)現(xiàn)該軟件的具體功能,其代碼(不足20行)如下圖所示:



          代碼簡要解釋如下:

          (1)第48-50行,使用QCusor類的pos()函數(shù)獲取當(dāng)前的鼠標(biāo)位置信息x、y并顯示。

          (2)第52-56行,使用QScreen類的grabWindow()函數(shù),將當(dāng)前鼠標(biāo)所在區(qū)域存儲(chǔ)到QPixmap類型的pixmap變量里面,使用toImage()函數(shù)將其轉(zhuǎn)化為圖像,然后使用pixel()函數(shù)獲取該圖像上(0,0)像素點(diǎn)的顏色信息,最后使用QColor類的red()、green()、blue()函數(shù)分別獲取其RGB顏色的分量值。

          (3)第58-60行,將RGB顏色進(jìn)行顯示,并在label控件上使用樣式表設(shè)置其背景色進(jìn)行實(shí)時(shí)指示當(dāng)前鼠標(biāo)所在位置的顏色信息。

          (4)第62-64行,將R、G、B顏色值轉(zhuǎn)換為16進(jìn)制,顯示其CSS值信息。

          4、完整代碼實(shí)現(xiàn)

          整個(gè)工程除了上面的核心代碼實(shí)現(xiàn)外,還包括界面的布局、定時(shí)器創(chuàng)建、槽函數(shù)關(guān)聯(lián)等內(nèi)容,程序的完整實(shí)現(xiàn)代碼如下圖所示:



          程序主窗口基類為QWidget類,代碼簡要解釋如下:

          (1)第9-14行,類初始化函數(shù),調(diào)用initUI函數(shù)并創(chuàng)建定時(shí)器、設(shè)置槽函數(shù)關(guān)聯(lián)及啟動(dòng)定時(shí)器等。

          (2)第16-40行,具體的界面設(shè)計(jì)函數(shù),包括控件的創(chuàng)建/布局、窗口的居中設(shè)置、標(biāo)題、圖標(biāo)設(shè)置等。

          (3)第61-65行,創(chuàng)建窗口并顯示。

          5、總結(jié)

          總體來說,這個(gè)例子界面比較簡單,代碼量比較少,也比較好理解,運(yùn)行上面的程序后,即可出現(xiàn)前面的軟件界面,當(dāng)移動(dòng)鼠標(biāo)時(shí),可在界面上實(shí)時(shí)顯示當(dāng)前鼠標(biāo)位置的顏色信息。

          本文實(shí)現(xiàn)顏色拾取器的小工具,僅僅用了不到70行的代碼,試想一下,如果你用純粹的C++語言來實(shí)現(xiàn)相同的功能,將需要多少代碼量呢?所以,如果你做軟件界面開發(fā)的話,Python+PyQt的框架結(jié)構(gòu)真的是一個(gè)不錯(cuò)的選擇。


          本文由編碼那些事原創(chuàng),請關(guān)注+轉(zhuǎn)發(fā)+收藏+點(diǎn)贊,帶你一起長知識(shí)!

          近看到 ElementPlus 官網(wǎng)上的切換主題方式非常有趣,這是一個(gè)過渡的動(dòng)畫效果

          所以在網(wǎng)上查了一番,找到基本的實(shí)現(xiàn)方法

          實(shí)現(xiàn)

          基本效果

          首先我們起一個(gè) html 文件,寫一個(gè)按鈕,以及簡單的背景顏色切換,來模擬主題的切換

          可以看到實(shí)現(xiàn)了最簡單的主題切換效果

          document.startViewTransition

          想要實(shí)現(xiàn)過渡效果,需要先用到一個(gè) JavaScript 的原生方法:document.startViewTransition

          這個(gè)方法是用來做動(dòng)畫過渡效果的

          通過調(diào)用 API,讓瀏覽器為新舊兩種不同視圖分別捕獲并建立了快照 (即 ::view-transition-old(root)舊快照 和 ::view-transition-new(root) 新快照),而后新舊兩快照在 ::view-transition-image-pair(root) 容器中完成轉(zhuǎn)場動(dòng)畫的過渡。動(dòng)畫結(jié)束后則刪除其相關(guān)偽元素 (快照和容器)

          過渡動(dòng)畫效果

          我們可以應(yīng)用一下這個(gè) API

          現(xiàn)在去切換主題顏色,發(fā)現(xiàn)有過渡效果了~

          圓形擴(kuò)散過渡動(dòng)畫

          接下來實(shí)現(xiàn)圓形過渡的效果,其實(shí)這個(gè)動(dòng)畫最終是展示::view-transition-new(root)這個(gè)偽元素,所以我們只需要讓這個(gè)偽元素有原型擴(kuò)散的過渡動(dòng)畫即可~

          那圓形擴(kuò)散動(dòng)畫咋做呢?其實(shí)很簡單,只需要將偽元素的半徑,從0 -> 100%即可

          代碼如下

          并且我們需要取消掉 document.startViewTransition默認(rèn)的動(dòng)畫效果,不然它會(huì)導(dǎo)致我們自定義的動(dòng)畫效果無效~

          最終得到圓形擴(kuò)散的效果

          完整代碼


          主站蜘蛛池模板: 久久精品国产一区二区三区不卡| 精彩视频一区二区| 亚洲国产激情一区二区三区| 久久亚洲国产精品一区二区| 亚洲综合激情五月色一区| 国产亚洲一区二区三区在线观看| 熟妇人妻AV无码一区二区三区| 国产一区韩国女主播| 亚洲日本va一区二区三区| 一区二区在线电影| 国产一区二区电影| 熟妇人妻系列av无码一区二区| 日韩精品一区二区三区不卡| 日韩精品国产一区| 日本精品一区二区三本中文| 国产麻豆精品一区二区三区| 国产av一区最新精品| 成人免费视频一区| 国产免费私拍一区二区三区| 无码人妻久久一区二区三区免费丨| 国产日本一区二区三区| 亚拍精品一区二区三区| 在线播放一区二区| 无码人妻一区二区三区一| 中文无码一区二区不卡αv| 国产精品夜色一区二区三区| 色噜噜狠狠一区二区三区| bt7086福利一区国产| 男插女高潮一区二区| 国产精品视频一区国模私拍| AV天堂午夜精品一区二区三区| 无码丰满熟妇一区二区| 亚洲国产AV一区二区三区四区 | 国产福利一区二区三区| 激情内射亚洲一区二区三区| 99精品国产一区二区三区2021| 精品日韩一区二区| 亚洲国产激情一区二区三区| 消息称老熟妇乱视频一区二区| 亚洲熟妇av一区| 日本精品视频一区二区三区|