Via浏览器主页

1395 字
7 分钟
Via浏览器主页

前言#

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

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

效果预览#

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

viayl.webp
viayl.webp

Logo的样式是HTML代码

<!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#

/* ===== 根元素变量定义 ===== */
: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
xcs.jpg
注: 图片来源于网络

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
Via浏览器主页
https://blog.yvyang.top/posts/22734/index.HTML/
作者
余漾
发布于
2025-08-16
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
MPV——开源好用的极简播放器
闲时偶记 这篇文章主要介绍了一款免费、开源的媒体播放器MPV,它基于MPlayer、mplayer2和FFmpeg项目开发。文章首先介绍了MPV的安装过程,包括版本选择、配置内容(如更改播放配置、添加开源插件uosc等)和缓存设置。接着,文章详细介绍了如何使用MPV进行操作,包括全屏/默认大小、播放/暂停、退出等基本功能,以及如何通过快捷键进行操作。最后,文章还提供了MPV的官方文档链接,方便用户查阅相关信息。
2
Reverse:1999解包——音乐《箱中气候》
闲时偶记 这篇文章讲述了作者对游戏重返未来1999中配乐的欣赏,并尝试在游戏文件内找到这些音乐。通过参考教程,作者成功解包了1600首音乐文件,并记录下了其中两首的主要信息,包括标题和专辑名称,封面则取自1999官网。文章最后提供了下载链接,供读者下载这些音乐。
3
电教委员的自我修养
闲时偶记 这篇文章主要讨论了电教委员在接手新电教平台时需要掌握的一系列操作和注意事项。文章首先强调了电教委员的使命,即提高教学体验和带来适当的快乐。接着,作者详细介绍了创建系统还原点、修改屏幕分辨率和缩放、音频视频播放设置、多媒体展示软件选择、蓝牙连接方法、课程表使用、浏览器设置、时间显示、压缩软件选择、点名软件应用、防止网站访问以及U盘无法识别时的解决方法等。这些内容涵盖了电教平台的日常管理和优化,旨在帮助电教委员提高工作效率,改善学习环境。
4
我的世界Java版1.8.9服务器模组推荐
闲时偶记 这篇文章主要介绍了适用于我的世界Java版1.8.9版本的5款实用模组,这些模组旨在增强PVP玩法的游戏体验。文章详细介绍了每一款模组的功能和使用方法,并提供了下载链接。强制疾跑:该模组允许玩家在游戏中无需按着疾跑键即可持续移动,从而提供更流畅的游戏体验。 -无伤害抖动:此模组可以消除玩家在受击后产生的视觉抖动,有助于提高瞄准的准确性。 -输入修正:针对中文玩家,该模组允许他们使用输入法直接打出游戏内的文本内容,解决了因语言切换导致的操作不便。 -方块轮廓显示:这个模组使方块轮廓的显示更为清晰,方便玩家更好地观察和选择方块。 -自定义装扮:让玩家能够自定义视角下角色的帽子、披风等装扮,增加个性化体验。最后,文章还提供了每个模组的单独链接以及整合后的zip文件链接,方便用户下载和使用。
5
信息课上的斗智斗勇
闲时偶记 这篇文章探讨了在信息课上解除教师对电脑控制的方法,作者分享了自己使用JiYuTrainer、命令行结束进程、粉碎文件后结束进程以及挂起(停止)进程等技巧来尝试摆脱老师的控制。这些方法各有特点,如JiYuTrainer适用于`极域电子教室`,而命令行则适用于多种控制软件。此外,还提到了一些替代工具,如TaskExplorer和ProcessExplorer,以解决学校严格管控下的问题。文章最后提供了相关软件的下载链接。
随机文章 随机推荐

评论区

Profile Image of the Author
余漾
澄空碧山 绿水余漾
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
19
分类
2
标签
33
总字数
17,397
运行时长
0
总访问量
0
总访客数
0

文章目录