Valine – 修复折叠评论击穿链接

1251°C 14-05-2020 notbyai
最近更新于:2022-06-16 00:07:33

文章摘要moonshot-v1-8k

Standby API Responsing..

折叠评论击穿链接

这个bug其实很早就存在了,只不过一直没管它(Valine 官方于 v1.4.0~1.4.4(2020-04-11)版本修复),这篇笔记存在的目的在于那些仍在使用低于该版本需要单独修复该bug的同学(比方说还在用v1.3.10的我/doge)就需要手动修复该bug来确保点击折叠评论内链接直接跳转的问题..

问题根源

折叠评论内的 pointer-events:none 属性,这个属性则是影响击穿bug的主要原因。

打开 valine.min.js ctrl+f 定位到 .v .vlist .vcard .vcontent.expand:before 或右键审查元素发现,评论超出字数后有 :before (透明渐变叠加样式)和 :after (文字区域) 两个伪元素组成 expend 折叠效果,看以下样式

.v .vlist .vcard .vcontent.expand:before {
	display: block;
	content: "";
	position: absolute;
	width: 100%;
	left: 0;
	top: 0;
	bottom: 3.15em;
	pointer-events: none;
	background: -webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(hsla(0,0%,100%,.9)));
	background: linear-gradient(180deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.9))
  }

  .v .vlist .vcard .vcontent.expand:after {
	display: block;
	content: "点击展开";
	text-align: center;
	color: #828586;
	position: absolute;
	width: 100%;
	height: 3.15em;
	line-height: 3.15em;
	left: 0;
	bottom: 0;
	pointer-events: none;
	background: hsla(0,0%,100%,.9)
  }

解决方案

了解以上结构后我们直接删除掉 :before 样式,将 :before 内的 background 渐变样式复制到 :after 内,再将 :after 内的 pointer-events 属性移除,将 height 设置 100% ,调整 line-height 至合适位置( 17.15em )即可(可修改 :after 颜色以便与评论内容区分)

适配方案

当需要适配 darkmode 时,只需对 :after 样式进行渐变覆盖即可。

.v .vlist .vcard .vcontent.expand:after {
	display: block;
	content: "点击展开";
	text-align: center;
	color: #949494;
	position: absolute;
	width: 100%;
	height: 100%;
	line-height: 15.15em;
	left: 0;
	bottom: 0;
	background: -webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(hsla(0,0%,100%,.9)));
	background: linear-gradient(180deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.9))
  }

以上,有问题评论留言反馈。


评论留言

avatar
「 涂鸦画板 」 关闭表情 bilibili 小电视
h0h1h2h3h4h5h6h7h8h9h10h11h12h13h14h15h16h17h18h19h20h21h22h23h24h25h26h27h28h29h30h31h32h33h34h35h36h37h38h39h40h41h42h43h44h45h46h47h48h49h50h51h52h53h54h55h56h57h58h59h60h61h62h63
6 条评论
user_avatar
Ying Chrome / Windows 10
2020-05-14 回复

突然高产~?! 虽然只知道这是俩伪元素…反正看起来很厉害 ~

    user_avatar
    2broear adminEdge / Windows 10
    2020-05-14 回复
    @Ying ,

    这两玩意可以通过class控制,相比标签还是比较好用了

    user_avatar
    Ying Chrome / Windows 10
    2020-05-14 回复
    @2broear ,

    话说大佬能否修一下我的头像 突然想起来我的qq头像就是这个辣没事了…(刚想说我的gravata不是酱紫的来着)

    user_avatar
    2broear adminEdge / Windows 10
    2020-05-14 回复
    @Ying ,

    是啊,如果gravatar使用的是qq邮箱,这里默认会先使用qq头像的233(之前写笔记有提到优先获取gravatar,不过一直🕊着没动

    user_avatar
    2broear adminEdge / Windows 10
    2020-05-14 回复
    @Ying ,

    托你的福,修复了233

    user_avatar
    Ying Chrome / Windows 10
    2020-05-14 回复
    @2broear ,

    dadada…大佬…