阿凡佬 发表于 2022-4-4 17:27:54

【CSS美化专题】用CSS美化表格删除按钮

本帖最后由 阿凡佬 于 2022-4-10 13:16 编辑

原生的表格删除按钮,是这样的


诶?感觉没啥存在感呀,用户一头雾水还以为这是啥呢,试着点一下才知道这是把当前记录删除的按钮,赶紧取消

这时候就需要我们开发的干点实事了!

首先F12检查元素,我们发现,这是一个<img>标签在类名为deleteButton的<div>下,并且通过ctrl+F查找文档全文并未在其他地方发现同类元素。
我们的CSS选择器就已经出来了
div.deleteButton>img{/*img标签*/}
既然它是一个<img>标签,那么我们就需要用content属性替换当中的图标,而不是background-image。
这时候问题来了,图标从哪里来呢?总不可能上传一个图标文件到网站根目录再通过相对路径引用吧。这时候DataUrl就起了大作用。百度一个图标网站,
比如iconfont.cn , 搜索“delete"

随便点一个自己看着顺眼的,把颜色设置为白色#FFFFFF,图标大小设置成32(别问我为什么不用16,测试了很多个发现16转码后还是太模糊了)
百度一个png转base64的网站,把图标转成DataURL

好了,现在开始魔改<img>标签
div.deleteButton>img{
    border-radius: 10px;
    background-color:#c5403c;
content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAQVJREFUWEftltENwyAMRM/rtPOk6zRZp52nXceVJZAiBPhMIqUf5DMJ+HE+2wgufuTi+JgAU4H/V0BVbwAWEdkiFaOqTwBvEfn21nUVSMFfAO4AVhYiBV8BfAA8ehARADuIC7ELbv8fA7AdChW6ENHgthllQgZiJDgN4CkxGjwE0IJIDjfDUTkvK4JKwX5RJR35s2u4WjmGARpKDAUPpyCfoMh5fu2W6CkKVAxn+1qjovrEIQ/U3J42zN0yDEF7oFdqTJ9ozQMKgKnzUQgXgAm+M6dNzlA6vGFkIzXUZKJKsAos3lhtNCu7D3TvES5AbjzexaI0mSnBrKEAWg4+4/0EmApMBX4966MhuxlE9wAAAABJRU5ErkJggg==);
}大概意思呢,就是加了个圆角,加了个背景色,再换了个图标,现在它是这样的

看着还不错对吧,你以为到这里就结束了?不,既然改了,我哪里会满足于这平庸的效果,让我们再加亿点点特效
div.deleteButton{
    height: 20px !important;
    margin-top:-2px;
}
div.deleteButton>img{
    width: 20px !important;
    border-radius: 10px;
    margin-left: 0px;
    padding:2px;
    background-color:#c5403c;
    content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAQVJREFUWEftltENwyAMRM/rtPOk6zRZp52nXceVJZAiBPhMIqUf5DMJ+HE+2wgufuTi+JgAU4H/V0BVbwAWEdkiFaOqTwBvEfn21nUVSMFfAO4AVhYiBV8BfAA8ehARADuIC7ELbv8fA7AdChW6ENHgthllQgZiJDgN4CkxGjwE0IJIDjfDUTkvK4JKwX5RJR35s2u4WjmGARpKDAUPpyCfoMh5fu2W6CkKVAxn+1qjovrEIQ/U3J42zN0yDEF7oFdqTJ9ozQMKgKnzUQgXgAm+M6dNzlA6vGFkIzXUZKJKsAos3lhtNCu7D3TvES5AbjzexaI0mSnBrKEAWg4+4/0EmApMBX4966MhuxlE9wAAAABJRU5ErkJggg==);
    box-shadow: 0px 0px 0 1px #00000042 inset, 0px 11.5px 7px -6px #ffffff4a inset, 0px -4px 4px -4px #000000a8 inset;
}
div.deleteButton>img:hover{
    box-shadow:0px 0px 0 0.5px #00000036 inset,
    0px -1px 2px 0px #ffffff4a inset,
    0px 4px 4px 0px #00000012 inset,
    0.5px 1px 5px 0px #00000000 inset;
}
emmmm....按钮被放大了,加了一个阴影,并且鼠标经过还有一个按下的效果,不错不错。不过总感觉还少了点什么


没错,就是鼠标经过时的提示,用户看到这个图标,会不会知道这是一个删除当前行的按钮?或者理解成取消选中?与其让用户猜,不如我们直接给出提示。但是我们发现这个<img>标签并没有title属性,这时候CSS的:after伪元素帮了我们大忙。
div.deleteButton:hover::after{
    content:"删除当前行";
    background:#fafafa;
    width: max-content;
    height: 20px;
    position:absolute;
    display:block;
    line-height:20px;
    font-size:12px;
    z-index: 999;
    color:#666666;
    border: 0.5px solid #666666;
    top: 0px;
    left: 25px;
}
通过:after伪元素我们成功模拟了title属性,鼠标移上去的时候,在按钮右侧显示一个提示。当然,你要是想,它也可以在上边在下边在左边在右边,随你怎么调整,甚至可以是这样。。。。

够显眼了吧




以下是(正常的)完整代码**** Hidden Message *****

阿凡佬 发表于 2022-4-5 21:15:13

lucaswang 发表于 2022-4-5 18:12
代码放哪里呢,怎么使用能介绍一下吗,谢谢

可以参考下我在这个贴子里的回答
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=144335&page=1#pid523749

阿凡佬 发表于 2022-4-8 17:26:07

chenjamo 发表于 2022-4-8 17:16
看到这个基本上是不是可以关联修改其他的内容

首先F12检查元素,我们发现,这是一个<img>标签在类名为deleteButton的<div>下,并且通过ctrl+F查找文档全文并未在其他地方发现同类元素。
我们的CSS选择器就已经出来了只要能把这一步做到,界面上你所能看到的都能修改

michael_huang 发表于 半小时前

学习学习:):)
页: [1]
查看完整版本: 【CSS美化专题】用CSS美化表格删除按钮