精华内容
下载资源
问答
  • 在分子图的距离矩阵基础上,构建... H、I极性指数 P 与酯类化合物的相对保留时间tb显著相关,相关系数大于0.999,计算与实验很好吻合,平均误差仅为0.017。 所建模型较好地揭示了酯类化合物相对保留时间的变化规律。
  • 页面刷新时保留input键入

    千次阅读 2010-02-04 13:31:19
    一般来说,页面刷新时不保留input键入的需要比较多,但是也有例外,譬如咱这次就遇上需要保留input键入。 在firefox这不是问题,ie的刷新机制导致刷新页面时不会从浏览器缓存中读取,所以我们需要解决的问题...

    转自:http://unbounder.iteye.com/blog/459183

    一般来说,页面刷新时不保留input键入值的需要比较多,但是也有例外,譬如咱这次就遇上需要保留input键入值。
    在firefox这不是问题,ie的刷新机制导致刷新页面时不会从浏览器缓存中读取,所以我们需要解决的问题也集中在ie下。

    询问google老师,有以下方法

    <meta name="save" content="history">
    <style type="text/css">
    	input{behavior:url(#default#savehistory)};
     </style>


    大致思路是利用行为标签(behavior),在访问页面时默认读取缓存,这里主要是针对ie,firefox默认设置就是如此.
    关于behavior标签的使用方法,相见css手册

    引用
    语法:

    behavior : url (url) | url (#objID ) | url (#default#behaviorName)

    参数:

    url (url) : 使用绝对或相对地址指定DHTML行为组件(.htc)
    url (#objID ) : 用二进制实现DHTML行为,#objID为object对象指定的id特性
    url (#default#behaviorName) : IE的默认行为。由behaviorName指定

    说明:

    设置或检索对象的DHTML行为。
    多个行为之间用空格隔开。
    关于DHTML行为,请参阅我所编写的其他教程。
    对应的脚本特性为behavior。请参阅我编写的其他书目。

    示例:

    div { behavior: url(fly.htc) url(shy.htc); }


    如此这般操作后,使用浏览器的刷新按钮在ie下已经能保存input键入值了。
    -----------------------------------------------------
    不过,我们的工作还没有结束,因为在实际使用中,需要通过js来刷新页面。如果使用window.location.reload();这样的常用刷新操作,ie下依旧会重新加载而不读取浏览器缓存。

    那么新的问题出现了,如何才能在用js刷新页面的情况下仍然保存上一次input的键入值呢?
    为此,我们更换了刷新方法,使用了execCommand方法
    不过值得注意的是execCommand方法并不适应于firefox,我们在js中使用try/catch来解决这个问题,代码如下:

    		try{
                //for IE
    			document.execCommand('Refresh',false,0);
            }catch (BorwerSupportException){
                //for firefox
    			window.location.reload();
            }


    测试通过,成功!

    展开全文
  • 01数据列缺失的4种处理方法数据缺失分为两种:一种是行记录的缺失,这种情况又称数据记录丢失;另一种是数据列的缺失,即由于各种原因导致的数据记录中某些列的空缺。不同的...

    640?wx_fmt=jpeg


    01 

    数据列缺失的4种处理方法


    数据缺失分为两种:一种是行记录的缺失,这种情况又称数据记录丢失;另一种是数据列值的缺失,即由于各种原因导致的数据记录中某些列的值空缺。

    不同的数据存储和环境中对于缺失值的表示结果也不同,例如,数据库中是Null,Python返回对象是None,Pandas或Numpy中是NaN。

    在极少数情况下,部分缺失值也会使用空字符串来代替,但空字符串绝对不同于缺失值。从对象的实体来看,空字符串是有实体的,实体为字符串类型;而缺失值其实是没有实体的,即没有数据类型。

    丢失的数据记录通常无法找回,这里重点讨论数据列类型缺失值的处理思路。通常有4种思路。

    1. 丢弃

    这种方法简单明了,直接删除带有缺失值的行记录(整行删除)或者列字段(整列删除),减少缺失数据记录对总体数据的影响。但丢弃意味着会消减数据特征,以下任何一种场景都不宜采用该方法。

    • 数据集总体中存在大量的数据记录不完整情况且比例较大,例如超过10%,删除这些带有缺失值的记录意味着会损失过多有用信息。

    • 带有缺失值的数据记录大量存在着明显的数据分布规律或特征,例如带有缺失值的数据记录的目标标签(即分类中的Label变量)主要集中于某一类或几类,如果删除这些数据记录将使对应分类的数据样本丢失大量特征信息,导致模型过拟合或分类不准确。

    2. 补全

    相对丢弃而言,补全是更加常用的缺失值处理方式。通过一定的方法将缺失的数据补上,从而形成完整的数据记录,对于后续的数据处理、分析和建模至关重要。常用的补全方法如下。

    • 统计法:对于数值型的数据,使用均值、加权均值、中位数等方法补足;对于分类型数据,使用类别众数最多的值补足。

    • 模型法:更多时候我们会基于已有的其他字段,将缺失字段作为目标变量进行预测,从而得到最为可能的补全值。如果带有缺失值的列是数值变量,采用回归模型补全;如果是分类变量,则采用分类模型补全。

    • 专家补全:对于少量且具有重要意义的数据记录,专家补足也是非常重要的一种途径。

    • 其他方法:例如随机法、特殊值法、多重填补等。

    640?wx_fmt=jpeg

    3. 真值转换法

    在某些情况下,我们可能无法得知缺失值的分布规律,并且无法对于缺失值采用上述任何一种补全方法做处理;或者我们认为数据缺失也是一种规律,不应该轻易对缺失值随意处理,那么还有一种缺失值处理思路—真值转换。

    该思路的根本观点是,我们承认缺失值的存在,并且把数据缺失也作为数据分布规律的一部分,将变量的实际值和缺失值都作为输入维度参与后续数据处理和模型计算中。但是变量的实际值可以作为变量值参与模型计算,而缺失值通常无法参与运算,因此需要对缺失值进行真值转换。

    以用户性别字段为例,很多数据库集都无法对会员的性别进行补足,但又舍不得将其丢弃掉,那么我们将选择将其中的值,包括男、女、未知从一个变量的多个值分布状态转换为多个变量的真值分布状态。

    • 转换前:性别(值域:男、女、未知)。

    • 转换后:性别_男(值域1或0)、性别_女(值域1或0)、性别_未知(值域1或0)。

    然后将这3列新的字段作为输入维度替换原来的1个字段参与后续模型计算。

    4. 不处理

    在数据预处理阶段,对于具有缺失值的数据记录不做任何处理,也是一种思路。这种思路主要看后期的数据分析和建模应用,很多模型对于缺失值有容忍度或灵活的处理方法,因此在预处理阶段可以不做处理。

    常见的能够自动处理缺失值的模型包括:KNN、决策树和随机森林、神经网络和朴素贝叶斯、DBSCAN(基于密度的带有噪声的空间聚类)等。这些模型对于缺失值的处理思路是:

    • 忽略,缺失值不参与距离计算,例如KNN。

    • 将缺失值作为分布的一种状态,并参与到建模过程,例如各种决策树及其变体。

    • 不基于距离做计算,因此基于值的距离做计算本身的影响就消除了,例如DBSCAN。

    在数据建模前的数据归约阶段,有一种归约的思路是降维,降维中有一种直接选择特征的方法。假如我们通过一定方法确定带有缺失值(无论缺少字段的值缺失数量有多少)的字段对于模型的影响非常小,那么我们根本就不需要对缺失值进行处理。

    因此,后期建模时的字段或特征的重要性判断也是决定是否处理字段缺失值的重要参考因素之一。

    对于缺失值的处理思路是先通过一定方法找到缺失值,接着分析缺失值在整体样本中的分布占比,以及缺失值是否具有显著的无规律分布特征,然后考虑后续要使用的模型中是否能满足缺失值的自动处理,最后决定采用哪种缺失值处理方法。

    在选择处理方法时,注意投入的时间、精力和产出价值,毕竟,处理缺失值只是整个数据工作的冰山一角而已。

    在数据采集时,可在采集端针对各个字段设置一个默认值。以MySQL为例,在设计数据库表时,可通过default指定每个字段的默认值,该值必须是常数。

    在这种情况下,假如原本数据采集时没有采集到数据,字段的值应该为Null,虽然由于在建立库表时设置了默认值会导致“缺失值”看起来非常正常,但本质上还是缺失的。对于这类数据需要尤其注意。

    640?wx_fmt=jpeg


    02 

    不要轻易抛弃异常数据


    异常数据是数据分布的常态,处于特定分布区域或范围之外的数据通常会被定义为异常或“噪音”。产生数据“噪音”的原因很多,例如业务运营操作、数据采集问题、数据同步问题等。

    对异常数据进行处理前,需要先辨别出到底哪些是真正的数据异常。从数据异常的状态看分为两种:

    • 一种是“伪异常”,这些异常是由于业务特定运营动作产生的,其实是正常反映业务状态,而不是数据本身的异常规律。

    • 一种是“真异常”,这些异常并不是由于特定的业务动作引起的,而是客观地反映了数据本身分布异常的分布个案。

    大多数数据挖掘或数据工作中,异常值都会在数据的预处理过程中被认为是噪音而剔除,以避免其对总体数据评估和分析挖掘的影响。但在以下几种情况下,我们无须对异常值做抛弃处理。

    1. 异常值正常反映了业务运营结果

    该场景是由业务部门的特定动作导致的数据分布异常,如果抛弃异常值将导致无法正确反馈业务结果。

    例如:公司的A商品正常情况下日销量为1000台左右。由于昨日举行优惠促销活动导致总销量达到10000台,由于后端库存备货不足导致今日销量又下降到100台。在这种情况下,10000台和100台都正确地反映了业务运营的结果,而非数据异常案例。

    2. 异常检测模型

    异常检测模型是针对整体样本中的异常数据进行分析和挖掘,以便找到其中的异常个案和规律,这种数据应用围绕异常值展开,因此异常值不能做抛弃处理。

    异常检测模型常用于客户异常识别、信用卡欺诈、贷款审批识别、药物变异识别、恶劣气象预测、网络入侵检测、流量作弊检测等。在这种情况下,异常数据本身是目标数据,如果被处理掉将损失关键信息。

    3. 包容异常值的数据建模

    如果数据算法和模型对异常值不敏感,那么即使不处理异常值也不会对模型本身造成负面影响。例如在决策树中,异常值本身就可以作为一种分裂节点。

    提示:除了抛弃和保留,还有一种思路可对异常值进行处理,例如使用其他统计量、预测量进行替换。但这种方法不推荐使用,原因是这会将其中的关键分布特征消除,从而改变原始数据集的分布规律。

    640?wx_fmt=jpeg


    03 

    数据重复就需要去重吗


    数据集中的重复值包括以下两种情况:

    • 数据值完全相同的多条数据记录。这是最常见的数据重复情况。

    • 数据主体相同但匹配到的唯一属性值不同。这种情况多见于数据仓库中的变化维度表,同一个事实表的主体会匹配同一个属性的多个值。

    去重是重复值处理的主要方法,主要目的是保留能显示特征的唯一数据记录。但当遇到以下几种情况时,请慎重(不建议)执行数据去重。

    1. 重复的记录用于分析演变规律

    以变化维度表为例。例如在商品类别的维度表中,每个商品对应的同1个类别的值应该是唯一的,例如苹果iPhone7属于个人电子消费品,这样才能将所有商品分配到唯一类别属性值中。但当所有商品类别的值重构或升级时(大多数情况下随着公司的发展都会这么做),原有的商品可能被分配了类别中的不同值。如下表所示展示了这种变化。

    640?wx_fmt=png

    此时,我们在数据中使用Full join做跨重构时间点的类别匹配时,会发现苹果iPhone7会同时匹配到个人电子消费品和手机数码2条记录。对于这种情况,需要根据具体业务需求处理。

    • 如果跟业务沟通,两条数据需要做整合,那么需要确定一个整合字段用来涵盖2条记录。其实就是将2条数据再次映射到一个类别主体中。

    • 如果跟业务沟通,需要同时保存两条数据,那么此时不能做任何处理。后续的具体处理根据建模需求而定。

    • 相关知识点:变化维度表

    变化维度表是数据仓库中的概念。维度表类似于匹配表,用来存储静态的维度、属性等数据,而这些数据一般都不会改变。但是变与不变是一个相对的概念,随着企业的不断发展,很多时候维度也会随着发生变化。因此在某个时间内的维度是不变的,而从整体来看维度也是变化的。

    对于维度的变化,有3种方式进行处理:

    • 直接覆盖原有值。这种情况下每个唯一ID就只对应一个属性值,这样做虽然简单粗暴也容易实现,但是无法保留历史信息。

    • 添加新的维度行。此时同一个ID会得到两条匹配记录。

    • 增加新的属性列。此时不会新增数据行记录,只是在原有的记录中新增一列用于标记不同时期的值。

    具体到企业内使用哪种方式,通常由数据库管理员根据实际情况来决定。

    注意:真正的变化维度表或维度表不会以中文做主键,通常都会使用数字或字符串类作为唯一关联ID,本节的示例仅做说明之用。

    2. 重复的记录用于样本不均衡处理

    在开展分类数据建模工作时,样本不均衡是影响分类模型效果的关键因素之一。解决分类方法的一种方法是对少数样本类别做简单过采样,通过随机过采样,采取简单复制样本的策略来增加少数类样本。

    经过这种处理方式后,也会在数据记录中产生相同记录的多条数据。此时,我们不能对其中的重复值执行去重操作。

    3. 重复的记录用于检测业务规则问题

    对于以分析应用为主的数据集而言,存在重复记录不会直接影响实际运营,毕竟数据集主要是用来做分析的。

    但对于事务型的数据而言,重复数据可能意味着重大运营规则问题,尤其当这些重复值出现在与企业经营中与金钱相关的业务场景时,例如:重复的订单、重复的充值、重复的预约项、重复的出库申请等。

    这些重复的数据记录通常是由于数据采集、存储、验证和审核机制的不完善等问题导致的,会直接反映到前台生产和运营系统。以重复订单为例:

    • 假如前台的提交订单功能不做唯一性约束,那么在一次订单中重复点击提交订单按钮,就会触发多次重复提交订单的申请记录,如果该操作审批通过后,会联动带动运营后端的商品分拣、出库、送货,如果用户接收重复商品则会导致重大损失;

    • 如果用户退货则会增加反向订单,并影响物流、配送和仓储相关的各个运营环节,导致运营资源无端消耗、商品损耗增加、仓储物流成本增加等问题。

    因此,这些问题必须在前期数据采集和存储时就通过一定机制解决和避免。如果确实产生了此类问题,那么数据工作者或运营工作者可以基于这些重复值来发现规则漏洞,并配合相关部门,最大限度地降低由此而带来的运营风险。

    本文摘编自《Python数据分析与数据化运营》(第2版),经出版方授权发布。

    640?wx_fmt=jpeg

    《Python数据分析与数据化运营》(第2版)

    点击封面或者扫码二维码查看详情

    640?wx_fmt=png


    关于作者:

    宋天龙,大数据技术专家,触脉咨询合伙人兼副总裁,前Webtrekk中国区技术和咨询负责人(Webtrekk,德国的在线数据分析服务提供商)。擅长数据挖掘、建模、分析与运营,精通端到端数据价值场景设计、业务需求转换、数据结构梳理、数据建模与学习以及数据工程交付。

    推荐理由:

    (1)作者是有10余年数据分析与数据化运营经验的资深大数据专家,在国内外企业都工作过,经验丰富。

    (2)作者善于总结和写作,乐于分享,撰写数据分析类 畅销书3部。

    (3)本书与同类书大的不同在于,并不只有纯粹的关于数据分析技术和工具的讲解,而且还与数据使用场景深度结合,在业务上真正可指导落地。

    (4)新版除了Python更新到了新版外,具体内容上做了大幅度的补充和优化,整体篇幅超过30%,详见前言。

    (5)本书作者提供微信、邮箱等,可通过实时和离线两种方式及时为读者在线传道、受业、解惑。

    扫码一键购买

    640?wx_fmt=png


    640?wx_fmt=gif

    码书商店是CSDN专为我们的用户建立的一个商店,这里提供大量的技术书籍,除了书籍我们也提供生活类的相关产品,如耳机、键盘等,或者你们如果有需求也可以联系码书商店的客服或者在公众号下留言你们需要的产品,我们尽量满足大家需求哦。

    作为码书商店的运营人员,诚邀你们进入我们的“CSDN码书福利群”,群里会不定时的给大家赠书书籍、优惠券等,有书籍推荐或者物流方面信息也可群里咨询~目前群已满100人,需要加群的请扫下方二维码添加微信,拉你入群哦~

    640?wx_fmt=png


    640?wx_fmt=gif

    展开全文
  • CSS相对定位绝对定位详解

    万次阅读 多人点赞 2017-08-25 10:33:03
    相对定位绝对定位是通过position属性来控制的,position属性的为下面几种: 描述 absolute 使元素绝对定位,相对于static定位以外的最近的一个祖先元素进行定位。元素的位置通过 “left”, “top”, ...

    相对定位和绝对定位,不改变元素的大小形状,只改变元素的位置。

    相对定位和绝对定位是通过position属性来控制的,position属性的值为下面几种:

    描述
    absolute使元素绝对定位,相对于static定位以外的最近的一个祖先元素进行定位。
    元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
    relative使元素相对定位,相对于自己的正常位置进行定位。
    fixed使元素绝对定位,相对于浏览器窗口进行定位。
    元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
    static默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
    inherit规定应该从父元素继承 position 属性的值。

    注:对于html的标准流(文档流)和浏览器怎么渲染各个DOM元素等底层知识,我不怎么清楚,下面的理解方式不一定正确,仅供参考。

    相对定位

    相对定位的参考点,是它自己定位(移动)之前的位置,不是相对于父节点,也不是相对于平级节点。

    分析

    我是分为两步来理解相对定位的,如下:
    1、先不考虑position定位,按标准流将各个元素显示出来。
    2、以元素自身的位置作为参考点,进行左右、上下移动进行定位。

    如下图,最外面的虚线大框代表body,里面有3个div,不考虑定位时显示如下:
    这里写图片描述
    然后在上图的基础上考虑相对定位,如让div2向下20px,向右移动30px,这里div2移动的参考对象就是它自己没移动前的位置,如B点是相对于A点,类似于数学里的平面坐标系。如下图:
    这里写图片描述

    注:div2相对定位移动不影响div1和div3,由于div2并没有脱离标准流(文档流),所以div2 原来的位置还保留着,div3并不会向上移动占用div2原来的位置,而且,相对定位移动之后,有可能会导致元素重叠,下面的验证例子会说明这一点。

    验证

    我们同样用3个div来说明,首先不考虑position相对定位,正常显示,代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试相对定位和绝对定位</title>
        <style>
            div{
                width:50px;
                height: 50px;
            }
            .d1{
                background-color: blue;
            }
            .d2{
                background-color: aqua;
            }
            .d3{
                background-color: brown;
            }
        </style>
    </head>
    <body>
    <div class="d1">div1</div>
    <div class="d2">div2</div>
    <div class="d3">div3</div>
    </body>
    </html>

    正常情况下,3个div依次块状显示,运行效果如下:
    这里写图片描述

    现在我们给div2加上相对定位,增加样式position: relative;top: 20px;left: 30px;

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试相对定位和绝对定位</title>
        <style>
            div{
                width:50px;
                height: 50px;
            }
            .d1{
                background-color: blue;
            }
            .d2{
                background-color: aqua;
            }
            .d3{
                background-color: brown;
            }
        </style>
    </head>
    <body>
    <div class="d1">div1</div>
    <div class="d2" style="position: relative;top: 20px;left: 30px;">div2</div>
    <div class="d3">div3</div>
    </body>
    </html>

    效果图如下:
    这里写图片描述

    通过比较两幅效果图,总结如下:

    1. 相对定位的元素的参考对象是自己,即自己原来的所在位置(自己原来左上角作为坐标系的原点)。
    2. 相对定位移动后,之前的位置依旧保留,其他元素并不会占用。
    3. 相对定位后,有可能导致元素重叠。

    绝对定位

    描述

    绝对定位的参考对象就不是自己了,而是最近的已设置了position的祖先元素,并且position不是static,而是absolute或者relative。首先看它的父元素是否设置了position为absolute或者relative,如果有就按父元素的左上角作为参考点,如果没有则再找祖父元素、曾祖父元素、高祖父元素,如果都没有就以页面文档的初始位置作为参考点。

    绝对定位的元素是脱离标准流(文档流)的,即直接在标准流中删除,所以元素原来的位置会被占用。

    由于绝对定位元素脱离的标准流,所以元素可以覆盖标准流中元素,也可以通过z-index设置层叠次序,z-index值越大越靠上层。如果把页面比作高楼,正常的元素都是在1层,绝对定位的元素在2层及以上,z-index越大所在层月高,越难被其他元素覆盖。

    测试示例

    1、没有绝对定位的情况,代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试相对定位和绝对定位</title>
        <style>
            .d1, .d2, .d3 {
                width: 50px;
                height: 50px;
            }
    
            .p1 {
                width: 450px;
                height: 450px;
                border: 1px solid red;
            }
    
            .p2 {
                width: 380px;
                height: 380px;
                border: 1px solid blue;
            }
    
            .p3 {
                width: 300px;
                height: 300px;
                border: 1px solid black;
            }
    
            .d1 {
                background-color: blue;
            }
    
            .d2 {
                background-color: aqua;
            }
    
            .d3 {
                background-color: brown;
            }
        </style>
    </head>
    <body>
    <div class="p1">曾祖父<br><br>
        <div class="p2">祖父<br><br>
            <div class="p3"><br><br>
                <div class="d1">div1</div>
                <div class="d2">div2</div>
                <div class="d3">div3</div>
            </div>
        </div>
    </div>
    
    </body>
    </html>

    运行效果:
    这里写图片描述

    通过上面可以看出,在没有使用绝对定位时,元素都是按标准流(文档流)正常显示的。

    2、让div2绝对定位,它的所有祖先元素都没有设置position为absolute或者relative,代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试相对定位和绝对定位</title>
        <style>
            .d1, .d2, .d3 {
                width: 50px;
                height: 50px;
            }
    
            .p1 {
                width: 450px;
                height: 450px;
                border: 1px solid red;
            }
    
            .p2 {
                width: 380px;
                height: 380px;
                border: 1px solid blue;
            }
    
            .p3 {
                width: 300px;
                height: 300px;
                border: 1px solid black;
            }
    
            .d1 {
                background-color: blue;
            }
    
            .d2 {
                background-color: aqua;
            }
    
            .d3 {
                background-color: brown;
            }
        </style>
    </head>
    <body>
    <div class="p1"  style="margin-top: 25px;margin-left: 10px">曾祖父<br><br>
        <div class="p2">祖父<br><br>
            <div class="p3"><br><br>
                <div class="d1">div1</div>
                <div class="d2" style="position: absolute;top: 20px;left: 30px">div2</div>
                <div class="d3">div3</div>
            </div>
        </div>
    </div>
    
    </body>
    </html>

    运行效果:
    这里写图片描述

    可以看出,div2所有祖先元素都没设置position时,div2是把页面文档的初始位置作为原点参考对象进行移动的,不是根据父元素、祖父元素,也不是根据曾祖父元素。

    3、祖先元素中有设置position为absolute或者relative时,则把最近的一个作为参考对象。

    示例1:祖父元素设置了position为absolute,父元素设置position为static
    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试相对定位和绝对定位</title>
        <style>
            .d1, .d2, .d3 {
                width: 50px;
                height: 50px;
            }
    
            .p1 {
                width: 450px;
                height: 450px;
                border: 1px solid red;
            }
    
            .p2 {
                width: 380px;
                height: 380px;
                border: 1px solid blue;
            }
    
            .p3 {
                width: 300px;
                height: 300px;
                border: 1px solid black;
            }
    
            .d1 {
                background-color: blue;
            }
    
            .d2 {
                background-color: aqua;
            }
    
            .d3 {
                background-color: brown;
            }
        </style>
    </head>
    <body>
    <div class="p1">曾祖父<br><br>
        <div class="p2" style="position: absolute;top: 60px;left: 60px">祖父<br><br>
            <div class="p3" style="position: static;top: 20px;left: 30px"><br><br>
                <div class="d1">div1</div>
                <div class="d2" style="position: absolute;top: 20px;left: 30px">div2</div>
                <div class="d3">div3</div>
            </div>
        </div>
    </div>
    
    </body>
    </html>

    运行效果如下:
    这里写图片描述

    通过上图可以看出,div2的父元素设置了position: static,祖父元素设置了position: absolute,div2是以祖父元素为参考的,即相对于祖父元素进行移动定位。

    示例2:div2曾祖父设置了position: absolute,祖父元素设置了position: relative,父元素设置了position: static

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试相对定位和绝对定位</title>
        <style>
            .d1, .d2, .d3 {
                width: 50px;
                height: 50px;
            }
    
            .p1 {
                width: 450px;
                height: 450px;
                border: 1px solid red;
            }
    
            .p2 {
                width: 380px;
                height: 380px;
                border: 1px solid blue;
            }
    
            .p3 {
                width: 300px;
                height: 300px;
                border: 1px solid black;
            }
    
            .d1 {
                background-color: blue;
            }
    
            .d2 {
                background-color: aqua;
            }
    
            .d3 {
                background-color: brown;
            }
        </style>
    </head>
    <body>
    <div class="p1" style="position: absolute;top: 40px;left: 100px">曾祖父<br><br>
        <div class="p2" style="position: relative;top: 20px;left: 60px">祖父<br><br>
            <div class="p3" style="position: static;top: 20px;left: 30px"><br><br>
                <div class="d1">div1</div>
                <div class="d2" style="position: absolute;top: 20px;left: 30px">div2</div>
                <div class="d3">div3</div>
            </div>
        </div>
    </div>
    
    </body>
    </html>

    运行效果如下:
    这里写图片描述

    可以看出,div2多个祖先元素设置了position: absolute或者position: relative,是以最近的一个祖先元素为准。

    综合上面的示例,总结如下:

    1. 绝对定位元素脱离正常流(文档流),所以元素原来的位置会被其他元素占用。
    2. 因为绝对定位元素脱离了正常流,和相对元素一样也会有覆盖其他元素的情况。
    3. 绝对定位元素是相对于祖先元素,和相对定位不同,相对定位是相对于元素自己原来的位置。
    4. 绝对定位元素的祖先元素是设置的position: static,该祖先元素并不作为参考物。
    5. 绝对定位元素的祖先元素有多个都设置了position: absoluteposition: relative ,那么是以最近的一个祖先元素作为参考物,即相对于最近的那一个祖先元素进行移动定位。
    展开全文
  • 1、相对定位的元素不会脱离文档流,占用文档流的空间,Left;... TopBottom属性与margin属性混合使用,偏移方向相同累加,方向相反,margin属性无效。 3、绝对定位的元素以最近的定位祖先元素为参照物。第一,不

    css定位中绝对定位和相对定位的区别

    ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器

    1、相对定位的元素不会脱离文档流,占用文档流的空间,Left; Right; Top和Bottom属性与margin属性混合使用会产生累加效果。

    2、绝对定位的元素脱离文档流,偏移不影响文档流中的其它元素,Left; Right; Top和Bottom属性与margin属性混合使用,偏移方向相同值累加,方向相反,margin属性值无效。

    3、绝对定位的元素以最近的定位祖先元素为参照物。

    第一,不管是什么,既然要定位,就需要有一个参照物
    相对定位的参照物是本身。

    绝对定位的参照物就是父级元素,当父级元素中不存在相对定位,那么它的参照物就是body

    第二,产生的影响
    相对定位,设置后,原来的位置始终保留着
    绝对定位,设置后,原来的位置会被后面的内容占据

    展开全文
  • 异常检测

    千次阅读 2018-03-21 15:44:15
    在数据集中,异常(Outlier or Anomaly)作为不寻常的表征点,无利于后面算法对于数据集中模式的挖掘,甚至会极大地影响性能,或者直接用于一些异常检测的场景,如欺诈检测、安全检测等.异常检测是数据清洗里非常...
  • 深入理解矩阵的特征值和特征向量

    万次阅读 2019-09-16 16:29:40
    原 【数学基础】矩阵的特征向量、特征及其含义 ...
  • 1.交并比IoU ...可以简单理解为:检测结果(detection result)与真实(Ground Truth)的交集并上它们的并集。公式可以简单记为: 2. 非极大抑制NMS(Non-maximum suppression) NMS顾名思义就是抑...
  • 隨机森:林是已故统计学家Leo Breiman提出的,gradient boosted tree—样,它的基模型是决策树。在介绍RF时,Breiman就提出两种解决缺失的方去 (Random forests - classification description): 方法1(快速简草...
  • 相对跳转绝对跳转 为什么要有相对跳转绝对跳转? BLDR跳转范围 为什么两者的跳转范围不同?如何区分?
  • 思路:一拆为二然后合并 public ListNode partition(ListNode head, int x) { ListNode dummy1 = new ListNode(-1); ListNode dummy2 = new ListNode(-1); ListNode p1 = dummy1; ListNode p...
  • java中,数学计算保留两位小数

    千次阅读 2015-12-23 09:41:56
    java保留两位小数问题: 方式一: 四舍五入 double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 保留两位小数
  • 绝对定位和相对定位的研究

    千次阅读 2018-05-02 18:10:58
    绝对定位和相对定位的研究 现象: 研究jsp页面元素的绝对定位、相对定位、静态定位 定位属性: 首先看下 position 属性的设置 static :无特殊定位 relative:相对定位 absolute:绝对定位 一:静态定位...
  • java中的传递引用传递

    万次阅读 热门讨论 2011-04-22 12:51:00
    java中的传递引用传递,
  • 介绍图像处理中基于积分图像实现的边缘保留滤波算法。局部均方差噪声降低算法可以用于图像美化类APP应用上的实用算法, 也是图像积分图应用的第二篇,还有更多应用算法介绍。请关照本博客。
  • 使用java.math.BigDecimal工具类实现 java保留两位小数问题: 方式一(四舍五入形式保留两位小数,注意模式ROUND_HALF_UP): 四舍五入 double f = 111231.5585; BigDecimal...
  • JAVA保留小数点

    万次阅读 2010-06-08 10:22:00
    java保留两位小数问题: 方式一: 四舍五入  double f = 111231.5585;  BigDecimal b = new BigDecimal(f);  double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP)....
  • 如何理解矩阵特征

    万次阅读 2016-05-19 12:31:15
    李浩 ,FPA蓝色 / EE。...特征在很多领域应该都有自己的用途,它的物理意义到了本科高年级或者研究生阶段涉及到具体问题的时候就容易理解了,刚学线性代数的话,确实抽象。 ——————————————————
  • CSS中相对定位

    千次阅读 2013-01-09 14:30:12
    相对定位是按照元素自身所在的位置,使用边偏移属性重新定义元素的显示位置,使用相对定位的元素依然是文档中的元素,元素的显示位置 元素所在文档中其他元素相互关联。  在确定相对定位元素位置的时候,首先要...
  • HTTP 返回状态详解

    千次阅读 2013-09-07 06:49:39
    当用户点击或搜索引擎向网站服务器发出浏览请求...2、Http/1.1 301 Moved Permanently 301重定向永久重定向 对搜索引擎相对友好的跳转方式,当网站更换域名时可将原域名作301永久重定向到新域名,原域名权重可传递
  • 本文主要描述XHTML中相对定位绝对定位各自的本质、用法、区别两者之间的关系。以及使用CSS的Left、Right、Top、Bottom属性(偏移属性)Margin属性(外边距)对定位块级元素进行布局的方法。 CSS网页布局...
  • 矩阵的特征分解

    千次阅读 2020-07-06 11:22:43
    特征分解 ...可以观察到,调整后的在同一根直线上,只是的长度相对的长度变长了。此时,我们就称是A的特征向量,而的长度是的长度的λ倍,λ就是特征。 从而,特征与特征向量的定义式就是这样的:
  • Guava缓存CacheBuilder介绍

    万次阅读 2015-08-05 10:56:26
    缓存项被移除时,RemovalListener会获取移除通知[RemovalNotification],其中包含移除原因[RemovalCause]、键和值。 请注意,RemovalListener抛出的任何异常都会在记录到日志后被丢弃[swallowed]。 ...
  • position属性(面试必考)

    千次阅读 2017-08-14 21:05:47
    它主要提供static, relative, absolutefixed四个。 static为默认值,指示元素出现在正常的文档流中;相对定位(relative):相对于该元素在文档流中的正常位置进行偏移定位,原占位仍保留。绝
  • 关于奇异以及奇异分解SVD的思考

    千次阅读 多人点赞 2017-02-13 18:33:09
    前言:  SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手。SVD的原理不难,只要有基本的线性...回顾特征值和特征向量 我们首先回
  • RelativeLayout(相对布局)的分析

    万次阅读 2016-03-17 20:33:58
    相对布局是按照组件之间的相对位置来经行布局, 例如某个组件在另一个组件的上,下,左,右边。 语法格式:  属性列表 简单的写一下 xmlns:android="http://schemas.android.com/apk/res/android" ...
  • div理解绝对定位和相对定位布局

    千次阅读 2012-06-12 20:37:30
    本文主要描述XHTML中相对定位绝对定位各自的本质、用法、区别两者之间的关系。以及使用CSS的Left、Right、Top、Bottom属性(偏移属性)Margin属性(外边距)对定位块级元素进行布局的方法。(本文的示例,请看...
  • 交换两个变量的,不使用第三个变量的四种法方

    千次阅读 多人点赞 2019-09-13 18:42:27
    交换两个变量的,不使用第三个变量的四种法方 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下: int a,b; a=10; b=15; int t; t=a; a=b; b=t; 这种算法易于理解,特别适合...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 216,350
精华内容 86,540
关键字:

保留值和相对保留值