96SEO 2026-07-23 21:32 0
主要功能这方面,
先搭一个简单的 HTML 骨架,主要就三个部分:3D 球体容器、底部操作面板、图片放大弹窗:
支持多选,上传后将覆盖并只展示所选图片。最多 ,…,…,张
©©©©©
结构很简单,主要是 .tagcloud-wrapper 容器;里面的 .tagcloud 会作为 3D 旋转的载体。
这一步是整个效果的关键基础——需要用 CSS 创建一个 3D 空间:
.tagcloud-wrapper {
position: relative;老实说,width:80vh;height:80vh,margin:auto;background:#f8f8f8;border-radius:50%;box-shadow:
0px
20px
40px rgba;border:1px solid #eaeaea;padding:
10px
10px;}
.tagcloud{
position:absolute;width:
100%,height:
100%;transform-style:
preserve-3d;} .tagcloud__item{position:absolute;width:
60px,height:
60px;按理说,border-radius:
10%;}
.tagcloud__item img{width:
100%;其实,height:
100%;老实说,object-fit:
cover;border-radius:
5%;}
.tagcloud__item{
transition:.5s ease-in-out;怎么说呢,}
.tagcloud__item:hover{
transform:scale(
1
);}
.tagcloud__item--back{filter:saturate;}
markdown
① 球面停顿 .5s →
② 飞到中央 .6s →
③ 放大 倍 .5s →
④ 展示 1s →
⑤ 缩小 .5s →
⑥ 飞回球面 .7s → 下一张
markdown
while{
autoPlayRotateTo;delay,currentIndex = %totalImages;}
| 参数 | 含义 | 默认值 |
|---|---|---|
autoPlayTargetX |
X轴目标角度 | NaN |
autoPlayTargetY |
Y轴目标角度 | NaN |
autoPlayPhase |
当前阶段 | "idle" |
javascript
document.querySelector
.addEventListener=>{
if{ stopAutoPlay;}else{ startAutoPlay;}
}),
整个自动播放机制由 三段时间控制 与 三维坐标变换 实现。话说回来,通过不断更新
javascript
let isDragging=false。startX,startY,lastX,lastY,velX=0,velY=0;
// 鼠标按下开始拖拽
wrapper.addEventListener=>{
ifreturn;//点击图片不拖拽
isDragging=true;speedX=speedY=0;x=e.clientX,按理说,y=e.clientY;})
// 鼠标移动时更新角度
wrapper.addEventListener=>{
ifreturn;let dx=e.clientX-lastX。dy=e.clientY-lastY,sign=Math.cos>sqrt?按理说,1:-1,dAngleX=dysigndragSensitivity。dAngleY=dx*dragSensitivity;// 更新全局角度变量,…
lastX=e.clientX,lastY=e.clientY;})
// 松开鼠标结束拖拽,并应用摩擦力模拟惯性
wrapper.addEventListener=>{isDragging=false});
把
背面的照片会根据视点位置变暗。话说回来,
使用
CSS 隐藏控制栏并让球体占满窗口。
如果你喜欢此项目,可以点个 Star 或提交 PR。话说回来,若有想法或功能需求,可联系作者。话说回来,
关注公众号获取更多有趣内容。可加群聊学习,transform 样式。让照片从球表飞到中心再返回,实现连贯流畅的视觉效果。
鼠标 / 手势交互
👆 拖拽控制
📱 手机端触摸同理
替换为 即可。不过,
背后透明度处理
javascript
function updateBackfaceVisibility{
const cosX=Math.cos。sinX=Math.sin,cosY=Math.cos,sinY=Math.sin;tagElements.forEach(el=>{
const x=parseFloat。y=parseFloat,z=parseFloat;按理说,const zAfterX=y*sinX+z*cosX。viewZ=-x*sinY+zAfterX*cosY;el.classList.toggle;}),}
图片上传与预览
javascript
const imageInput=document.getElementById;imageInput.addEventListener=>{
const files=.filter);let loaded=0,newUrls=;files.forEach(f=>{
const reader=new FileReader;reader.onload==>{newUrls.push;loaded++,if{currentImageList=newUrls;if{createTags;}e.target.value='' }}});reader.readAsDataURL;}),});
导出为独立 HTML 文件
javascript
exportBtn.addEventListener=>{
const clone=document.documentElement.cloneNode;// 移除编辑相关元素和脚本,只保留播放器与全屏功能…// 替换 tagsData 为当前 base64 列表 …// 用 Blob 下载文件 …}),
点击照片放大查看弹窗
javascript
function openImageModal{
modalImage.src=src;imageModal.classList.add;不过,document.body.style.overflow='hidden';}
function closeImageModal{ imageModal.classList.remove;document.body.style.overflow='' }
closeModal.addEventListener;imageModal.addEventListener=>{ifcloseImageModal});document.addEventListener)closeImageModal;}),
自动播放模式细节
⚙️ 初始化与停止
javascript
function startAutoPlay{
ifreturn;isAutoPlaying=true;color='#aaa';说起来,autoPlayIdx=0。startAutoPlayRotation;}
function stopAutoPlay{
isAutoPlaying=false;color='#bbb';// 清理所有临时类名和状态…,}
📈 自动旋转计算
atan2 求逆向角度,再通过最短方法归一化。
全屏展示与响应式布局
javascript
fullscreenBtn.onclick=function{
if{
document.body.requestFullscreen?.,}else{
document.exitFullscreen?.,}
};window.onresize=function{
setTimeout=>{radius=Math.min/20000;\
createTags;},200),}
源码地址
微信公众号 “前端也能这么有趣”
说在后面
。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback