您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Modify avatar border to show progress
当前为
- // ==UserScript==
- // @name Avatar Progress Border (Beta)
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description Modify avatar border to show progress
- // @author 卡洛驰
- // @match *blog.csdn.net/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // 目标值
- const targetValues = [10, 100, 1000, 10000, 100000, 10000000];
- // 颜色数组,每两个目标值使用一个颜色
- const colors = ['#badc58', '#22a6b3', '#eb4d4b', '#f9ca24', '#eb4d4b', '#7e4df3', '#262626'];
- // 获取粉丝数
- const fanCountElement = document.querySelectorAll('.user-profile-head-info-r-c .user-profile-statistics-num')[3];
- if (fanCountElement) {
- const currentValue = parseInt(fanCountElement.textContent.replace(/,/g, ''), 10);
- // 找到最接近的目标值
- let targetValue = targetValues[0];
- for (let i = 0; i < targetValues.length; i++) {
- if (currentValue < targetValues[i]) {
- targetValue = targetValues[i];
- break;
- }
- }
- console.log(currentValue, targetValue);
- const progressPercentage = Math.min((currentValue / targetValue) * 100, 100); // 计算进度百分比,最大为100%
- // 获取对应的颜色
- const colorIndex = targetValues.indexOf(targetValue);
- const progressColor = colors[colorIndex];
- console.log(colorIndex, progressColor);
- // 创建样式
- const style = document.createElement('style');
- style.textContent = `
- .user-profile-head .user-profile-head-info .user-profile-head-info-l .user-profile-head-info-ll .user-profile-avatar[data-v-d1dbb6f8] {
- position: absolute;
- top: -12px;
- width: 102px;
- height: 102px;
- border-radius: 50%;
- background: #fff;
- border: 4px solid transparent !important; /* 边框颜色设置为透明 */
- background-image: conic-gradient(
- ${progressColor} 0% ${progressPercentage}%, /* 进度 */
- #f0f0f2 ${progressPercentage}% 100% /* 灰色部分表示剩余 */
- );
- background-origin: border-box;
- background-clip: border-box;
- }
- .user-profile-avatar img {
- border-radius: 50%;
- width: 100%;
- height: 100%;
- display: block;
- }
- .user-profile-head-info-ll .data-display {
- position: absolute;
- top: -40px; /* 悬浮于头像上面10px */
- left: 50%; /* 水平居中 */
- transform: translateX(-50%); /* 使其真正居中 */
- background-color: #33333380; /* 背景色,半透明 */
- color: white; /* 字体颜色 */
- padding: 5px 10px; /* 内边距 */
- border-radius: 5px; /* 圆角边框 */
- font-size: 14px; /* 字体大小 */
- text-align: center; /* 文本居中 */
- }
- `;
- // 将样式添加到文档头部
- document.head.appendChild(style);
- // 创建数据展示模块
- const dataDisplay = document.createElement('div');
- dataDisplay.className = 'data-display';
- dataDisplay.textContent = `${currentValue}/${targetValue}`; // 格式为“23/100”
- // 将数据展示模块添加到头像上方
- const avatarElement = document.querySelector('.user-profile-head .user-profile-head-info .user-profile-head-info-l .user-profile-head-info-ll .user-profile-avatar[data-v-d1dbb6f8]');
- avatarElement.appendChild(dataDisplay);
- }
- })();