热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(個人筆記)在給在線簡歷增加js殊效過程當中碰到的題目及解決方法二

(個人筆記)在給在線簡歷增加js殊效過程當中碰到的問題及處理方法二github預覽點擊菜單轉動動畫首頁lettopelement.offsetTop;lettargetToptop
(個人筆記)在給在線簡歷增加js殊效過程當中碰到的問題及處理方法 二

github
預覽

點擊菜單轉動動畫首頁

let top = element.offsetTop;
let targetTop = top-80;//目的位置,看成盡頭坐標
let currentTop = window.scrollY;//當前windows轉動到的間隔,當作出發點
let n = 50;//n是步數
let step = (targetTop-currentTop)/n;//分25步
let i = 0;//i是每次反覆都加1的變量
let meauscroll = setInterval(() =>{
if(i===n){
window.clearInterval(meauscroll);
return;//既要消滅,又要return
}
i++;//
window.scrollTo(0,currentTop+step*i)
},500/n)//500毫秒除以25幀,就是每走一步的時刻

tween.js庫(緩動動畫)

緩動函數速查表
tween.js庫GitHub
cdnjs搜刮tween
引入

tween.js一個網站的教程

基礎運用指南

let targetTop = top-80;//目的位置,看成盡頭坐標
let currentTop = window.scrollY;//當前windows轉動到的間隔,當作出發點
let s = targetTop-currentTop;//間隔
let t =Math.abs(s)/100*100 ; //每100像素用100毫秒來走,如許時刻就不是牢固的,是
t>500 ? 500:t;//t假如大於500毫秒,就強迫他變成500,防備挪動間隔太長過慢
///tween.js
function animate(time) {
requestAnimationFrame(animate);
TWEEN.update(time);
}
requestAnimationFrame(animate);//上面這段代碼是瀏覽器用來依據電腦差別機能差別,限制動畫的幀數的.幀數不是本身定的,是瀏覽器自動天生的
var coords = { x: currentTop };//肇端位置
var tween = new TWEEN.Tween(coords)
.to({ x: targetTop }, t)//目的位置
.easing(TWEEN.Easing.Quintic.Out)//動畫範例
.onUpdate(function() {
window.scrollTo(0,coords.x);//每次更新的變量要附在什麼上面
})
.start();

張鑫旭輕便用法

張鑫旭的文章怎樣運用tween.js,且衍生了本身的animation.js簡樸用法

張鑫旭基礎運用指南:

div1.Onclick= function () {
Math.animation(0, 800, function (value) {
div1.style.left = value + 'px';
}, 'Bounce.easeInOut', 600);
}

自動高亮導航

//auto height light navbar 自動高亮個導航
let specialArr = document.querySelectorAll('[data-x]');//挑選悉數屬性為data-x的標籤
let minIndex = 0;
for (let i = 1; i if(Math.abs(specialArr[i].offsetTop-window.scrollY) minIndex = i;
}
}
// console.log(specialArr[minIndex]);
for (let i = 0; i specialArr[i].classList.remove('active');
}
specialArr[minIndex].classList.add('active');
let minid = specialArr[minIndex].id;//取到id
// console.log(minid);
let aTarget = document.querySelector('a[href="#' + minid + '"]');//找到href為id的誰人a
// console.log(document.querySelector('a[href = "#siteSkills"]'))
let li = aTarget.parentNode;
// console.log(li);
let liBrotherAndMe = li.parentNode.children;//挑選兄弟和本身的結點
for (let i = 0; i liBrotherAndMe[i].classList.remove('active');
}
li.classList.add('active');

知識點1

let specialArr = document.querySelectorAll('[data-x]');//挑選悉數屬性為data-x的標籤

document.querySelector('a[href="#' + minid + '"]');//找到href為id的誰人a

挑選器的運用,運用屬性挑選

知識點2

[data-x].active{
outline: 10px solid red;
}

[data-x].active示意屬性為data-x且具有acticve的class的標籤的圍困線為10px solid red

處理一個BUG

由於高亮菜單和挪動到菜單上又移出來用的同一個類名active所以會有爭執,相當於做高亮行動的時刻,顯現的是鼠標做挪動出時的行動.所以零丁給高亮子菜單一個行動highLightActive

