感谢由LiuShen制作的插件和教程ヾ(^▽^*)))
YvYang的AI摘要
Spark-Lite

前言

众所周知via浏览器是一款免费开源的非常好用的浏览器,其最大的特点就是体积小巧并且集成多种功能,安装完后仅仅3mb左右。
极简的软件设计有着高度的自定义功能,这篇文章是作者的via浏览器主页的分享。

这个主页的代码由作者结合其他大佬的作品并利用AI更改而成,感谢前人铺路。

效果预览

这个主页的搜索框出初始位置在下方,方便人手点击,聚焦后会上升至屏幕中央,同时Logo自动隐藏,无比丝滑。

viayl.webp

Logo的样式是HTML代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<style>
div p {
text-align: center;
background: linear-gradient(to right, #F596AA, #66CCFF 25%, #F596AA 50%, #66CCFF 75%, #F596AA);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
background-size: 200% 100%;
animation: runs 3s infinite linear;
}

@keyframes runs {
0% {
background-position: 0 0;
}
100% {
background-position: 100% 0;
}
}
</style>
</head>
<body>
<div>
<p>Ciallo~(∠・ω< )⌒★</p>
</div>
<script>
document.addEventListener("DOMContentLoaded", function () {
var h,
b = document.getElementById("search_submit"),
c = document.createElement("select"),
e = [],
f = search,
};
(c.style.color="#FFFFFF"),
(c.style.float = "left"),
(c.style.height = "46px"),
(c.style.border = "none"),
(c.style.paddingLeft = "10px"),
(c.style.background = "transparent"),
(c.style.outline = "none"),
(c.style.borderRadius = "inherit");
for (h in g)
e.push(
"<option value=" +
h +
" " +
(g[h].disabled || "") +
">" +
g[h].name +
"</option>"
);
(c.innerHTML = e.join("")),
(c.onchange = function () {
var b, c;
"c" !== this.value && "m" !== this.value
? ((b = !0), (localStorage.se = this.value))
: ((c = prompt(
"请修改自定义地址\n注:via上取消也可能会清空(′⊙ω⊙`)",
localStorage.c
)),
(c = (c || "").trim()),
(b = !c),
(this.value = b ? "i" : "c"),
(localStorage.c = c)),
(this.children[this.children.length - 1].disabled = b);
}),
(c.value = localStorage.se || "i"),
b.parentElement.insertBefore(c, b),
(search = function () {
var a = document.getElementById("search_input");
return (
(a.value = a.value.trim()),
a.value ? ((a.value = g[c.value].url + a.value), f()) : !1
);
});
});
</script>
</body>
</html>

自定义css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
/* ===== 根元素变量定义 ===== */
:root {
--contenttop: 148vw; /* 内容区域顶部定位基准值 */
--searchbarmove: -68vw; /* 搜索栏获得焦点时垂直移动距离 */
--submitmove: 76vw; /* 提交按钮水平定位位置 */
--searchbaradius: 15px; /* 搜索栏圆角半径 */
--searchbarwidth: 90vw; /* 获得焦点时搜索栏宽度 */
--searchbarclear: 0.1; /* 搜索栏背景透明度 */
--searchbarblur: 5px; /* 背景模糊效果强度 */
--sugposition: 110vw; /* 搜索建议框底部定位 */
}

/* ===== 主内容区域定位 ===== */
#content {
position: fixed;
top: var(--contenttop); /* 使用变量控制顶部定位 */
/* 添加过渡效果确保所有子元素同步移动 */
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* 搜索栏获得焦点时移动整个内容区域 */
.search_bar:focus-within ~ #content {
transform: translateY(var(--searchbarmove));
}

/* ===== LOGO协同动画 ===== */
/* 确保Logo有正确的位置和过渡 */
#logo {
position: relative; /* 或 absolute/fixed 根据实际情况 */
display: block;
transform: translateY(0);
opacity: 1;
/* 使用与搜索框相同的动画曲线和持续时间 */
transition:
transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
opacity 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* 搜索栏获得焦点时Logo的协同动画 */
.search_bar:focus-within ~ #logo {
/* 与搜索框相同的移动距离 */
transform: translateY(var(--searchbarmove));
/* 在移动过程中逐渐隐藏 */
opacity: 0;
}

