一、结构
结构还是很朴素的,星星是在font-awsome选的一符号,整个结构又是用一张table表格来搭的,选了两种底色作为顶部和左边的底色。
这里由于使用了自定义字体,就碰到了个问题,就是当点到这张星星页面的时候,字体还没加载进来,这个时候星星的位置要么是乱码要么是没有的,后面就去找了个解决方法,使用webfont loader,在字体加载成功的回调函数中再应用相应的font-family的CSS样式。
<script src="js/webfontloader.js"></script> <script> WebFont.load({ custom: { families: ['FontAwesome'] } }); </script>
对table的操作也做过记录,可以在《关于table的一些记录》查看到。
最左边的一栏还用了一些伪类选择符:first-child。
<table class="user_skill"> <thead> <tr> <th></th> <th><h6>初学</h6></th> <th><h6>熟悉</h6></th> <th><h6>掌握</h6></th> <th><h6>擅长</h6></th> <th><h6>精通</h6></th> </tr> </thead> <tbody> <tr> <td><h5>HTML</h5></td> <td><i class="fa-star"></i></td> <td><i class="fa-star"></i></td> <td><i class="fa-star"></i></td> <td><i class="fa-star"></i></td> <td><i class="fa-star"></i></td> </tr> <tr> <td><h5>CSS</h5></td> <td><i class="fa-star"></i></td> <td><i class="fa-star"></i></td> <td><i class="fa-star"></i></td> <td></td> <td></td> </tr> </tbody> </table>
.user_skill tbody tr td:first-child{ text-align:right; margin-right:5px; } .user_skill tbody tr td:first-child h5{ background:#f26d7d; display:inline-block; padding:5px; }
二、星星的动画
当刚进入画面的时候,这些星星是有个效果的。这个动画我是从animate.css中选了一个,叫做lightSpeedIn。直接将CSS复制过来的时候死活动不了,后面发现我少写了一个参数animation-duration。而CSS中的transition属性是当划过某行的时候,设置的过渡效果。
.user_skill tbody tr td i{ font-size:2rem; -webkit-animation-name: lightSpeedIn; -webkit-animation-duration:1s; -webkit-animation-timing-function: ease-out; animation-name: lightSpeedIn; animation-duration:1s; animation-timing-function: ease-out; -moz-transition:all .4s ease; -o-transition:all .4s ease; -webkit-transition:all .4s ease; transition:all .4s ease; } @-webkit-keyframes lightSpeedIn { 0% { -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; } 60% { -webkit-transform: skewX(20deg); transform: skewX(20deg); opacity: 1; } 80% { -webkit-transform: skewX(-5deg); transform: skewX(-5deg); opacity: 1; } 100% { -webkit-transform: none; transform: none; opacity: 1; } } @keyframes lightSpeedIn { 0% { -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; } 60% { -webkit-transform: skewX(20deg); transform: skewX(20deg); opacity: 1; } 80% { -webkit-transform: skewX(-5deg); transform: skewX(-5deg); opacity: 1; } 100% { -webkit-transform: none; transform: none; opacity: 1; } }
三、划过某行的效果
当让鼠标划过某行的时候,我会让星星旋转180°,并放大1.5倍,颜色变红。transform可以将多个属性写在一起。
.user_skill tbody tr:hover i{ -webkit-transform: rotate(180deg) scale(1.5); -moz-transform: rotate(180deg) scale(1.5); -o-transform: rotate(180deg) scale(1.5); -ms-transform: rotate(180deg) scale(1.5); transform: rotate(180deg) scale(1.5); color:#f26d7d; }
源码下载:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了