最新公告
  • 欢迎您光临站壳网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 雪豹SEO:深切理会DOM树之clientl家属

    最近研究DOM,这是js操作的基础,不深入了解,你没法跟浏览器亲密对话。废话不多说,今天对client,offset,scroll及style宽高家族左翼深入探讨,以chrome为例,其他浏览器可能有解析上的差别。

    具体来说即:

    1.clientWidth,clientHeight,clientLeft,clientTop;

    2.offsetWidth,offsetHeight,offsetLeft,offsetTop;

    3.scrollWidth,scrollHeight,scrollLeft,scrollTop;

    4.height,width。

    clientWidth

    顾名思义,client,客户端。具体到某一个元素比如html,body或者a,p,img指的就是这个元素,而非常规理解的客户端诸如浏览器。

    html标签:

    当html各种属性为默认值时,内部是空的head及body元素,其clientWidth值即为视口宽度,比如我的电脑屏宽1366px,当缩放浏览器的时候,该值变成缩放后的宽度,而当竖直滚动条出现的时候,需减去滚动条的宽度(竖直滚动条在高度大于可视屏幕高度时出现,可能是html或其子元素撑开的)。而移动端浏览器是不支持缩放的,因此在默认情况下,这个值就是内置的视口宽度,所谓视口宽度不是硬件屏宽,而是虚拟宽度,比如iphone6为980px,实际屏宽没这么大。

    由于影响宽度的属性有width,margin,padding,border,outline。我们逐一来看,当设置html有width,margin,padding,border,outline任意一个或累加的时候,clientWidth不受影响。也即html的clientWidth只与客户端内置视口宽及用户缩放行为有关。

    如果内部元素body非默认值,而是设定width,margin,padding,border,outline任意一个或累加的时候,我们看看html的clientWidth的表现,经测试,无论设置多少不会对html的clientWidth造成影响,验证了该值只与客户端内置视口宽及用户缩放行为有关的结论。

    如果出现右侧滚动条,一般是当元素高大于浏览器可见部分高时出现,该值需要减去滚动条的宽度,即16px。

    以上测试使用的chrome浏览器,其他浏览器可能会有区别。总的一句话,html标签该值只与客户端内置视口宽及用户缩放行为有关。

    body标签:

    当body标签各种属性为默认值时,内部为空,父元素html为默认属性。其clientWidth值跟html一样,即受客户端内置视口宽及缩放行为影响,如果出现滚动条,则需减去滚动条的宽度16px,而且body默认左右各8px的margin。

    tips:body最大clientWidth为33554430px。

    而若在其父元素,子元素各项属性值保持默认的情况下,body设置以上width等5项值,会出现什么情况呢?当设置了宽,该值变为宽,当设置了padding,该值变为宽+padding,也即设置本身本身就具有了优先级,而设置另外三项则不受影响。这个宽度是不受限制的,小可到0,大可到无穷,当然这个无法验证,数值太大,浏览器会崩溃。

    而若本身保持默认值,父元素html进行5项值测试,设置宽,结果变成该宽值减去滚动条宽度16px,即便没出现滚动条也是如此。而设置其他值不受影响。也即body的clientWidth是受父元素html的宽影响的,其他值不对该值造成影响。

    若本身及父元素保持默认值,子元素变动5项值的时候,该值不受影响。

    经以上验证,body的该值只受本身的宽+padding及父元素html宽的影响,本身值更具优先级,也即一旦设置本身宽+padding,父元素的宽失效。

    p标签(block元素):

    当父元素,子元素及本身都为默认值时,该值需要减去父元素body默认的margin左右各8px,当出现滚动条还需减去滚动条的宽度。实际等同于父元素的宽,如果自身有border还需减去。

    当父子元素默认,本身设置以上5值,除本身宽+padding外,其他值不影响,也即clientWidth值等于本身宽加上本身左右padding。该结论跟body一样。

    当本身及子元素默认,父元素设置5项,该值表现跟body一样,即该值成为父元素宽度,其他四项不造成影响。

    当本身及父元素为默认,子元素设置5项,该值恢复到各项都为默认值的时候,即屏宽减去左右padding各8px。

    由此可见,block元素的clientWidth也只受本身宽+padding及父元素宽的影响,如果包括父元素往上追踪皆未设置宽度,则会一直追到根元素html的默认值,在PC是客户端可见宽,在移动端是内置视口宽。而若设置了本身宽,padding,或宽+padding,则该值即是这些值,弃用父元素及往上继承的宽度。

    video(inline-block元素):

    当父子及本身为默认时,该值为0。

    当父子为默认,本身设置5值,该值为本身宽+padding。

    当本身及子为默认值,父设置5值,该值为0,也即不受父元素宽度影响,这是跟block元素相区别的地方。

    当本身及父元素为默认值,子元素设置5值,此类情况对于自闭合标签不适用。该值恢复默认值,也即该元素内置的宽+padding。

    因此对于inline-block元素来说,其clientWidth只受本身宽+padding的影响,不受其他影响。

    a(inline元素):

    当父子及本身为默认时,该值为0。

    当父子为默认,本身设置5值,该值为0。

    当本身及子为默认,父为5值,该值为0。

    当本身及父为默认,子为5值,该值为0。

    一句话,对于inline元素来说,clientWidth这个值始终为0,即便内有文本元素也为0。

    总而言之,根元素html只受默认视口及用户行为影响;block元素,包括body及其他块clientWidth受自身宽+padding及父元素宽的影响,且以自身为优先;inline-block只受自身宽+padding影响;inline不受任何影响,始终为0。再总结下,clientWidth实际就是自身所有的宽+padding。内联元素皆无,内联块和块级元素二者之和。

    ok,按着这样一梳理,这个属性背后隐藏的东西就一目了然了,后面继续家族中其他元素的验证及解读。前几天看了网络上的几篇文章,有出入,因此决定自己一探究竟。

    SEO优化如何选取网站关键词

    我们知道,seo优化是网站推广的方式之一,其主要形式来源于网站关键词排名,什么是关键词排名这里不多说,已经聊过了。那么,这个关键词是什么样的关键词,大家

    本文最初发布于2022年7月16日 @ 下午11:20

    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    闲鱼资源网 » 雪豹SEO:深切理会DOM树之clientl家属

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    站壳网
    一个高级程序员模板开发平台

    发表评论

    别扒我,我害羞!!!