纯CSS实现网站常用的五分星打分和分数展示的交互效果
时间:2023-04-02 11:41:55
HTML
最近一个项目涉及打分和展示分数,折腾精神的本质和追求性能和易维护性的考虑,收集和尝试了很多方法,最终采用纯css驱动的实现方式,完成了评分和显示分数的功能。没有js,就意味着没有判断逻辑,代码出错的几率更小,也更容易维护。在此,记录分享实现该功能的过程,共同学习交流。原文包含在我的GitHub博客(https://github.com/jawil/blog)中。喜欢的话可以关注一下最新动态。让我们一起交流学习,共同进步。五角星的实现1.如果图片或者字体图标不追求极致表现,直接使用设计师提供的png或者jpg,或者直接转成base64.2:使用Fontawesome图标库,其实就是一个矢量图字体。HTML:
CSS:@importurl(http://netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css);.icon:在{内容:'\f005'之前;font-family:FontAwesome;}在线预览地址3、使用css3绘制五角星。基本原理:利用transparent的透明度和transform拼接出一个正五芒星。HTML:
CSS:.star-five{width:0;height:0;color:red;margin:50px0;position:relative;display:block;border-左:100px实心透明;border-right:100px实心透明;border-bottom:70px实心红色;transform:rotate(35deg);}.star-five:before{width:0;height:0;border-left:30px纯色透明;右边框:30px纯色透明;border-bottom:80px纯红色;位置:绝对;顶部:-45px;左:-65px;颜色:白色;显示:块;内容:“”;变换:旋转(-35deg);}.star-five:after{width:0;height:0;display:block;position:absolute;color:red;top:3px;left:-105px;border-left:100pxsolidtransparent;border-right:100pxsolidtransparent;border-bottom:70pxsolidred;content:"";transform:rotate(-70deg);}不推荐使用这个在线预览地址,因为后期改颜色状态比较麻烦选型,而且改起来很麻烦不方便,不像以前的方便易维护。4、直接使用五角星符号★?,简单粗暴,易于控制,外观协调。以下实施方法以★为准。一些关于CSS的选择器不使用js来控制评分。当然,你也不能错过强大的CSS选择器。这里我们先介绍一些用来实现这个功能的CSS选择器。在介绍css强大的选择器之前,先科普一下“CSSradio/checkbox单复选框元素显示及隐藏技术”,也就是所谓的“checkboxhack技术”。1.checkboxhack技术我们利用CSS中一些特殊的选择器,再配合单选按钮和复选框的一些特性来实现元素的显示和隐藏效果。然后通过一些简单的扩展,我们可以在不使用任何JavaScript代码的情况下实现类似的东西:自定义单选框,“更多”的展开和折叠效果,标签切换效果,或者多级下拉列表效果等等,相信很多前端开发者会遇到老板修改checkbox和radio样式,毕竟内置的样式太丑了。后来发现修改内置样式没那么容易,最后直接使出了杀手锏——点击后替换图片。今天教大家一个不用更换图片就可以随意修改样式的方法。先看效果图:`先说说原理:两个关键的东西,一个是伪类选择器:checked,表示选中时对应控件元素(单选框或复选框)的样式;另一个是加号+相邻兄弟选择器,这个符号表示选择后面的兄弟节点。因此,通过两者的配合,你可以轻松控制后面元素的显示或隐藏,或者其他样式。以及如何让单选框选中或取消选中,即label标签,for属性锚定对应的单选框或复选框,点击这里的label元素时,对应的单选框被选中或取消选中.那么,就有了上面的效果!`这里只是单选按钮的代码,仅供参考:HTML:
SCSS:.radio-beauty-container{font-size:0;$bgc:绿色;%common{填充:2px;背景颜色:$bgc;背景d-clip:内容框;}.radio-name{vertical-align:middle;字体大小:16px;}.radio-beauty{宽度:18px;高度:18px;框大小:边框框;显示:内联块;边框:1px实心$bgc;垂直对齐:中间;边距:015px03px;边界半径:50%;&:hover{box-shadow:007px$bgc;@extend%common;}}input[type="radio"]:checked+.radio-beauty{@extend%common;}}美化radio单按钮在线预览地址:点我美化checkbox在线预览地址:点我更多关于这方面的介绍和例子可以参考张新旭的这篇文章:CSSradio/checkbox单checkbox元素显示与隐藏技术2.一些CSS选择器HTML:
12345 CSS:p{width:20px;行高:20px;边框:1px纯灰色;文本对齐:居中;字体粗细:700;}E+F:相邻兄弟选择器选择匹配F的元素,且该元素与匹配的E元素相邻,并且此元素是匹配的E元素的子元素。.wrapper>p{background-color:green;}E~F:选择后面的兄弟节点.test2~p{background-color:green;}E::after,E::before:伪元素选择器匹配InsertE.test2::before{background-color:green;元素后面(之前)的内容内容:“之前”}.test2::after{背景色:绿色;content:"behind"}:not(E)选择不是