现在要实现的效果是,点击星星的左半边分值加一,右边加二,好像用css sprite可以实现,大概是怎样的实现逻辑,如何定位?
star rate 一般不会 精确的1...10
一般会采用 1,2,3,4,5
或者2,4,6,8,10的机制
1星 是1或者2
2星 是2或者4
3星 是3或者6
4星 是4或者8
5星 是5或者10
半星一般只在显示的时候会出现,比如7分 就是 三星半
可以考虑鼠标的点击位置,建一个包含十个元素的数组,每个元素是一个宽度区间,
点击时判断鼠标位置处于哪个区间,得出相应的分数。
至于图片布局,两张图片,一张灰色一直处于底部,一张红色处于上面,
通过改变红色图片的宽度(overflow:hidden)来实现对应的分数。
思路仅供参考。
我的想法:
把一颗星星当做一个单元,DOM结构如下:
div.start-wrapper包含两个子节点span.left-part(display:inline-block)和span.right-part(display:inline-block)
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
5 回答2k 阅读
3 回答2.4k 阅读✓ 已解决
jsFiddle
基本上可以分成幾個部分:
redio
本身的樣式不可修改 , 但是因為radio
後的label
可以操作前面對應的radio
而且label
樣式是可修改的, 所以我們可以通過隱藏radio input
本身 , 然後修改label
來達成自定義樣式的效果至於左右邊分開效果,Font Awesome 有提供完整星星和半顆星的
icon
,可以利用其來達成你說的半顆星效果會覺得奇怪的是,
~
是指之後
的元素,那為什麼是高亮的星星是從左邊開始,其實:float: right
後,在Html
中前面的會變成最右邊 , 但是css
選擇器是看Html
實際順序。