java visibility_[Java教程]display 与 visibility

[Java教程]display 与 visibility

0

2016-06-24 23:00:05

项目开发中经常会遇到需要显示和隐藏DOM元素。常用的两个是display,visibility属性,高级点的会用到angularJS的ng-show,ng-if指令。

W3标准对这个两个属性的解释如下:

1. display 设置元素如何显示。

2. visibility 设置元素是否可见。

```

dispaly: none|inline|block

- none: 此元素不会被显示。

- inline: 默认。此元素会被显示为内联元素,元素前后没有换行符。

- block: 此元素将显示为块级元素,此元素前后会带有换行符。

visibility: visible|hidden|collapse

- visibile: 默认。元素框是可见的。

- hidden: 元素框不可见,但仍然影响布局。

- collapse: 当在表格元素中使用时,此值可删除一行或一列,但是它不会影响表格的布局。

被行或列占据的空间会留给其他内容使用。如果此值被用在其他的元素上,

会呈现为 "hidden"。

```

两个属性都能控制元素显示和隐藏,他们之间的区别在于:

设置display : none 后,元素不再占据DOM文档流位置;

设置visibility : hidden 后,元素依旧占据DOM文档流。

我们写代码测试下:

```

use css dispaly

use css visibility

```

bc91bb04e6e9c61e24c974e4440db8f2.gif

F12 打开控制台查看元素,很明显使用了visibility:hidden的元素还是占据了DOM位置,而display:none的元素则不占据文档位置。

再测试下ng-show, ng-if

```

use ng-show directive...
use ng-if directive...

```

结果如下:

1. ng-show : 实际是使用了display:none;

2. ng-if : 实际是remove相应的 DOM 节点

扩展下,在元素不可见的情况下,能不能触发标准的事件呢?比如,在页面加载完成后,触发focus事件。

```

$(":input").parent().css({"visibility" : "visible"});//11

$(":input").focus();//12

```

这段代码功能是在页面加载后,设置鼠标焦点到input框里面;实际测试这种场景可以正常使用。

但是 11,12行调换位置后,设置鼠标焦点事件就不会生效了。

本文网址:http://www.shaoqun.com/a/234025.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值