博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android垂直排列元素_元素的视图属性之client
阅读量:6361 次
发布时间:2019-06-23

本文共 1775 字,大约阅读时间需要 5 分钟。

总结:

  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()

0f0b5d0a0ec70a4b900783655bc5ac26.png

实验 [clientLeft + clientWidth]

 
我们我们我们
*{
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 + '
'}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)

64c5e7fa8400b4be32f0d690c55e33b9.png

1. clientWidth

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

padding:2px;

ad20a567aaf49c52a2a4ce62db2cf1fe.png

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

overflow-y:scroll;

25916937f5db26ed777e50718de025a8.png

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

3fd8765e6432043921d745730d5ee868.png

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

2. clientLeft

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

direction:rtl;    overflow-y:scroll;

来看看这时打印的结果。

a79fdeb6cad0e6dc63998adf86951632.png

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

b050b8cd53d775d30fa0a0de18e03714.png
div.child的盒子模型

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

转载地址:http://ydima.baihongyu.com/

你可能感兴趣的文章
C语言全局变量的定义与声明
查看>>
listView下拉刷新加载数据
查看>>
传统餐饮O2O支付体系成难题
查看>>
debian安装及使用mysql
查看>>
open()打开文件失败对应的各种错误码
查看>>
dojo.hitch 原理
查看>>
Tuple类型
查看>>
通用对象池ObjectPool的一种简易设计和实现方案
查看>>
在ubuntu下利用minicom实现串口通信
查看>>
RaPC栅格化多边形裁剪之——进化0.1
查看>>
用C#开发一个WinForm版的批量图片压缩工具
查看>>
2个函数宏技巧
查看>>
Hadoop科普文—常见的45个问题解答
查看>>
Bitcoin A First Assessment
查看>>
Bootstrap 栅格系统
查看>>
PHP数据库长连接mysql_pconnect用法
查看>>
配置nginx
查看>>
java 安装配置时出现的问题
查看>>
下拉列表在编辑的时候用到的东西
查看>>
兴奋、强类型版的PHP语言 - Hack
查看>>