十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
如果是在回调里置顶DIV的话(比如点击事件),可以用scrollIntoView。
成都创新互联专注于东宝企业网站建设,响应式网站开发,购物商城网站建设。东宝网站建设公司,为东宝等地区提供建站服务。全流程按需制作,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
scrollIntoView如果不想吸顶 可以加个before伪类设置高度
CSS3滚动置顶目前有两种解决方案:
第一种(主流):transform: translate3d(x,y,z)
第二种(未来):position: sticky;top:xxx;
假设需求:
需求一:滚动过程中A ,C区域不吸顶,B区域吸顶
VUE框架推荐直接使用vantUI插件,indexbar索引栏。
vantUI原理用的是transform。
以上面图片为例大致讲解:
1.transform对JS的能力要求高些,页面加载完毕后,给每个B区域对应的DIV设置translate3d的Y轴值,值为B对应div离顶部的高度。
2.当开始滚动起来后,Y轴值为原来值减去滚动条滚动距离值
3.当Y轴值小于0的时候,锁死为0,就自动吸顶了
4.当待置顶DIV的translate3d Y轴值小于DIV的高度时,已置顶DIV的Y轴值开始变为负数,这样会有一个顶出的效果
5.已置顶DIV被待置顶DIV顶出一定距离(一般两倍DIV高度),取消translate3d属性,
6.回滚反向计算即可
需求二:滚动过程中 C不吸顶,B吸顶,A一直吸顶 B在A下面
这个需求vantUI(v2.9.3)目前解决不了,采用translate太复杂,决定采用CSS3新属性position: sticky。
如果是2018年使用该属性兼容性还是个问题,但来到2020年下半年,对大部分生产环境都不是问题。博主测试的IOS11和安卓小米 华为 都支持该属性。
博主的建议是:如果是公司APP内嵌H5页面或者微信打开可以使用该属性,如果纯H5页面 ,建议translate.
position: sticky;字面意思就是粘性定位。
可以粘顶部也可以粘底部 右侧 左侧。
所以除了position: sticky;还要给一个定位值,比如top:0px或者right:0px就可以了 非常简单。
比如直接给Bdiv设置下面样式就行
实际使用要注意下面几点:
1.如果想兼容IOS12 IOS11 必须带position: -webkit-sticky;而且要在样式表里写,不能写在style里。
2.容器相关。只有要移除容器范畴才起作用。比如body的height不要设置100%,height:100%表示所有元素一直在屏幕范围
position 属性指定了元素的定位类型。它有五个属性,分别是
static:HTML 元素的默认值,即没有定位,遵循正常的文档流对象。静态定位的元素不会受到 top, bottom, left, right影响。
relative:相对定位元素的定位是相对其正常位置。
fixed:元素的位置相对于浏览器窗口是固定位置。注:即使窗口是滚动的也不会移动
absolute:绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于html。注:定位使元素的位置与文档流无关,因此不占据空间。定位的元素和其他元素重叠。
sticky:基于用户的滚动位置来定位。粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。
目前直接这样引用使用。
希望我的回答可以帮到你,有什么不懂可以追问。
CSS:Cascading Style sheet层叠样式表或级联样式表,是一种样式设置规则,用于控制页面的外观的样式。使用CSS能够实现内容与样式的分离、方便团队开发,有助于样式复用、便于网站后期维护,实现页面的精准控制、让页面更精美。
CSS代码书写方式分为三种:嵌入式、外链式、行内式。
嵌入式:将CSS代码嵌入到HTML文件中,嵌入式是通过HTML中的
外链式:外链式是指单独写一个以.css为扩展名的文件,然后在标签中使用标签,将这个css文件链接到html文件中。(注意:css文件不能单独的运行,它必须要依赖于HTML文件)
语法规则:
link rel="stylesheet" href="css文件的地址"
行内式:将CSS代码书写在HTML标签的style属性中。style是一个通用属性,每一个标签里面都拥有这个属性!
语法格式:
标签名 style=”属性:值;属性:值;”
初学CSS,你需要掌握这些使用技巧:
1、负边距的效果。注意左右负边距表现并不一致,左为负时是左移,右为负时是左拉。
2、BFC应用汇总:阻止外边距合并(margin collapsing)、消除浮动的影响。
3、flex布局:当flex-grow之和小于1时,只能按比例分配部分剩余空间,而不是全部。
4、并不是给元素设置display:block就会自动填充父元素宽度。input 就是个例外,其默认宽度取决于size特性的值。
5、对定位和固定定位时,同时设置left和right等同于隐式地设置宽度。
6、position:sticky,粘性定位要起作用需要设置最后滞留位置。chrome有bug,firefox完美。
7、要使模态框背景透明,用rgba是一种简单方式。
8、display:table实现多列等高布局。css实现定宽高比的原理:padding的百分比是相对于其包含块的宽度,而不是高度。
9、background-position百分比的正确理解方式:图片自身的百分比位置与容器同样的百分比位置重合。
10、background-repeat新属性值:round和space。前者表示凑个整,后者表示留点缝。
11、background-attachment指定背景如何附着在容器上,注意其属性值local和fixed的使用。
12、可以使用outline来描边,不占地方,它甚至可以在里面。
13、浏览器默认显示tab为8个空格,tab-size可以指定空格长度。
14、图片在指定尺寸后,可以设置object-fit为contain或cover保持比例。
15、设置宽度为fill-available,可以使inline-block像block那样填充整个空间。
position 属性指定了元素的定位类型。
语法,position:static -默认值,没有定位,遵循正常的文档流对象;
position:fixed -元素的位置相对于浏览器窗口是固定位置;
position:relative -相对定位元素的定位是相对其正常位置;
position:absolute --绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于html;
position:sticky -粘性定位,基于用户的滚动位置来定位。它的行为就像position:relative;
而当页面滚动超出目标区域时,它的表现就像position:fixed;,它会固定在目标位置。
示例
style
.dianqi{
position:fixed;
}
其实用postion: fixed并不是很方便,用position: sticky会更容易达到我们的目的。
只需要给头部设置:
即可。
将position设置为sticky,那么头部组件还会占有着上方空间,所以下面的body中的组件可以不用设置预留top。如果是用的fixed属性,那么body下面的组件也要算出导航栏的长度,再设置top属性,这样一来就麻烦了很多