当前位置: 首页 > Web前端 > HTML

纯CSS星级效果

时间:2023-04-02 16:27:07 HTML

前言这种星级效果,相信大家都不陌生,也经常遇到。现在如果要自己实现一个,很多人的第一反应可能是用JS+CSS来实现。这个方法没有什么问题,但是我们复用不是很方便,需要带上JS和CSS两段代码。为了更容易复用,我们引入了纯CSS的方式。这里我们分为两层:第一层:div.star_evaluate设置图片背景icon-star-default.png,沿X轴平铺,隐藏多余部分,作为定位parent。第二层:a标签作为第二层。这里我们需要设置它的定位属性,初始化和设置每个a标签的位置,以及它的背景图片。这里需要注意的是,必须在便利贴中添加一个关卡。当鼠标移动到相应的星星时,将其left属性设置为0,然后设置其宽度,宽度由其对应的星级决定。最后,不要忘记设置它的级别。关于level的设置,一定要保证div.star_evaluate

CSS/*去除标签默认样式*/ul{margin:0;填充:0;list-style:none;}/*初始化风格*/.star_evaluate{position:relative;宽度:100px;高度:20px;背景:url("icon-star-default.png")repeat-x;背景大小:20px20px;溢出:隐藏;}.star{显示:块;高度:20px;宽度:20px;位置:绝对;z-index:2;}.??star_1{left:0;}.star_2{left:20px;}.star_3{left:40px;}.star_4{left:60px;}.star_5{left:80px;}/*鼠标悬停*/.star:hover{光标:指针;背景:你rl("icon-star-active.png")重复-x;背景大小:20px20px;左:0;z-index:1;}.star_1:hover{width:20px;}.star_2:hover{width:40px;}.star_3:hover{width:60px;}.star_4:hover{width:80px;}.star_5:hover{width:100px;}不断改进我们上面的星级评定效果已经初见成效,但是暴露了一个问题,就是我们的评价机制缺少记忆功能。接下来,让我们对其进行优化。材料和上面一样。实现原理这里我们主要依靠input[type=radio]单选按钮来实现星级记忆的功能,我们的星级主要分为三种状态。初始化状态:在初始化状态下,我们需要像上面那样初始化星星的位置。这里的区别是每颗星对应一个radiobutton和一个label,label的级别高于radiobutton。另外,我们使用标签的for属性来实现与单选按钮的连接。漂浮状态:在漂浮状态下,我们需要根据漂浮状态对应的star设置label标签的宽度,并将left属性设置为0,此时需要保证label的水平在浮动状态下低于其他标签。选中状态:在选中状态下,我们设置label标签的宽度为浮动状态。代码实现HTML
CSS3/*去掉标签默认样式*/ul{保证金:0;填充:0;列表样式:无;}输入{保证金:0;}/*初始化模型*/.star_evaluate{position:relative;宽度:100px;高度:20px;背景:url("icon-star-default.png")repeat-x;背景大小:20px20px;溢出:隐藏;}.star,.score{显示:方块;高度:20px;宽度:20px;位置:绝对;}.star{z-index:2;}.score{不透明度:0;}.star_1,.score_1{左:0;}.star_2,.score_2{左:20px;}.star_3,.score_3{左:40px;}.star_4,.score_4{左:60px;}.star_5,.score_5{左:80px;}/*鼠标悬浮*/.star:hover{游标:指针;背景:url("icon-star-active.png")repeat-x;背景大小:20px20px;左:0;z-索引:1;}.star_1:hover{宽度:20px;}.star_2:hover{宽度:40px;}.star_3:hover{宽度:60px;}.star_4:hover{宽度:80px;}.star_5:hover{宽度:100px;}/*选中之后*/.score:checked+.star{background:url("icon-star-active.png")repeat-x;背景大小:20px20px;左:0;}.score_1:checked+.star_1{宽度:20px;}.score_2:checked+.star_2{宽度:40px;}.score_3:checked+.star_3{宽度:60px;}.score_4:checked+.star_4{宽度:80px;}.score_5:checked+.star_5{width:100px;}