具體做法是,將js中增加active的class改成highLightActive
並將CSS代碼轉變,在挑選器上面增加一行

.topNavBar nav>ul>li.active>a::after,
.topNavBar nav>ul>li.highLightActive>a::after/*這裡是增加的*/{
opacity: 1;
animation: meauBottomSlide 0.5s ;
}

增加垂直偏挪動畫

增加向上偏移緩動動畫,當進入頁面時usercard偏移一次,然後移到響應的位置偏移一次
道理,最先都加上offsetclass,當挪動到位置的時刻,去掉offset屬性即可.

[data-x]{
transform: translateY(0);
transition: all 1s ease;
}
[data-x].offset{
transform: translateY(300px);
}

須要注重的點,offset必需直接加載html里,用js加的話,transition過渡動畫翻開后也會實行一次,翻開頁面就會往退卻.意義就是剛最先是不偏移的,加了js后最先偏移了.這也要過渡.

然後在最小的minindex那邊

// 增加每次湧現都往上偏挪動畫
specialArr[minIndex].classList.remove('offset');

須要注重的是,假如要完成最最先usercard翻開頁面就向上廉價的話,須要把內里的寫成函數,然後再翻開頁面就實行一遍,然後再在window.onscroll里實行

hightLightAndOffetToUp();//先實行一次,以便usercard能夠砸翻開頁面的時刻就舉行向上偏移

window.Onscroll= function () {
if(window.scrollY > 0){
topNavBar.classList.add('sticky');
}else {
topNavBar.classList.remove('sticky')
}
hightLightAndOffetToUp();
}
function hightLightAndOffetToUp() {//自動高亮個導航和向上偏移函數代碼...}

progress進度條動畫

頭腦:照樣運用CSS過渡transition動畫

section.skill .progressBar{
overflow: hidden;
}
section.skill .progress{
transform: translateX(0);
transition: all 1.8s ease;
}
section.skill.offset .progress{
transform: translateX(-100%);
}

section.skill.offset .progress的寄義是
當section且class為skill且為fooset時,.progress就向左偏移100%,section.skill .progress的寄義為,當去掉offset時,偏移為0,且這個變化要實行transition過渡動畫

父元素,progressBar要設置overflow: hidden;以便來隱蔽進度條的偏移.

操縱DOM經常使用API總結

操縱DOM經常使用API總結

一些問題

[多選]怎樣獵取一個元素的爸爸節點:
var divParent = div._?_

假如不知道,請搜刮 MDN parent

A. parentNode
B. parentElement

怎樣檢測一個元素是筆墨照樣標籤?

var isElement = div.__?__ === 1
假如不知道,請搜刮 MDN node type
nodeType

怎樣獵取一個元素的一切子代標籤(標籤不包含文本)

let children = div.____?____
此處填什麼?

假如不會就搜刮 MDN children

A. children

怎樣獵取一個元素的一切子代節點(節點包含標籤和筆墨)

let children = div.____?____
此處填什麼?

假如不會就搜刮 MDN children
childNodes

怎樣獵取一個div標籤的下一個標籤?
B. div.nextSibling 獵取的有多是筆墨,須要不斷接見 nextSibling 直到獵取到一個 nodeType 為 1 的節點才行

怎樣獵取一個div標籤的一切同級(兄弟)標籤?
C. 聲明空數組 siblings,遍歷 div.parentNode.children,將 div 之外的元素 push 到數組裡


推荐阅读
  • 在 Angular Google Maps 中实现图片嵌入信息窗口的功能,可以通过使用 `@agm/core` 库来实现。该库提供了丰富的 API 和组件,使得开发者可以轻松地在地图上的信息窗口中嵌入图片。本文将详细介绍如何配置和使用这些组件,以实现动态加载和显示图片的功能。此外,还将探讨一些常见的问题和解决方案,帮助开发者更好地集成这一功能。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • 本文深入解析了HTML框架集(FRAMESET)的使用方法及其应用场景。首先介绍了几个关键概念,如如何通过FRAMESET标签将主视图划分为多个独立的区域,每个区域可以加载不同的HTML文件。此外,还详细探讨了FRAMESET在实际开发中的优缺点,并提供了具体的实例代码,帮助开发者更好地理解和应用这一技术。 ... [详细]
author-avatar
WLII庾斌_787
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有