HTML定位(滚动条、元素,视口)定位

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <p onclick=getElementRect(this)>你好</p>
        <p onclick=getElementRect(this)>你好</p>
        <p onclick=getElementRect(this)>你好</p>
        <table border="1" cellspacing="" cellpadding="">
            <tr><th onclick=getElementRect(this)>Header</th></tr>
            <tr><td>Data</td></tr>
            <tr><td>Data</td></tr>
        </table>
    </body>
</html>
<script>
    /**
     * 滚动条的位置
     * @param {Object} w
     */
    function getScrollOffsets(w){
        w = w || window;
        //除了IE 8以及更早的版本以外,其他浏览器都支持
        if(w.pageXOffset != null){
            return {x:w.pageXOffset,y:w.pageYOffset};
        }
        /**
         * document.compatMode用来判断当前浏览器采用的渲染方式。
         * BackCompat:标准兼容模式关闭。
         * CSS1Compat:标准兼容模式开启。
         * 当document.compatMode等于BackCompat时,浏览器客户区宽度是document.body.clientWidth;滚动条的位置document.body.scrollLeft
         * 当document.compatMode等于CSS1Compat时,浏览器客户区宽度是document.documentElement.clientWidth;滚动条的位置 document.documentElement.scrollLeft
         */
        var d = w.document;
        if(document.compatMode == "CSS1Compat"){
            return {x:d.documentElement.scrollLeft,y:d.documentElement.scrollTop};
        }else{
            return {x:d.body.scrollLeft,y:d.body.scrollTop};
        }
    }

    //作为一个对象的w和h属性返回视口的尺寸
    function getViewportSize(w){
        //使用指定的窗口, 如果不带参数则使用当前窗口
        w = w || window;

        //除了IE8及更早的版本以外,其他浏览器都能用
        if(w.innerWidth != null){
            return {w: w.innerWidth, h: w.innerHeight};
        }

        //对标准模式下的IE(或任意浏览器)
        var d = w.document;
        if(document.compatMode == "CSS1Compat"){
            return {w: d.documentElement.clientWidth, h: d.documentElement.clientHeight};
        }else{
            return {w: d.body.clientWidth, h: d.body.clientHeight};
        }
    }

    /**
     * 这个方法返回元素在视口坐标中的位置。为了转换为甚至用户滚动浏览器窗口以后任然有效的文档坐标,需要加上滚动偏移量:
     * getBoundingClientRect()方法。该方法是在IE5中引入的,而现在当前的所有浏览器都实现了。它不需要参数,返回left、right、top、bottom属性的对象。
     * @param {Object} e
     */
    function getElementRect(e){
        var box = e.getBoundingClientRect();
        var offsets = getScrollOffsets();
        var x = box.left + offsets.x;
        var y = box.top + offsets.y;
        var w = box.width || box.right - box.left;
        var h = box.height || box.bottom - box.top;
        console.log({x:x, y:y ,w:w, h:h})
        return {x:x, y:y ,w:w, h:h};
    }
</script>
时间: 2024-10-08 20:00:25

HTML定位(滚动条、元素,视口)定位的相关文章

HTML_定位网页元素

一.position属性 意指:盒子的位置. 四个属性: 1.static:默认值,没有定位,元素按照标准文档流进行布局. 2.relative:相对定位,使用相对定位的盒子位置以标准文档流进行的排办方式为基础,然后使盒子相对于他原本的位置偏移指定的距离.相对定位的盒子仍然在标准文档流中,其后的盒子仍以标准文档流当是对待它. 3.absolute:绝对定位,盒子的位置以包含他的盒子为基准进行偏移.绝对定位的盒子从标准文档流中脱离.这意味着他们对其后的其他盒子的定位没有影响,对于其他的盒子来说就好

让一个元素相对于父元素固定定位

之前在项目中,遇到了一个场景,需要实现相对于父元素的fixed定位:在父元素内拖动滚动条时,"fixed"定位的元素不能滑动,在外层拖动滚动条时,父元素及父元素内的所有元素跟着一起滑动.但是position: fixed是相对于窗口进行的定位,不能直接实现我们需要的效果. 我们想让特定子元素相对于父元素"fixed"定位,也就是说,剩余的子元素不定位.那我们可以分开来想,如果添加一个祖先元素assistor,有两个祖先元素,一个用于辅助定位,一个用于包裹不定位的内容

