一提到 CSS 的 display:none,大家应该都很熟悉,如果需要将某 HTML 元素隐藏不显示的话,很多人都会使用它。也许你会问,这个还有必要再讲吗?且听我慢慢讲来。
现如今,很多网站都会使用 Tab, Slide 动画等这些常见的手段让用户能有好的使用体验,而且有时为了页面的简洁,我们也经常会用到 display:none 来达到隐藏元素的目的,再者很多鼎鼎大名的 JavaScript 库也会使用它,例如 jQuery。
既然大家都用 display:none,那么还有什么好谈的呢?
当然,合理合法的使用 display:none 对用户及 SEO 而言是正常的,搜索引擎也会去理会。可是如果非法的使用它们,借此想提高 SEO 的效果,就是非法的,而且搜索引擎也会对其进行惩罚。请看下面的例子:
<script language="JavaScript" type="text/javascript">
var o='d'+'i'+'v';
var a='style=\'disp';
var b='lay:';
var c='none\'';
document.write( "<"+o+a+b+c+">" );
</script>
类似这样的写法,大家可能也见过,有的连<script>标签也进行拆分连接,例如: "<scr" + "ipt>",这样做的目的只有一个,就是“欺骗”:希望通过在页面上插入关键字或链接来提高 SEO 效果但是又不想让用户看到。无论是 SEO “欺骗”也好,还是出于其它目的进行“欺骗”也好,俗话说,出来混迟早是要还的。对于 SEO 而言,搜索引擎现在已经足够智能,对于上面这样简单的“欺骗”会进行严厉的处罚,所以任何侥幸的心理请不要有,因为随着算法的改进,各种黑帽(SEO 欺骗技术)早晚都会被发现的,而且一定会被重罚的。
刚才提到的是 display:none 对 SEO 的影响,还有一个影响可能是很多人都不知道的,那就是对“屏幕阅读器(screen reader)”的影响。
使用 iOS 设备的人现在是越来越多了,不知道其中的“VoiceOver”功能你是否知道,是否了解,是否使用过。出于人性化的考虑,很多移动设备包括 PC 几乎都有“辅助功能”,帮助身体不便的人来使用,其中“屏幕阅读器(screen reader)”就是帮助视力有障碍的人来读出屏幕上的内容的。
如果一个网页中的内容使用了 display:none,那就意味着,你同时拒绝了为用户显示及“屏幕阅读器(screen reader)”。然而这样的结果可能是你不想得到的,那么我们该怎么办呢?怎么才能既不显示在页面上,又对“屏幕阅读器(screen reader)”有效呢?请看如下的代码:
.visuallyhidden {
position: absolute;
width: 1px; /* Setting this to 0 make it invisible for VoiceOver */
height: 1px; /* Setting this to 0 make it invisible for VoiceOver */
padding: 0;
margin: -1px;
border: 0;
clip: rect(0 0 0 0);
overflow: hidden;
}
上面这段代码出自 HTML5BoilerPlate project(参见下文引用地址),你可以管它叫“可见的隐藏”,虽然用户看不到内容,但是“屏幕阅读器(screen reader)”却可以看见它。
你可能又会问了,“如果我使用了类似于 jQuery 这样的库怎么办?比如说,jQuery 的 slide 动画会动态的在元素上生成 display:none,那些的话,你说的这个办法不就不管用了吗?”
解决的办法当然是有的,请如下面的示例:
var $button = $('#myButton'),
$text = $('#myText'),
visible = true;
$button.click(function(){
if ( visible ) {
$text.slideUp('fast',function(){
$text.addClass('hide')
.slideDown(0);
});
} else {
$text.slideUp(0,function(){
$text.removeClass('hide')
.slideDown('fast');
});
}
visible = ! visible;
});
示例地址:
http://jsfiddle.net/chriscoyier/zgtfA/1/
示例讲解:当 visible 为真时,此时元素的状态是可见的,首先执行动画 slideUp 将元素隐藏(此时元素上有 display:none),动画结束时,添加“可见的隐藏” CSS,让元素不可见,然后再立刻执行 slideDown 动画,持续时间为 0(即无动画过程),此时就移除了元素上的 display:none,而且元素依然是不可见的(因为有“可见的隐藏” CSS)。
当 visible 为假时,此时元素的状态是不可见的,首先执行 slideUp 动画将元素隐藏(此时元素上有 display:none),持续时间为 0(即无动画过程),动画结束后,移除“可见的隐藏” CSS,此时元素依然是隐藏的,因为有 display:none,之后再执行 slideDown 动画,显示元素内容。
总结:综上所述,若不考虑“屏幕阅读器(screen reader)”,合理合法的使用 display:none 是隐藏元素最简单的做法,而且还不用担心会被搜索引擎惩罚(因为不是黑帽),不会影响 SEO 效果。若你的网站支持移动设置访问,那么最好考虑到用户很可能是使用“屏幕阅读器(screen reader)”,因此你可以采用“可见的隐藏”方法来隐藏元素。
引用
分享到:
相关推荐
这是因为CSS解析器在遇到空字符串时会将其解释为默认值,但不同类型的元素默认的 `display` 值可能不同。对于大多数元素来说,这通常意味着 `inline` 或 `block`,但并不是所有情况都是这样。因此,当你尝试将 `...
2. 使用display: none可能会对网站的SEO产生负面影响,因为搜索引擎蜘蛛通常不会索引这些内容,可以考虑使用其他方法来隐藏内容。 3. 当display: none通过样式文件或标签设置时,使用JavaScript来恢复元素的显示可能...
前言: 在使用css隐藏栏位或物件的时候, 常常会使用到display:none和visibility:hidden这两个属性, 但却很容易分不清楚这两个的差别, 或是乾脆同时使用两种属性,来确保物件一定被隐藏, 其实我们可以很简单的来...
隐藏网页元素通常涉及到两个重要的CSS属性:display和visibility。本文将详细探讨CSS元素隐藏的原理以及display:none和visibility:hidden这两个属性的不同应用及其影响。 首先,CSS元素隐藏的原理主要包括两个方面...
对于某一单元行需要显示时,使用CSS display:block属性,不需要显示时使用display:none属性,在IE浏览器中显示正常,没有任何问题,但是当用Firefox浏览时却出现了布局错乱的问题,这是为什么呢? 本文向大家介绍...
在网页设计和开发中,CSS(层叠样式表)是用于控制页面布局和元素外观的重要工具。`display:none` 和 `visibility:hidden` 是两个经常用来隐藏网页元素的关键属性,但它们在实现效果和应用场景上有所不同。 `...
在CSS中,隐藏元素的方法主要有三种:`display:none`、`visibility:hidden`和`opacity:0`,它们各自有不同的特点和适用场景。 1. `display:none`:此属性会使元素完全从页面布局中消失,不占据任何空间。元素及其...
总之,`visibility`和`display`在CSS中扮演着不同的角色,`visibility`关注的是元素的可见状态,而`display`则涉及元素在布局中的存在状态。了解它们的差异并合理运用,可以帮助我们更好地控制网页的显示效果和用户...
`display` 属性是CSS中不可或缺的一部分,它对网页布局起着至关重要的作用。通过`display`属性,我们可以控制HTML元素的显示方式,从而实现各种复杂的布局效果。下面我们将深入探讨`display`属性的原理、用途及其...
CSS 样式应用优先级详解 CSS 样式应用优先级是指在CSS样式规则应用时的顺序和优先级。该优先级规则决定了哪些样式规则将被应用于HTML元素。下面是CSS样式应用优先级的详细解释: 1. 重要声明(!important) 重要...
1. **无障碍访问**:为选项卡添加`tabindex="0"`和`aria-selected`属性,确保屏幕阅读器用户也能正常操作。 2. **响应式设计**:根据屏幕尺寸调整选项卡的布局,如在移动设备上垂直堆叠选项卡。 3. **内存效率**:...
@media only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio:...
总的来说,纯CSS的`:hover`伪类实现多级下拉菜单是一种实用且高效的方法,它不需要JavaScript,对SEO友好,且易于理解和维护。通过调整CSS选择器和属性,你可以根据项目需求定制出各种风格和交互的下拉菜单。
隐藏的内容对于屏幕阅读器用户或者辅助技术用户来说是不可见的,因此在隐藏内容时要考虑到这部分用户的需求。 总的来说,理解和掌握这些CSS隐藏技巧对于创建响应式、高性能的网页至关重要。通过合理运用,我们可以...
Display None 是 CSS 中的一个属性值,它的意思是将元素设置为不可见,并且将元素从文档流中移除,不占用实际空间,但对后台来说真切存在,可以通过 JavaScript 等方式来获取被隐藏的元素。 Display None 的使用...
在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间;有的可以响应点击,有的不能响应点击。一个一个看。
例如,如果`菜单1`还有子菜单,我们可以这样添加CSS: ```css .menu .submenu ul { display: none; position: absolute; top: 0; left: 100%; } .menu .submenu li:hover > ul { display: block; } ``` 通过...
在CSS中,`display`和`visibility`两个属性都是用于控制元素在页面上的显示状态,但它们的作用方式和效果有着显著的区别。 `display`属性主要影响元素的布局和类型。它有多种不同的值: 1. `block`:将元素转换为...
使用`display:none`属性可以默认隐藏下拉菜单,只在用户悬停到父级菜单项时显示。 ```css .dropdown-content { display: none; } ``` 2. **显示下拉菜单**: 当鼠标悬停在`.dropdown`上时,通过改变`...