资讯专栏INFORMATION COLUMN

前端碎语(6)

Youngs / 2919人阅读

摘要:和属性数值对应的是元素的内容加所占据的视觉面积,有滚动条时还要加上滚动条,不含。和仍要分有没有滚动,有滚动时指的是整个页面内容的大小没滚动时在下指视口的大小和下则是和一样。与属性在下都和原来一样指整个元素的可视宽高。

光标效果不见了?

在页面里,屏幕上光标的样式我们可以用css的"cursor"属性进行定义。一般来讲,只要光标hover到指定的元素上面其样式就会按我们指定的进行显示,但是如果我们指定的元素被其他元素“遮住了”呢?来看看下面这个demo:

demo

可以看到,虽然我们给div1自定义了光标样式,但在被div2盖住的那部分,我们预设的效果就没有了,或者说这个效果是不能“穿透”div2的。这也就提示我们,当我们的一些交互需要我们自定义光标样式的时候(比如拖动),一定要注意元素间的堆叠顺序,否则很有可能会出现你移动到某个位置上时你的光标效果突然消失的现象。

至于css本身是如何决定元素间堆叠顺序的,这还是个比较复杂的问题,具体地可以看看张鑫旭这篇文章。

js里几个获取元素宽高属性的比较

offsetWidthclientWidthscrollWidthoffsetHeightclientHeightscrollHeight这几个属性的特点一直傻傻分不清,这次就好好把他们弄清楚吧。先看demo:

demo

先分析一下div1和待滚动条的div2两个普通元素的情况,在不同浏览器下(不考虑IE8-)运行上面这个demo后,在控制台可以看到各浏览器的结果都是一样的:

可以得出结论:

offsetWidthoffsetHeight属性:数值对应的是元素的可视宽高,含元素本身宽高、padding、(有滚动条时)滚动条、border。

clientHeightclientWidth属性:数值对应的是元素的内容加padding所占据的视觉面积,有滚动条时还要加上滚动条,不含border。

scrollHeightscrollWidth属性:由div1的结果可见,没有滚动条时执行结果和clientHeightclientWidth一样。有滚动条的情况则复杂一点,上面这个例子中div2的内容足够大、能产生滚动,故此时结果为content的大小;而如果把content这个div调小、直到不能产生滚动时结果应该是和clientHeightclientWidth一样的。

上面的结论只是针对页面普通元素,如果使用这几个属性的是整个页面(html元素,这里用document.documentElement访问),那输出的情况就复杂了,没有明显的规律,找的不同的资料说法也不太相同、并不能解释我测试的结果。所以这里只讲一些我测试之后比较固定的结果,仅供参考:

首先clientHeightclientWidth的行为普通元素的不太一样,在所有浏览器里基本指的都是页面视口的大小。

scrollHeightscrollWidth仍要分有没有滚动,有滚动时指的是整个页面内容的大小;没滚动时在chrome下指视口的大小、IE和FF下则是和offsetWidthoffsetHeight一样。

offsetWidthoffsetHeight属性在chrome、FF、IE11下都和原来一样指整个元素的可视宽高。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78816.html

相关文章

  • 前端碎语6

    摘要:和属性数值对应的是元素的内容加所占据的视觉面积,有滚动条时还要加上滚动条,不含。和仍要分有没有滚动,有滚动时指的是整个页面内容的大小没滚动时在下指视口的大小和下则是和一样。与属性在下都和原来一样指整个元素的可视宽高。 光标效果不见了? 在页面里,屏幕上光标的样式我们可以用css的cursor属性进行定义。一般来讲,只要光标hover到指定的元素上面其样式就会按我们指定的进行显示,但是如...

    edagarli 评论0 收藏0
  • 前端碎语(2)

    摘要:和并不是一个标准的属性,才是,所以火狐长久以来都不支持,同时也不支持。 这个系列保持开坑不埋的状态已经过去三个月了,而在这几个月中我才算第一次认真地深入理解js。虽然期间笔记是记了不少,但写博文又不应是简单的复制粘贴,还是得保证有讨论价值、有干货的。而我面对的现实是:一来基础差导致识别和捞出有讨论价值的干货得自身功夫练到一定阶段,二来又因为记的杂乱且缺乏日常整理,整理一下就是拖一下,再...

    FrancisSoung 评论0 收藏0
  • 前端碎语(4)

    摘要:键盘事件与文本框变化的过程键盘事件最基本的应用场合是控制文本框元素,而我们要讨论的,就是几个键盘事件发生的时机与文本输入的过程的关系。可以看到,除了外,事件并不会输出刚按下的字符,说明他们在文本框变化之前发生而在之后发生。 键盘事件与文本框变化的过程 键盘事件最基本的应用场合是控制文本框元素,而我们要讨论的,就是几个键盘事件:keydown、keypress、keyup、textInp...

    zhiwei 评论0 收藏0
  • 前端碎语(5)

    摘要:禁止用户选择文字在一些应用场合,我们不希望用户能够选择文字。在下使用透明效果虽然已经停止对的技术支持了,然而做前端的还得被它恶心一段时间,有些兼容性的问题是我们仍要面对滴。但是,前端界被虐了这么多年,解决问题的方法总是有的。 禁止用户选择文字 在一些应用场合,我们不希望用户能够选择文字。比如在拖动交互中,如果用户能选择元素内部的文字,也就意味着能拖动它们,这样就会干扰对元素的拖动、影响...

    xiaoqibTn 评论0 收藏0
  • 前端碎语(5)

    摘要:禁止用户选择文字在一些应用场合,我们不希望用户能够选择文字。在下使用透明效果虽然已经停止对的技术支持了,然而做前端的还得被它恶心一段时间,有些兼容性的问题是我们仍要面对滴。但是,前端界被虐了这么多年,解决问题的方法总是有的。 禁止用户选择文字 在一些应用场合,我们不希望用户能够选择文字。比如在拖动交互中,如果用户能选择元素内部的文字,也就意味着能拖动它们,这样就会干扰对元素的拖动、影响...

    xialong 评论0 收藏0

发表评论

0条评论

Youngs

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<