第八章 定位网页元素

一.position属性定位网页元素 1.static :默认值,没有定位.按照标准文档流的方式提现出来 2.relative:相对定位,相对于自身元素原来的位置进行定位 <style type="text/css">     .div01{      position: relative;      top: -20px;      left: 20px;     } </style> 注意:当top的值为正值时向下移动       当为负值时向上移动 当le

定位网页元素

一.定位--position属性 1.static:默认值 没有定位--以标准文档流方式显示 2.relative:相对定位--相对自身原来的位置进行偏移(top left right bottom) 3.absolute:绝对定位 4.fixed:固定定位 二.相对定位元素的规律 1.设置相对定位的盒子会相对它原来的位置,通过指定偏移到达新的位置 2.设置相对定位的盒子仍在标准文档流中,它对父级盒子和相邻盒子都没有影响 三.绝对定位-- absolute属性 1.偏移位置:left right

WebDriver API元素的定位

一.以下截图为用FireBug定位的用火狐(Firefox)浏览器打开的百度首页,下面所讲述的八种定位方法,就是以该截图中的百度输入框为例子. ①.FireBug是Firefox浏览器下的开发类插件,通过该插件可以查看HTML.CSS.Javascript控制台.网络状况监视器.Cookies,具体内容如下面截图中的工具栏. 通过它可以方便的查看页面上的元素,根据元素路径或是标签或是属性进行定位. FireBug安装方式:Firefox浏览器的菜单栏中选中tools(工具)-->add-ons

元素的定位

一.元素的position属性分为:static,relative,absolute,fixed 四种.二.position:static 这是默认属性,也就是元素在正常文档流中的位置,这个时候如果给元素设置left right top以及z-index等属性是没有效果的.三.position:relative 相对定位,这个元素会被浮起来,覆盖它下面的其它元素,如果设置left top值,会以它自身为参考点,同时它原来在文档中的位置还保留,其它元素不能去占据.我们可以通过z-index来调整上

1 background(复合属性)与font(复合属性) 2 行内块的间距问题 3 行内元素的margin 4 清除浮动 5定位的元素的层级 6 Border-radius: 边框半径

1 background(复合属性)与font(复合属性): background: 颜色  图片的链接  是否平铺  背景位置 是否滚动.(可以随意调动或省略) Font: 粗度 字体风格 字体大小/行高 字体样式 字体大小和样式不可省略 2 行内块的间距问题 行内块元素相邻时,行内块元素之间会有几像素的间距,只有通过浮动解决. 3 行内元素的margin 行内元素的上下外边距不起作用,左右起作用. 4 清除浮动 给父盒子设置一个高度     Clear: both      Overflow

定位一组元素,点击一组中第几个按钮

def xunhuan2(self): lie = self.driver.find_elements_by_css_selector('li.fp14') liebiao = len(lie) for lie in range(liebiao): self.driver.find_elements_by_css_selector('li.fp14')[lie].click() sleep(3) self.driver.back() sleep(3) 1.定义循环函数2.定义变量,使用定位一组元

用XPath精确定位节点元素&amp;selenium使用Xpath定位之完整篇

在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句 xsl:template match = ""和模板应用语句xsl:apply-templates select = "" 中,用引号括起来的部分必须能够精确地定位节点.具体的定位方法则在XPath中给出. 之所以要在XSL中引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件管理路 径:通过文件管理路径,可以按照一定的规则查找到所需要的文件

Selenium-一组元素的定位

一组元素的定位: 有时候我们可能需要定位一组元素,比如一组checkbox,这时候要实现的思路大概为: 先把一组元素识别出来,然后定位你需要的元素 下面是查找多个元素(这些方法将返回一个列表): 方法:find_elements_by_xxxx find_elements_by_name find_elements_by_xpath find_elements_by_link_text find_elements_by_partial_link_text find_elements_by_tag