css实现评分效果,其实是css sprit (css精灵)的延伸应用,效果的实现主要是由 background-position 属性移动图片位置。之前看到有前辈写过关于这方面的内容,在理解上稍有偏差。
我的理解:有人认为background-position 的位置移动中,这个属性相当于大图片不动,把div的顶点进行移动,移动到目标小图的顶点位置,
可参见:http://www.cnblogs.com/iyangyuan/archive/2013/06/01/3111704.html ,我个人认为应该是div位置不变,变得是图片的位置,通过background-position将所需要的小图标定位到div的 0 ,0 位置从而完成小图标显示。并且,移动中 background-position 的值是要变为负值的,说明图片是向上移动的。
单图标定位 在上边的博客写的很详细,所以直接写 五星评分效果实现:
为了更好弄明白,把图加工了一下:
第一步:
养成良好编程习惯将每部分功能放进一个独立部分进行封装,所以在此直接 设置一个div元素:
<div class="rating"></div>
第二步:
由于五星评分需要五个不带边框的方块,很自然要想将五个方块统一起来使用 ul 和 li标签最好,由于实现点击效果,承载元素为 a 标签:
<div class="rating"> <ul> <li class="one"> <a href="#">1</a></li> <li class="two"> <a href="#">2</a></li> <li class="three"> <a href="#">3</a></li> <li class="four"> <a href="#">4</a></li> <li class="five"> <a href="#">5</a></li> </ul></div>
第三步:
结构搭好后开始进行 css 的设计:
ul.rating { position: relative; list-style: none; background: url("../images/star-matrix.gif") no-repeat 0 0; width: 80px; height: 16px;}ul.rating li { float: left; text-indent: -9999px; cursor: pointer;}ul.rating li a { text-decoration: none; width: 16px; height: 16px; position: absolute; top: 0; left: 0;<strong> z-index: 10;/* 与 hover 中的z-index 对比实现另一重要效果,见下边说明 初步设计时可不考虑*/</strong>}/*仅仅是将 A 标签的区域定位至该出现的 UL 区域之中*/ul.rating li.one a {top: 0; left: 0;}ul.rating li.two a {top:0px; left: 16px;}ul.rating li.three a {top:0px; left: 32px;}ul.rating li.four a {top:0px; left: 48px;}ul.rating li.five a {top: 0px; left: 64px;}
第四步:通过以上代码基本上完成了初步效果,接下来是鼠标划过小星星时的效果:
思想是,在鼠标放在当前 A 标签时,A 标签的区域 变得 和 UL 区域一样大,通过background-position 属性定位到所对应的效果图片,并将其盖在之前空白星星上。ul.rating li a:hover{ width: 80px; height: 16px; overflow: hidden; left: 0; top: 0; background: url("../images/star-matrix.gif") no-repeat 0 0; z-index: 2; /* 要实现 遮盖之前背景图像 功能使用 z-index 使当前对应图像图层浮于原图层之上 */}ul.rating li.one a:hover{ background-position: 0 -96px;}ul.rating li.two a:hover{ background-position: 0 -112px;}ul.rating li.three a:hover{ background-position: 0 -128px;}ul.rating li.four a:hover{ background-position: 0 -144px;}ul.rating li.five a:hover{ background-position: 0 -160px;}
第五步:至此已完成五分好评的效果(第三步没用 z-index 属性 ,加粗部分),但是当鼠标滑过时发现只能选择一次得分,不能向后或向前,原因是 LI 中的所有 A 都被盖在最下层,所以在第三步用 z-index 属性 ,使 A 标签时刻处以最上层,才能响应 鼠标指针浮动在元素上出现相应的效果。

公眾號網頁更新緩存,這玩意兒,說簡單也簡單,說複雜也夠你喝一壺的。你辛辛苦苦更新了公眾號文章,結果用戶打開還是老版本,這滋味,誰受得了?這篇文章,咱就來扒一扒這背後的彎彎繞繞,以及如何優雅地解決這個問題。讀完之後,你就能輕鬆應對各種緩存難題,讓你的用戶始終體驗到最新鮮的內容。先說點基礎的。網頁緩存,說白了就是瀏覽器或者服務器為了提高訪問速度,把一些靜態資源(比如圖片、CSS、JS)或者頁面內容存儲起來。下次訪問時,直接從緩存裡取,不用再重新下載,速度自然快。但這玩意兒,也是個雙刃劍。新版本上線,

本文討論了使用HTML5表單驗證屬性,例如必需的,圖案,最小,最大和長度限制,以直接在瀏覽器中驗證用戶輸入。

本文展示了使用CSS為網頁中添加有效的PNG邊框。 它認為,與JavaScript或庫相比,CSS提供了出色的性能,詳細介紹瞭如何調整邊界寬度,樣式和顏色以獲得微妙或突出的效果

本文討論了html&lt; datalist&gt;元素,通過提供自動完整建議,改善用戶體驗並減少錯誤來增強表格。Character計數:159

本文討論了HTML&lt; Progress&gt;元素,其目的,樣式和與&lt; meter&gt;元素。主要重點是使用&lt; progress&gt;為了完成任務和LT;儀表&gt;對於stati

本文解釋了HTML5&lt; time&gt;語義日期/時間表示的元素。 它強調了DateTime屬性對機器可讀性(ISO 8601格式)的重要性,並在人類可讀文本旁邊,增強Accessibilit

本文討論了HTML&lt; meter&gt;元素,用於在一個範圍內顯示標量或分數值及其在Web開發中的常見應用。它區分了&lt; meter&gt;從&lt; progress&gt;和前


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。