用JavaScript实现页面滑动到指定位置加载动画。
若页面滚动到class名为group-pic的元素的位置时开始加载
原理: 1.获取浏览器窗口的高度;
2.获取页面滚动的高度;
3.获取页面距离文档(document)顶部的高度
offset().top具体指的是距哪里的高度呢?
一些获宽高度的属性:
网页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth (包括边线的宽);
网页可见区域高: document.body.offsetHeight (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop;
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth;
obj.offsetTop 指 obj 距离上方或上层控件的位置,整型,单位像素。
obj.offsetLeft 指 obj 距离左方或上层控件的位置,整型,单位像素。
obj.offsetWidth 指 obj 控件自身的宽度,整型,单位像素。
obj.offsetHeight 指 obj 控件自身的高度,整型,单位像素。
1.offsetTop : 当前对象到其上级层顶部的距离.
不能对其进行赋值.设置对象到页面顶部的距离请用style.top属性.
2.offsetLeft : 当前对象到其上级层左边的距离.
不能对其进行赋值.设置对象到页面左部的距离请用style.left属性.
3.offsetWidth : 当前对象的宽度.
与style.width属性的区别在于:如对象的宽度设定值为百分比宽度,则无论页面变大还是变小,style.width都返回此百分比,而offsetWidth则返回在不同页面中对象的宽度值而不是百分比值
4.offsetHeight : 与style.height属性的区别在于:如对象的宽度设定值为百分比高度,则无论页面变大还是变小,style.height都返回此百分比,而offsetHeight则返回在不同页面中对象的高度值而不是百分比值
avascript中制作滚动代码的常用属性
1.网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offsetWidth (包括边线的宽); 网页可见区域高: document.body.offsetHeight (包括边线的宽); 网页正文全文宽: document.body.scrollWidth; 网页正文全文高: document.body.scrollHeight; 网页被卷去的高: document.body.scrollTop; 网页被卷去的左: document.body.scrollLeft; 网页正文部分上: window.screenTop; 网页正文部分左: window.screenLeft; 屏幕分辨率的高: window.screen.height; 屏幕分辨率的宽: window.screen.width; 屏幕可用工作区高度: window.screen.availHeight;
2.假设 obj 为某个 HTML 控件。
obj.offsetTop 指 obj 距离上方或上层控件的位置,整型,单位像素。 obj.offsetLeft 指 obj 距离左方或上层控件的位置,整型,单位像素。 obj.offsetWidth 指 obj 控件自身的宽度,整型,单位像素。 obj.offsetHeight 指 obj 控件自身的高度,整型,单位像素。
我们对前面提到的“上方或上层”与“左方或上层”控件作个说明。 例如:
“提交”按钮的 offsetTop 指“提交”按钮距“tool”层上边框的距离,因为距其上边最近的是 “tool” 层的上边框。 “重置”按钮的 offsetTop 指“重置”按钮距“tool”层上边框的距离,因为距其上边最近的是 “tool” 层的上边框。 “提交”按钮的 offsetLeft 指“提交”按钮距“tool”层左边框的距离,因为距其左边最近的是 “tool” 层的左边框。 “重置”按钮的 offsetLeft 指“重置”按钮距“提交”按钮右边框的距离,因为距其左边最近的是“提交”按钮的右边框。
以上属性在 FireFox 中也有效。
3.offsetTop 与 style.top 的区别
预备知识:offsetTop、offsetLeft、offsetWidth、offsetHeight 我们知道 offsetTop 可以获得 HTML 元素距离上方或外层元素的位置,style.top 也是可以的,二者的区别是:
(1)offsetTop 返回的是数字,而 style.top 返回的是字符串,除了数字外还带有单位:px。 (2)offsetTop 只读,而 style.top 可读写。 (3)如果没有给 HTML 元素指定过 top 样式,则 style.top 返回的是空字符串。
offsetLeft 与 style.left、offsetWidth 与 style.width、offsetHeight 与 style.height 也是同样道理。 offsetWidth与style.width属性的区别在于:如对象的宽度设定值为百分比宽度,则无论页面变大还是变小,style.width都返回此百分比,而offsetWidth则返回在不同页面中对象的宽度值而不是百分比值
4.scrollLeft : 对象的最左边到对象在当前窗口显示的范围内的左边的距离. 即是在出现了横向滚动条的情况下,滚动条拉动的距离. scrollTop 对象的最顶部到对象在当前窗口显示的范围内的顶边的距离. 即是在出现了纵向滚动条的情况下,滚动条拉动的距离.
击上方“Web前端进阶指南”关注我呦
跟程序员小强一起学前端
这一篇呢,我们来说说CSS3一些高级有趣的属性,帮助我们更好的,更高效的去开发我们的页面,不仅在效率上提高很多,而且页面效果上更炫酷,下面一起来看看吧。
CSS3多列属性有很多,我们一一来介绍一下,包括以下几个属性:
1、CSS3创建多列
column-count属性指定了需要分割的列数,就是说你想要让你的文本显示多少列,我们不需要写很多个div,然后去限制字数,分别在每个div里调用多少字,还需要让div浮动,麻烦滴很啊,这是用CSS3多列我们自己就可以达到这样的需求。如图所示:
效果如下:
这样一来,我们就可以将文本分成3列显示,超出的文本自动隐藏,我们在写响应式页面的时候就可以用到它哦!
2、CSS3 多列中列与列间的间隙
调整多列中列与列间的间隙的时候我们就可以用column-gap,它就指定了列与列间的间隙,我们再也不需要专门给div设定浮动,还要设置它们之间的margin,有了它就可以像Swiper那样一个属性,轻轻松松设置间距,效果如上图那样,分成三列,并设置间距。代码如下:
3、CSS3 列边框
还有更好玩的多列属性。上面我们设置完了列与列的间距,这呢我们用column-rule-style属性来设置列与列之间的边框样式,我们不再用图片或者更多的CSS去写,它就可以了,例如:
这样我们就可以将文本分成3列,间距40px,列边框的样式为虚线,此外,我们还设定边框的宽度(column-rule-width),颜色(column-rule-color),并且像CSS中那样去用(column-rule)简写我们的多列边框,例如:
达到的效果如下:
顺便给大家说一下CSS有哪些边框样式,直接上图啦:
4、指定元素跨越多少列
就是给被指定的某个元素应该跨多少列,这时候我们就要用到(column-span)这个属性了,这个属性有两个值,一个是1,一个是all,这就是说如果有个文本我们把它分成3列,我们就可以指定它的标题占1列或者所有的列。如下图:
5、指定列的宽度
我们不仅可以把文本分成几列,还可以专门指定被分成列的宽度,这时候我们可以用column-width属性,来指定列的宽度。例如:
限制在一个块元素显示的文本的行数,我们就可以用-webkit-line-clamp,由于它是一个不规范的属性,他没有出现在CSS规范草案中,不过并不代表我们不能用,为了使用它达到我们想要的效果,我们得结合一些属性,例如:
这样一来,我们就可以让我们的文本显示6行,其余的用省略号代替。
此外,我们也可以显示一行文本,多余的用省略号代替,例如:
writing-mode 属性定义了文本在水平或垂直方向上如何排版,这样我们就可以省去大量的CSS代码,一个属性就可以搞定,writing-mode有5个值,分别是:
我们可以让元素以任何形式放置在我们的表格当中,例如下图:
这也是我们常用的知识,弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。容器内包含了一个或多个弹性子元素。
正常情况下,我们只需设置display:flex即可,弹性子元素元素就会在一行内显示(弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行),从左到右。
当然我们也可以修改排列方式,例如我们将body设置direction 属性为 rtl (right-to-left),弹性子元素的排列方式也会改变,页面布局也跟着改变,所有的子元素会靠近左侧排列,并且以倒序排列。
1、flex-direction
flex-direction 属性指定了弹性子元素在父容器中的位置。其属性值:
例如我们用row-reverse将子元素倒序排列:
2、justify-content 属性
内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐。这样我们就可以更好地排列我们的文本了,它呢有5个值,例如:
效果如下:
平时space-between用的最多,它会让弹性子元素均匀的分布在弹性盒子呢,而且是响应式的排列。
CSS3多媒体查询可以针对不同的媒体类型(包括显示器、便携设备、电视机,等等)设置不同的样式规则。但是这些多媒体类型在很多设备上支持还不够友好。目前很多针对苹果手机,Android 手机,平板等设备都会使用到多媒体查询。像别的媒体,例如打印机、屏幕阅读器等的兼容性还不是很好。
使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
@media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的。
当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。
比如说我们常用的响应式页面,我们想在媒体宽度最大500px显示图片,其余媒体不显示,我们就可以这样写:
在使用本篇讲解的CSS3属性时,一定要注意其浏览器的兼容性,因为很多的CSS3属性都不支持主流的低版本的浏览器,基本IE10以上、FireFox3.5以上、Chrome21.0以上、Safari4.0以上才能很好地兼容,希望小伙伴们注意。
本期的CSS3到这里就全部讲解完了,也希望小伙伴们学的快乐,马上也到了寒假过年的好日子,希望大家不要忘记学习哈!
接下来的我们会很长一段时间去学习JavaScript,如果你想学,关注我,我将带领大家一起去学习。
*请认真填写需求信息,我们会在24小时内与您取得联系。