ope体育电竞赛事官方网站 - ope体育电竞赛事
深蓝ope体育电竞赛事官方网站
专注于人工智能、机器人与自动驾驶的ope体育电竞赛事官方网站平台
培养前沿科技领域优秀人才
ope体育电竞赛事官方网站介绍
深蓝不辍,蓝海扬帆


品牌定位
专注于人工智能、机器人与自动驾驶的ope体育电竞赛事官方网站平台


成立时间
北京总部 2017年
浙江分ope体育电竞赛事官方网站 2022年
上海分ope体育电竞赛事官方网站 2025年
浙江分ope体育电竞赛事官方网站 2022年
上海分ope体育电竞赛事官方网站 2025年


目标使命
为前沿科技领域培养优秀人才
年度记忆点
从创立之初到现在,深蓝ope体育电竞赛事官方网站始终致力于前沿科技ope体育电竞赛事官方网站的探索与实践
—
业务概览
深蓝ope体育电竞赛事官方网站围绕人工智能ope体育电竞赛事官方网站开展多元化业务, 形成了面向个人ope体育电竞赛事官方网站者、高校和企业的完整服务体系
实训基地
我们在北京、上海、浙江等多地建设了实训基地,提供丰富的线下实训项目,让学员在真实场景中实践所学知识,
提升动手能力和解决实际问题的能力
提升动手能力和解决实际问题的能力
加入我们
深蓝ope体育电竞赛事官方网站持续开放算法、运营、市场、销转等全职和实习岗位。
无论你是领域专家,还是未来之星,这里都有属于你的舞台。
无论你是领域专家,还是未来之星,这里都有属于你的舞台。
简历请投递至:hr@shenlanxueyuan.com ,我们会在一周内反馈结果。
期待与优秀的人同行!
期待与优秀的人同行!
'
+ '
';
}).join('');
}
function syncButtons() {
var atFirst = (idx === 0);
var atLast = (idx === YEAR_DATA.length - 1);
var prevBtn = document.getElementById('btn-prev');
var nextBtn = document.getElementById('btn-next');
if (prevBtn) {
prevBtn.style.backgroundImage = atFirst
? 'url("/__xh__/publicqn.shenlanxueyuan.com/static-dist/aboutus/PC-jiantouzuo_gray@2x.png?26.8.2602")'
: 'url("/__xh__/publicqn.shenlanxueyuan.com/static-dist/aboutus/PC-jiantouzuo_blue@2x.png?26.8.2602")';
prevBtn.disabled = !!atFirst;
prevBtn.setAttribute('aria-disabled', atFirst ? 'true' : 'false');
}
if (nextBtn) {
nextBtn.style.backgroundImage = atLast
? 'url("/__xh__/publicqn.shenlanxueyuan.com/static-dist/aboutus/PC-jiantouyou_gray@2x.png?26.8.2602")'
: 'url("/__xh__/publicqn.shenlanxueyuan.com/static-dist/aboutus/PC-jiantouyou_blue@2x.png?26.8.2602")';
nextBtn.disabled = !!atLast;
nextBtn.setAttribute('aria-disabled', atLast ? 'true' : 'false');
}
}
function prev() {
var isM = window.innerWidth < 768;
var card = document.getElementById('year-card');
if (isM && card) {
card.classList.remove('yc-anim-in-left','yc-anim-in-right','yc-anim-out-left','yc-anim-out-right');
card.classList.add('yc-anim-out-right');
setTimeout(function(){
idx = (idx - 1 + YEAR_DATA.length) % YEAR_DATA.length;
render(idx);
card.classList.remove('yc-anim-out-right');
card.classList.add('yc-anim-in-left');
syncButtons(); setActiveTab();
scrollActiveTabIntoView();
}, 160);
} else {
idx = (idx - 1 + YEAR_DATA.length) % YEAR_DATA.length;
render(idx);
syncButtons();
setActiveTab();
adjustToTab(idx);
}
}
function next() {
var isM = window.innerWidth < 768;
var card = document.getElementById('year-card');
if (isM && card) {
card.classList.remove('yc-anim-in-left','yc-anim-in-right','yc-anim-out-left','yc-anim-out-right');
card.classList.add('yc-anim-out-left');
setTimeout(function(){
idx = (idx + 1) % YEAR_DATA.length;
render(idx);
card.classList.remove('yc-anim-out-left');
card.classList.add('yc-anim-in-right');
syncButtons(); setActiveTab();
scrollActiveTabIntoView();
}, 160);
} else {
idx = (idx + 1) % YEAR_DATA.length;
render(idx);
syncButtons();
setActiveTab();
adjustToTab(idx);
}
}
var bp = document.getElementById('btn-prev');
var bn = document.getElementById('btn-next');
if (bp) bp.addEventListener('click', prev);
if (bn) bn.addEventListener('click', next);
// 滑动手势(移动端)
var track = document.getElementById('timeline-track');
if (track) {
var sx = 0, ex = 0;
track.addEventListener('touchstart', function(e){
sx = e.changedTouches[0].clientX;
}, {passive:true});
track.addEventListener('touchend', function(e){
ex = e.changedTouches[0].clientX;
var dx = ex - sx;
if (Math.abs(dx) > 30) { if (dx < 0) next(); else prev(); }
}, {passive:true});
// 监听滚动位置,控制蒙版显示/隐藏(移动端)
var tabsScrollable = document.getElementById('timeline-tabs');
function syncMasks() {
if (!tabsScrollable) return;
var atLeft = tabsScrollable.scrollLeft <= 1;
var atRight = Math.abs(tabsScrollable.scrollWidth - tabsScrollable.clientWidth - tabsScrollable.scrollLeft) <= 1;
track.classList.toggle('at-left', atLeft);
track.classList.toggle('at-right', atRight);
}
// 若启用了原生横向滚动(移动端),绑定事件
var tabsScrollable = document.getElementById('timeline-tabs');
if (tabsScrollable) {
tabsScrollable.addEventListener('scroll', syncMasks, {passive:true});
window.addEventListener('resize', syncMasks);
// 初始化一次
setTimeout(syncMasks, 0);
}
}
// 让选中的 Tab 在移动端始终可见
function scrollActiveTabIntoView() {
var tabsScrollable = document.getElementById('timeline-tabs');
if (!tabsScrollable) return;
if (window.innerWidth >= 768) { adjustToTab(idx); return; }
var tabs = tabsScrollable.querySelectorAll('.timeline-tab');
var t = tabs[idx];
if (!t) return;
var left = t.offsetLeft;
var right = left + t.offsetWidth;
var viewLeft = tabsScrollable.scrollLeft;
var viewRight = viewLeft + tabsScrollable.clientWidth;
if (left < viewLeft) {
tabsScrollable.scrollTo({ left: left - 16, behavior: 'smooth' });
} else if (right > viewRight) {
tabsScrollable.scrollTo({ left: right - tabsScrollable.clientWidth + 16, behavior: 'smooth' });
}
}
// 年份大卡(.year-card)移动端手势:左右滑动切换年份,并联动 Tab
var yearCard = document.getElementById('year-card');
if (yearCard) {
var startX = 0, endX = 0;
yearCard.addEventListener('touchstart', function(e){
startX = e.changedTouches[0].clientX;
}, {passive:true});
yearCard.addEventListener('touchend', function(e){
endX = e.changedTouches[0].clientX;
var delta = endX - startX;
if (Math.abs(delta) > 30) {
if (delta < 0) next(); else prev();
}
}, {passive:true});
}
// 构建底部可点击年份tab
var tabsWrap = document.getElementById('timeline-tabs');
// PC 自定义平移逻辑:让超出部分通过 translateX 平移展示
var currentOffset = 0;
function isDesktop() { return window.innerWidth >= 768; }
function getYearCardWidth() { var el = document.getElementById('year-card'); return el ? el.clientWidth : 0; }
function getContentWidth() { return tabsWrap ? tabsWrap.scrollWidth : 0; }
function getPaddingLeftPx() {
if (!tabsWrap) return 0;
var cs = window.getComputedStyle(tabsWrap);
var pl = parseFloat(cs.paddingLeft || '0');
return isNaN(pl) ? 0 : pl;
}
function getPaddingRightPx() {
if (!tabsWrap) return 0;
var cs = window.getComputedStyle(tabsWrap);
var pr = parseFloat(cs.paddingRight || '0');
return isNaN(pr) ? 0 : pr;
}
function getMaxOffset() {
// 内容总宽 - 左侧对齐用的 paddingLeft - 可视窗口(year-card)宽
return Math.max(0, getContentWidth() - getPaddingLeftPx() - getPaddingRightPx() - getYearCardWidth());
}
function clampOffset(v) {
var max = getMaxOffset();
if (v < 0) v = 0;
if (v > max) v = max;
return v;
}
function applyOffset() {
if (!tabsWrap) return;
if (!isDesktop()) { tabsWrap.style.transform = ''; return; }
tabsWrap.style.transform = 'translateX(' + (-currentOffset) + 'px)';
}
function updatePcMasks(selectedYear) {
var trackEl = document.getElementById('timeline-track');
if (!trackEl || !isDesktop()) return;
// 默认显示两侧
trackEl.classList.remove('at-left');
trackEl.classList.remove('at-right');
if (selectedYear === 2021) {
return; // 2021 选中时,左右都显示
}
if (isLeftAnchored()) {
// 左锚定:隐藏左蒙版,仅显示右侧
trackEl.classList.add('at-left');
trackEl.classList.remove('at-right');
} else if (isRightAnchored()) {
// 右锚定:隐藏右蒙版,仅显示左侧
trackEl.classList.add('at-right');
trackEl.classList.remove('at-left');
}
}
function isLeftAnchored() { return Math.abs(currentOffset) < 1; }
function isRightAnchored() { return Math.abs(currentOffset - getMaxOffset()) < 1; }
function getGapPx() {
if (!tabsWrap) return 0;
var cs = window.getComputedStyle(tabsWrap);
var g = (cs.gap || cs.columnGap || '0').toString();
var n = parseFloat(g);
return isNaN(n) ? 0 : n;
}
function stepSize() {
if (!tabsWrap) return 0;
var first = tabsWrap.querySelector('.timeline-tab');
var w = first ? first.offsetWidth : 0;
return w + getGapPx();
}
if (tabsWrap) {
tabsWrap.innerHTML = YEAR_DATA.map(function(y, i){
return '' + it.title + '
' + '' + it.desc + '
'
+ '' + y.year
+ '年
';
}).join('');
// 记录初始左右 padding 作为基准
var BASE_PAD_L = getPaddingLeftPx();
var BASE_PAD_R = getPaddingRightPx();
tabsWrap.addEventListener('click', function(e){
var t = e.target;
// 兼容点击内部子节点(如 span.year-suffix)
var tabEl = (t && t.closest) ? t.closest('.timeline-tab') : (t.classList && t.classList.contains('timeline-tab') ? t : null);
if (tabEl && tabsWrap.contains(tabEl)) {
var i = parseInt(tabEl.getAttribute('data-idx'), 10);
if (!isNaN(i)) { idx = i; render(idx); syncButtons(); setActiveTab(); adjustToTab(idx); }
}
});
}
function adjustToTab(index) {
if (!isDesktop() || !tabsWrap) return;
var year = YEAR_DATA[index] ? YEAR_DATA[index].year : 0;
// 特殊:点击 2020,直接右锚定(确保 2017 与 year-card 右对齐)
if (year === 2020) {
// 恢复基准 padding,避免受 2021 居中补偿影响
tabsWrap.style.paddingLeft = BASE_PAD_L + 'px';
tabsWrap.style.paddingRight = BASE_PAD_R + 'px';
currentOffset = clampOffset(getMaxOffset());
applyOffset();
updatePcMasks(year);
return;
}
// 特殊:点击 2021,根据当前锚定方向平移 2 个 Tab(不居中)
if (year === 2021) {
var tabs = tabsWrap.querySelectorAll('.timeline-tab');
var t = tabs[index];
if (t) {
// 恢复基准 padding,避免受其他规则影响
tabsWrap.style.paddingLeft = BASE_PAD_L + 'px';
tabsWrap.style.paddingRight = BASE_PAD_R + 'px';
if (isLeftAnchored()) {
// 左锚定 → 向左平移两个 Tab
currentOffset = clampOffset(currentOffset + 2 * stepSize());
} else if (isRightAnchored()) {
// 右锚定 → 向右平移两个 Tab
currentOffset = clampOffset(currentOffset - 2 * stepSize());
} else {
// 非锚定:保持不动,仅切换 Tab
}
}
applyOffset();
updatePcMasks(year);
return;
}
// 分组:左侧组与右侧组
var inLeftGroup = (year >= 2022 && year <= 2025);
var inRightGroup = (year >= 2017 && year <= 2020);
if (inLeftGroup) {
// 若未左锚定,则直接左锚定;已左锚定仅切换 Tab
if (!isLeftAnchored()) currentOffset = 0;
// 恢复基准 padding
tabsWrap.style.paddingLeft = BASE_PAD_L + 'px';
tabsWrap.style.paddingRight = BASE_PAD_R + 'px';
applyOffset();
updatePcMasks(year);
return;
}
if (inRightGroup) {
// 若未右锚定,则直接右锚定;已右锚定仅切换 Tab
if (!isRightAnchored()) currentOffset = clampOffset(getMaxOffset());
// 恢复基准 padding
tabsWrap.style.paddingLeft = BASE_PAD_L + 'px';
tabsWrap.style.paddingRight = BASE_PAD_R + 'px';
applyOffset();
updatePcMasks(year);
return;
}
// 其它情况:不强制移动,仅保证可见
var tabs2 = tabsWrap.querySelectorAll('.timeline-tab');
var t2 = tabs2[index];
if (!t2) return;
var left2 = t2.offsetLeft;
var right2 = left2 + t2.offsetWidth;
var viewLeft2 = currentOffset;
var viewRight2 = currentOffset + getYearCardWidth();
if (left2 < viewLeft2) currentOffset = clampOffset(left2);
else if (right2 > viewRight2) currentOffset = clampOffset(right2 - getYearCardWidth());
applyOffset();
updatePcMasks(year);
}
// 取消动态对齐,避免抖动,统一保持左对齐
function syncTabsAlign() { return; }
function setActiveTab() {
var tabs = document.querySelectorAll('.timeline-tab');
for (var i = 0; i < tabs.length; i++) {
if (i === idx) tabs[i].classList.add('active');
else tabs[i].classList.remove('active');
}
// 保持固定对齐,不再切换
}
render(idx);
syncButtons();
setActiveTab();
// 固定左对齐:不再进行平移
})();
// 点击下箭头,滚动到“学院介绍”模块
document.addEventListener('DOMContentLoaded', function(){
// 渐入动效初始化
try {
var revealNodes = [];
var isDesktop = function(){ return window.innerWidth >= 768; };
if (isDesktop()) {
var q1 = document.querySelector('.aboutus-hero .title');
var q2 = document.querySelector('.aboutus-hero .subtitle');
if (q1) { q1.classList.add('reveal-title'); revealNodes.push(q1); }
if (q2) { q2.classList.add('reveal-subtitle'); revealNodes.push(q2); }
var secs = document.querySelectorAll('.section');
for (var i = 0; i < secs.length; i++) {
var t = secs[i].querySelector('.sec-title');
var d = secs[i].querySelector('.sec-des');
if (t) { t.classList.add('reveal-title'); revealNodes.push(t); }
if (d) { d.classList.add('reveal-subtitle'); revealNodes.push(d); }
}
for (var j = 0; j < revealNodes.length; j++) {
revealNodes[j].classList.add('reveal-init');
}
var ioSupported = 'IntersectionObserver' in window;
if (ioSupported) {
var io = new IntersectionObserver(function(entries){
for (var k = 0; k < entries.length; k++) {
var en = entries[k];
if (en.isIntersecting) {
en.target.classList.add('in-view');
io.unobserve(en.target);
}
}
}, { root: null, rootMargin: '0px 0px -15% 0px', threshold: 0.1 });
for (var m = 0; m < revealNodes.length; m++) io.observe(revealNodes[m]);
// 首屏:确保顶部横幅标题/副标题在首次加载时展示一次与 sec-title/sec-des 一致的动画
if (q1) q1.classList.remove('in-view');
if (q2) q2.classList.remove('in-view');
requestAnimationFrame(function(){
requestAnimationFrame(function(){
if (q1) q1.classList.add('in-view');
if (q2) q2.classList.add('in-view');
});
});
} else {
// 降级:直接展示
for (var n = 0; n < revealNodes.length; n++) revealNodes[n].classList.add('in-view');
}
}
} catch(e) {}
var arrow = document.querySelector('.hero-arrow');
var target = document.getElementById('section-intro');
if (arrow && target) {
arrow.addEventListener('click', function(){
try {
var headerOffset = 60;
var top = target.getBoundingClientRect().top + window.scrollY - headerOffset;
window.scrollTo({ top: top, behavior: 'smooth' });
}
catch(e) { locations.hash = '#section-intro'; }
});
}
});
