html随着页面滑动,实现桌面和移动浏览器元素随页面滚动产生动画

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

实现桌面和移动浏览器元素随页面滚动产生动画的js插件

document.documentElement.classList.add('js-enabled');

body, html { font-size: 100%; padding: 0; margin: 0;}

/* Reset */

*,

*:after,

*:before {

-webkit-box-sizing: border-box;

-moz-box-sizing: border-box;

box-sizing: border-box;

}

/* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */

.clearfix:before,

.clearfix:after {

content: " ";

display: table;

}

.clearfix:after {

clear: both;

}

body{

background: #494A5F;

overflow-x:hidden;

color: #D5D6E2;

font-weight: 500;

font-size: 1.05em;

font-family: "Microsoft YaHei","宋体","Segoe UI", "Lucida Grande", Helvetica, Arial,sans-serif, FreeSans, Arimo;

}

a{color: #2fa0ec;text-decoration: none;outline: none;}

a:hover,a:focus{color:#74777b;}

.htmleaf-container{

margin: 0 auto;

text-align: center;

overflow: hidden;

}

.htmleaf-content {

font-size: 150%;

padding: 1em 0;

}

.htmleaf-content h2 {

margin: 0 0 2em;

opacity: 0.1;

}

.htmleaf-content p {

margin: 1em 0;

padding: 5em 0 0 0;

font-size: 0.65em;

}

.bgcolor-1 { background: #f0efee; }

.bgcolor-2 { background: #f9f9f9; }

.bgcolor-3 { background: #e8e8e8; }/*light grey*/

.bgcolor-4 { background: #2f3238; color: #fff; }/*Dark grey*/

.bgcolor-5 { background: #df6659; color: #521e18; }/*pink1*/

.bgcolor-6 { background: #2fa8ec; }/*sky blue*/

.bgcolor-7 { background: #d0d6d6; }/*White tea*/

.bgcolor-8 { background: #3d4444; color: #fff; }/*Dark grey2*/

.bgcolor-9 { background: #ef3f52; color: #fff;}/*pink2*/

.bgcolor-10{ background: #64448f; color: #fff;}/*Violet*/

.bgcolor-11{ background: #3755ad; color: #fff;}/*dark blue*/

.bgcolor-12{ background: #3498DB; color: #fff;}/*light blue*/

.bgcolor-20{ background: #494A5F;color: #D5D6E2;}

.mt50{margin-top: 50px;}

/* Header */

.htmleaf-header{

padding: 1em 190px 1em;

letter-spacing: -1px;

text-align: center;

background: #66677c;

}

.htmleaf-header h1 {

color: #D5D6E2;

font-weight: 600;

font-size: 2em;

line-height: 1;

margin-bottom: 0;

font-family: "Microsoft YaHei","宋体","Segoe UI", "Lucida Grande", Helvetica, Arial,sans-serif, FreeSans, Arimo;

}

.htmleaf-header h1 span {

font-family: "Microsoft YaHei","宋体","Segoe UI", "Lucida Grande", Helvetica, Arial,sans-serif, FreeSans, Arimo;

display: block;

font-size: 60%;

font-weight: 400;

padding: 0.8em 0 0.5em 0;

color: #c3c8cd;

}

/*nav*/

.htmleaf-demo a{color: #fff;text-decoration: none;}

.htmleaf-demo{width: 100%;padding-bottom: 1.2em;}

.htmleaf-demo a{display: inline-block;margin: 0.5em;padding: 0.6em 1em;border: 3px solid #fff;font-weight: 700;}

.htmleaf-demo a:hover{opacity: 0.6;}

.htmleaf-demo a.current{background:#1d7db1;color: #fff; }

/* Top Navigation Style */

.htmleaf-links {

position: relative;

display: inline-block;

white-space: nowrap;

font-size: 1.5em;

text-align: center;

}

.htmleaf-links::after {

position: absolute;

top: 0;

left: 50%;

margin-left: -1px;

width: 2px;

height: 100%;

background: #dbdbdb;

content: '';

-webkit-transform: rotate3d(0,0,1,22.5deg);

transform: rotate3d(0,0,1,22.5deg);

}

.htmleaf-icon {

display: inline-block;

margin: 0.5em;

padding: 0em 0;

width: 1.5em;

text-decoration: none;

}

.htmleaf-icon span {

display: none;

}

.htmleaf-icon:before {

margin: 0 5px;

text-transform: none;

font-weight: normal;

font-style: normal;

font-variant: normal;

font-family: 'icomoon';

line-height: 1;

speak: none;

-webkit-font-smoothing: antialiased;

}

/* footer */

.htmleaf-footer{width: 100%;padding-top: 10px;}

.htmleaf-small{font-size: 0.8em;}

.center{text-align: center;}

/****/

.related {

color: #fff;

background: #494A5F;

text-align: center;

font-size: 1.25em;

padding: 0.5em 0;

overflow: hidden;

}

.related > a {

vertical-align: top;

width: calc(100% - 20px);

max-width: 340px;

display: inline-block;

text-align: center;

margin: 20px 10px;

padding: 25px;

font-family: "Microsoft YaHei","宋体","Segoe UI", "Lucida Grande", Helvetica, Arial,sans-serif, FreeSans, Arimo;

}

.related a {

display: inline-block;

text-align: left;

margin: 20px auto;

padding: 10px 20px;

opacity: 0.8;

-webkit-transition: opacity 0.3s;

transition: opacity 0.3s;

-webkit-backface-visibility: hidden;

}

.related a:hover,

.related a:active {

opacity: 1;

}

.related a img {

max-width: 100%;

opacity: 0.8;

border-radius: 4px;

}

.related a:hover img,

.related a:active img {

opacity: 1;

}

.related h3{font-family: "Microsoft YaHei", sans-serif;}

.related a h3 {

font-weight: 300;

margin-top: 0.15em;

color: #fff;

}

/* icomoon */

.icon-htmleaf-home-outline:before {

content: "\e5000";

}

.icon-htmleaf-arrow-forward-outline:before {

content: "\e5001";

}

@media screen and (max-width: 50em) {

.htmleaf-header {

padding: 3em 10% 4em;

}

.htmleaf-header h1 {

font-size:2em;

}

}

@media screen and (max-width: 40em) {

.htmleaf-header h1 {

font-size: 1.5em;

}

}

@media screen and (max-width: 30em) {

.htmleaf-header h1 {

font-size:1.2em;

}

}

.js-enabled .fooReveal { visibility: hidden; }

.fooContainer { perspective: 800px; }

1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
10.jpg
11.jpg
12.jpg
13.jpg
14.jpg
15.jpg
16.jpg
13.jpg
14.jpg
15.jpg
16.jpg
13.jpg
14.jpg
15.jpg
16.jpg
13.jpg
14.jpg
15.jpg
16.jpg
13.jpg
14.jpg
15.jpg
16.jpg
13.jpg
14.jpg
15.jpg
16.jpg
13.jpg
14.jpg
15.jpg
16.jpg

window.sr = ScrollReveal();

sr.reveal( '.fooReveal', { rotate: {x: 65},reset:true } );

哈哈,有好的有用的源码我会在和大家分享,大家也可以关注H5EDU

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现吸顶导航和高亮显示当前模块需要进行以下步骤: 1. 在页面添加吸顶导航和对应的模块内容,可以使用`<header>`和`<section>`标签。 2. 在导航绑定点击事件,使用`ref`获取对应的模块节点,然后使用`scrollIntoView()`方法实现滚动到指定模块的效果。 3. 使用`IntersectionObserver`监听每个模块的位置,当某个模块进入视口时,将对应的导航高亮显示。 下面是一个示例代码: ``` <template> <div class="container"> <header ref="header"> <ul> <li v-for="(item, index) in navList" :key="index" @click="scrollToSection(index)" :class="{ active: activeIndex === index }">{{ item }}</li> </ul> </header> <section v-for="(item, index) in sectionList" :key="index" ref="sections"> <h2>{{ item }}</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla nec sapien id dolor commodo accumsan. Nullam auctor, tortor eu elementum lacinia, odio sem eleifend sapien, vel efficitur velit lacus a nisi. Pellentesque sit amet nisi vitae enim pretium feugiat. Maecenas euismod vestibulum nisi, a semper ipsum sollicitudin eu.</p> </section> </div> </template> <script lang="ts"> import { defineComponent, onMounted, ref } from 'vue'; export default defineComponent({ setup() { const navList = ['Section 1', 'Section 2', 'Section 3', 'Section 4']; const sectionList = ['Section 1', 'Section 2', 'Section 3', 'Section 4']; const activeIndex = ref(0); const scrollToSection = (index: number) => { const sections = document.querySelectorAll('section'); sections[index].scrollIntoView({ behavior: 'smooth' }); }; const observer = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.intersectionRatio > 0.5) { activeIndex.value = Number(entry.target.dataset.index); } }); }, { threshold: 0.5 } ); onMounted(() => { const header = document.querySelector('header'); const sections = document.querySelectorAll('section'); sections.forEach((section, index) => { section.setAttribute('data-index', String(index)); observer.observe(section); }); header?.classList.add('sticky'); }); return { navList, sectionList, activeIndex, scrollToSection, }; }, }); </script> <style scoped> .container { max-width: 800px; margin: 0 auto; padding: 20px; } header { position: relative; z-index: 1; background-color: #fff; padding: 10px; margin-bottom: 20px; border-bottom: 1px solid #e0e0e0; } header.sticky { position: sticky; top: 0; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } ul { display: flex; justify-content: space-between; list-style: none; margin: 0; padding: 0; } li { cursor: pointer; padding: 10px; } li.active { font-weight: bold; } section { margin-bottom: 20px; } h2 { margin-top: 0; } </style> ``` 在上面的代码,我们使用了Vue 3的Composition API来管理状态和生命周期。在`setup`函数,我们定义了`navList`和`sectionList`数组来存储导航和模块的内容,以及`activeIndex`变量来跟踪当前活动的模块。然后,我们定义了`scrollToSection`函数来实现点击导航后滚动到指定模块的效果。 在`onMounted`生命周期钩子,我们使用`IntersectionObserver`来监听每个模块的位置,当某个模块进入视口时,将对应的导航高亮显示。我们还使用`classList`来动态添加/删除`sticky`类,实现吸顶导航的效果。 最后,我们将组件导出,可以在其他组件使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值