总结:

  1. clientLeft = border-left
  2. 如果有滚动条,clientLeft = border-left+ 滚动条宽度
  3. clientWidth = content-width(内容实占宽度,如果有滚动条,则不应计算在内)+padding

clientLeft和clientTop

1. clientLeft表示内容区域的左上角相对于整个元素左上角的位置(不包括padding、margin),也就是一个元素的左边框(border-left)的宽度。
2. 特别的:如果元素的文本方向是从右向左(RTL, right-to-left),并且由于内容溢出导致左边出现了一个垂直滚动条,则该属性包括滚动条的宽度。
3. clientTop的计算方法和clientLeft相似。

clientWidth和clientHeight

Element.clientWidth 属性表示元素的内部宽度,以像素计。该属性包括内边距(padding),但不包括垂直滚动条(如果有)、边框(border)和外边距(margin)该属性值会被四舍五入为一个整数。如果你需要一个小数值,可使用element.getBoundingClientRect()

实验 [clientLeft + clientWidth]

<body><div class="parent">  <div class="child">我们我们我们</div></div>
</body>

*{margin:0;padding:0;
}
.parent{border:2px solid red;width:100px;height:100px;padding:10px;position:relative;
}
.child{position:absolute;width:50px;height:50px;top:10px;left:20px;border:6px solid green;margin:1px;
}

let p = document.createElement('p')
window.console.log = (content)=>{p.innerHTML += content + '<br>'
}
document.body.append(p)
let child = document.querySelector('.child')
console.log('child.clientTop = ' + child.clientTop)
console.log('child.clientLeft = '+ child.clientLeft)
console.log('child.clientWidth = ' + child.clientWidth)

1. clientWidth

这时div.childwidth设置为50像素,没有padding值,所以clientWidth的值为50。如果这时添加padding呢?

  padding:2px;

这时候50像素的内容宽度加上左右两像素的paddingclientWidth就变成54了。如果说有垂直方向上的滚动条呢?

  overflow-y:scroll;

37怎么来的呢?来看看div.child的盒子模型

这时div.child的内容宽度为33,再加上左右padding值,就等于37.这就是clientWidth不包含垂直滚动条的意思。

2. clientLeft

可以看到clientLeft的值为6,这也就是border的值。 如果说div.child的排列方向为从右到左,并且存在垂直滚动条呢?

  direction:rtl;  overflow-y:scroll;

来看看这时打印的结果。

这时clientLeft的值为23像素。本来border的值为6,那么剩下的17像素是什么呢?应该就是滚动条的宽度了。如果猜想没有,此时内容区域的宽度应该只有 50 - 17 = 33 。来看看div.child的盒子模型。

div.child的盒子模型

猜想正确,得到验证。果然此时div.child的内容去宽度只有33像素了。因为其他的17像素被滚动条占据了。

android垂直排列元素_元素的视图属性之client相关推荐

  1. android垂直排列元素_Android弹性布局(FlexboxLayout)

    Flexbox简介 flexbox是属于CSS的一种布局方案,可以简单.完整.响应式的实现各种页面布局.谷歌将其引入以提高复杂布局的能力. 源码传送门 Flexbox的布局和相关名称 上图模型中包含以 ...

  2. android 垂直的开关_安卓布局:如何让这两个按钮水平垂直居中

    代码: 代码: android:id="@+id/linearLayout1" android:layout_width="wrap_content" andr ...

  3. App控件定位:Android 控件介绍及元素定位方法

    本文将分享Android相关基础知识和Android APP控件定位工具的使用方法. 目录 Android基础知识 Android布局 Android四大组件 1.activity 2.Service ...

  4. HTML05——行内块级元素_文档流_font属性_盒子模型_练习

    目录 行内块级元素 文档流 font属性 文本段落 文字属性 盒子模型 概念和属性 常见问题 块元素和行元素的相互转换 display属性 overflow属性 边框.宽度与高度 浮动float 练习 ...

  5. css变成块级元素_【CSS】块级元素

    完整的框模型(Box Model) 不同的宽度.高度.内边距和外边距相结合,就可以确定文档的布局. 大多数情况下,文档的高度和宽度由浏览器基于可用的显示区域和其他一些因素自动确定. 1.元素框的最内部 ...

  6. 列表删除前面两个元素_第015篇:List列表 - 课程二

    列表的修改. 可以看到,我只做了一个操作,就是buy[3] = '红薯'.我给出了前后对比,前面从0数位置3是生菜,我修改后该元素变更为红薯. 当然也可以一次修改多个元素. 上面程序buy[1:3] ...

  7. css变成块级元素_探讨行内元素转换为块级元素_html/css_WEB-ITnose

    行内元素和块级元素对于前端来说是一个很重要的概念.在CSS中,只有块级元素有物理属性,而元素则有三种形态: 1. 块级元素:有物理属性,width,height写值起作用,而且要占据一行. 2. 行内 ...

  8. CSS_伪元素_伪类

    版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/twilight_karl/article/details/55804090 伪类 link 未访问的链接 ...

  9. set集合判断集合中是否有无元素_集合 (Set) | 一山不容二虎的 Python 数据类型

    点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享! 前言 Hi,大家好,我是可乐, 今天 ...

最新文章

  1. Java笔试题-Listint l = new Listint()
  2. java代码,输入n多个数,求其平均值,虽有重复,但是第二次,我就乱写了
  3. css rem 大屏开发_px/em/rem的区别与应用
  4. nssl1210-质数【素数筛】
  5. C++ string s[10] 和 string s(10,‘ ‘)
  6. ansible callbacks
  7. 【译】图上的深度学习综述 五、图自编码器
  8. 宁德时代:被美国制裁、与特斯拉谈崩等系谣言 已向公安机关报案
  9. 微信一键设置“姓氏头像”,学起来!
  10. 智能优化算法:供需优化算法-附代码
  11. 网络安全等级保护云计算安全防护技术体系设计
  12. win7系统怎么用计算机,Win7系统中计算器怎么用
  13. html5自动调用js函数,从html文件中的外部js文件调用Javascript函数
  14. Linux CentOS 7修改主机名称
  15. 阿里巴巴校招内推简历筛选方案
  16. 苏宁即时通信系统改造实践
  17. 外贸沟通谈判中加分项,这些你都知道吗?
  18. Rasa 聊天机器人框架使用流程
  19. shell脚本 -d 是目录文件,那么-e,-f等说明
  20. Distilling Object Detectors with Fine-grained Feature Imitation(2019 CVPR KD)

热门文章

  1. 《Ray Tracing in One Weekend》——Chapter 12: What's next?
  2. linux shell编程小程序6,shell脚本应用小程序
  3. 爬虫项目——m3u8后缀的电影
  4. 郴州大数据产业招商会在深举行,中琛源科技签约智慧水务项目
  5. 《Python cookbook》笔记一
  6. 数据分析数据可视化(二)
  7. echarts 3d地球 背面光线太暗_国内超炫裸眼3D案例鉴赏,大家更喜欢那一个!
  8. 仓库设置ower权限_中小企业都在用的免费多仓库管理软件
  9. mysql消息订阅与发布_消息发布与订阅
  10. Linux下更改Python的软连接