哦吼,因为上个项目已经开发完很久了,所以已经很少有运维的需求了,结果今天一来,都是些后端业务逻辑上的bug
,而经过确认后,我这边就一个bug,也就是本文的主题。
正常情况下,在伪元素(::before和::after)中content
属性这样写没啥问题的:
.test::before { content: '测试' }
然而这个bug
还挑浏览器的,由于我自己本机无法复现该问题,所以就解决了提出该问题的人,哈哈,开个玩笑。
温馨提示;关于CSS伪元素写法,有
::before
/:before
和::afte
/:afte
,最大的区别就是一个/两个冒号,但是现在主流的浏览器都支持这两种写法(据说,之前为了兼容IE浏览器用的是一个冒号,好可恶啊,不搞规范走),但是为了好分辨伪元素和伪类,一般伪元素都是用两个冒号,而伪类就是一个冒号,我目前也是遵循这个规范的。
本来是想过去找运维的人员,结果网上一搜索一大堆的类似的情况,在自己本机调整完成后,让运维访问我本机的,看下是否正常,没有问题的话,就在下个版本更新了,很幸运,一把过,那么接下来就给大家分享下怎么解决这个问题的。
1、首先把content
属性的值,全部转为Unicode
码,点我打开转换工具(网上随便工具找的,其实大家们也可以自己写,原理还是挺简单的,就是找到对应字的具体Unicode
码,然后转换成16进制即可,然后不足位补足4位)
//Unicode编码(包含数字和英文) function encodeUnicode(str) { let res = []; for (let i = 0; i < str.length; i++) { res[i] = ("00" + str.charCodeAt(i).toString(16)).slice(-4); } return "\\u" + res.join("\\u"); } //Unicode解码 function decodeUnicode(str) { str = str.replace(/\\/g, "%"); return unescape(str); }
2、通过上面的方法,已经可以知道了,【测试】的Unicode
编码为:\u6d4b\u8bd5
,这时候就要注意了,这里还有个知识点,就是不同的地方有不同的写法,具体的可以查看这篇文章《在HTML、JavaScript、CSS中如何使用Unicode字符?》