/* ===== 搜索建议框样式 ===== */
.opSug_wpr {
width: var(--searchbarwidth) !important; /* 动态宽度 */
border-radius: 15px !important; /* 圆角效果 */
border: 0 !important;
background: rgba(255, 255, 255, 0.2) !important; /* 半透明白色背景 */
backdrop-filter: blur(5px); /* 毛玻璃效果 */
max-height: 250px !important;
bottom: var(--sugposition); /* 动态底部定位 */
animation: enter-to 0.5s forwards; /* 入场动画 */
transform-origin: top center; /* 缩放中心点 */
}

/* 搜索建议框入场动画 */
@keyframes enter-to {
from {
transform: translateY(-40px) scale(0.98); /* 初始位置:上移+轻微缩小 */
opacity: 0; /* 初始透明度 */
}
to {
transform: translateY(0) scale(1); /* 结束位置:正常位置 */
opacity: 1; /* 完全显示 */
}
}

/* ===== 主搜索栏样式 ===== */
.search_bar {
box-shadow: 0 0 5px rgba(70, 70, 40, 0.255); /* 柔和阴影 */
width: 80vw; /* 默认宽度 */
background: rgba(255, 255, 255, var(--searchbarclear)); /* 动态透明度 */
backdrop-filter: blur(5px); /* 背景模糊 */
border-radius: var(--searchbaradius) !important; /* 动态圆角 */
transform: translateY(0); /* 初始位置 */
position: relative; /* 确保层级正确 */
z-index: 10; /* 高于Logo */
/* 分离过渡效果:位置变化使用弹性曲线,宽度变化使用缓动 */
transition:
transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
width 0.5s ease;
}

/* 搜索栏获得焦点状态 */
.search_bar:focus-within {
width: var(--searchbarwidth); /* 扩展宽度 */
transform: translateY(var(--searchbarmove)); /* 垂直移动 */
/* 保持与默认状态一致的过渡曲线 */
transition:
transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
width 0.3s ease;
}

/* ===== 提交按钮样式 ===== */
#search_submit {
position: absolute !important;
z-index: 1;
display: block !important;
left: 80vw; /* 初始位置:搜索栏右侧 */
opacity: 0;
visibility: hidden;
/* 弹性过渡效果:带弹跳的动画曲线 */
transition:
left 0.9s cubic-bezier(0.68, -0.55, 0.27, 1.55),
opacity 0.6s ease-out,
visibility 0.6s step-end;
}

/* 搜索栏聚焦时的提交按钮 */
.search_bar:focus-within > #search_submit {
left: var(--submitmove); /* 移动到指定位置 */
opacity: 1;
visibility: visible;
animation: submit-appear 1s both; /* 应用弹跳动画 */
transition: none; /* 禁用基础过渡 */
}

/* 提交按钮弹跳动画 */
@keyframes submit-appear {
0% {
opacity: 0;
transform: translateX(20px); /* 初始位置:右侧偏移 */
}
50% {
opacity: 0.5;
transform: translateX(-5px); /* 中间位置:轻微回弹 */
}
100% {
opacity: 1;
transform: translateX(0); /* 最终位置:正常位置 */
}
}

/* ===== 书签区域动画 ===== */
a, #bookmark_part {
transform: translateY(0);
opacity: 1;
visibility: visible;
/* 精确控制各属性的过渡效果 */
transition:
transform 0.4s,
opacity 0.4s,
visibility 0.4s;
}

/* ===== 其他保持不变的样式 ===== */
/* 搜索栏聚焦时书签区域的隐藏效果 */
.search_part:focus-within ~ #bookmark_part {
opacity: 0;
visibility: hidden;
transform: translateY(20px);
}

/* 搜索栏聚焦时链接的隐藏效果 */
.search_part:focus-within > a {
opacity: 0;
visibility: hidden;
transform: translateY(20px);
}

/* 其他保留样式 */
.opSug_wpr {
/* 原有样式 */
}
#search_submit {
/* 原有样式 */
}

由于作者使用的是华为手机的小艺输入法输入框的位置会比默认的百度输入法低一点,请自行调整其中参数,注释已经非常详尽

背景壁纸

可自行 下载(选择) 图片后设置
xcs.jpg
注: 图片来源于网络