H5&CSS基础 —— (053)JS中DOM元素的绝对坐标
»
(001)免费的https证书
(002)关于栏目
(003)浏览器的可见区域
(004)为什么ReactJs
(005)禁止手机端缩放
(006)H5中的em
(007)页面的空格宽度
(008)H5特殊字符
(009)H5限定输入
(010)H5字体
(011)nginx重定向配置
(012)文本缩进
(013)flex布局
(014)渐变色边框
(015)常用DOM操作
(016)Media Query
(017)CSS选择器
(018)CSS隔行变色
(019)fetch
(020)JS操作属性
(021)scroll div
(022)JS for循环
(023)禁止文本被选中
(024)float控制精度输出
(025)Ionic全屏
(026)SVG圆
(027)SVG椭圆
(028)SVG椭圆弧
(029)SVG椭圆扇区
(030)使用WebAssembly
(031)JS操作单复选框
(032)SVG贝塞尔曲线
(033)threejs材质
(034)发光图片样式
(035)页面动画制作要点
(036)CSS渐变色字体
(037)SVG矩形
(038)开发能力换取报酬
(039)关闭输入框的浏览器默认样式
(040)粒子动画喷射器尾部
(041)禁止桌面端缩放JS
(042)桌面全屏网页CSS
(043)自缩放等宽高比div显示图片
(044)文本两端对齐样式
(045)单行ellipsis
(046)多行ellipsis
(047)字体变形样式
(048)去掉a标签的默认样式
(049)中文字符:全角空格
(050)DIV层叠DIV
(051)JS中计算1rem的像素值
(052)JS操作DOM父节点、相邻节点
(053)JS中DOM元素的绝对坐标
(054)ToolTips Div
(055)JS中的元素宽高
(056)Nginx播放流媒体设置
(057)滚动条样式
(058)JS操作数组的常用方法
(059)SVG填充样式定义
(060)SVG画线样式定义
(061)SVG画直线
(062)CSS图片背景的拼接
(063)WebSocket
(064)JS计算DPI的方法
(065)GIF透明或者不透明
(066)Nginx解决CORS跨域问题
(067)从JSONP的跨域请求数据讲起
(068)Div内内容水平垂直居中
(069)CSS背景图片保持长宽比
CSS帧动画

    JS中DOM元素的绝对坐标:
    var floatDIv=document.getElementById("floatDiv");
    var rightPosition=floatDiv.offsetLeft+floatDiv.offsetWidth;
    console.log(rightPosition);
    
    offset***是初始加载时的值,offset***的坐标值为相对于窗口左上角的绝对坐标,单位为像素,offset***的值是不随scrollTo操作而改变的值。
    offset属性只读,要改变offset***的值,只有一种方法,那就是通过style的left来修改offset,也就是:element.style.left=left+"px";来改变。
    所以,计算scrollTo的距离,只要计算初始加载时的位置差即可,不需要去通过style修改offset的值。
    
    滚动DIV效果JS实现:

    function scrollToALeftDiv(leftArrowDiv){
        var parentDiv= leftArrowDiv.nextElementSibling;
        console.log("scrollALeftDiv", parentDiv);
        if(!parentDiv){
            console.log("不存在滑动窗口");
        }else{
            for(var i = parentDiv.children.length - 1; i >=0 ; i--){
                var childDiv= parentDiv.children[i];
                if(childDiv.offsetLeft - parentDiv.offsetLeft < parentDiv.scrollLeft - 10){
                    var distance= childDiv.offsetLeft - parentDiv.offsetLeft;
                    parentDiv.scrollTo({left: distance, behavior: "smooth"})
                    break;
                }
            }
        }
    }
    
    function scrollToARightDiv(rightArrowDiv){
        var parentDiv= rightArrowDiv.previousElementSibling;
        console.log("scrollToARightDiv", parentDiv);
        if(!parentDiv){
            console.log("不存在滑动窗口");
        }else{
            for(var i = 0; i < parentDiv.children.length; i++){
                var childDiv= parentDiv.children[i];
                if(childDiv.offsetLeft + childDiv.offsetWidth - (parentDiv.offsetLeft + parentDiv.offsetWidth) > parentDiv.scrollLeft + 10){
                    var distance= childDiv.offsetLeft+childDiv.offsetWidth - (parentDiv.offsetLeft+parentDiv.offsetWidth);
                    parentDiv.scrollTo({left: distance, behavior: "smooth"})
                    break;
                }
            }
        }
    }
    
    其中,overflow:hidden的DIV的平滑滑动操作过程为scrollableDiv.scrollTo({left: originalPositionOffsetDelta, behavior: "smooth"});
    而获取当前scroll值的方法为:scrollableDiv.scrollLeft;
                                
    ————www.v-signon.com学习者共勉
                        
«
——张人杰·www.v-signon.com学习者共勉
返回上一页
工业和信息化部备案管理系统网站 京ICP备19038994号-2
主办单位:个人 English