`
yhz61010
  • 浏览: 562505 次
  • 来自: -
博客专栏
63c13ecc-ef01-31cf-984e-de461c7dfde8
libgdx 游戏开发
浏览量:12273
社区版块
存档分类
最新评论

[原创] 浅谈 CSS display:none 对 SEO 及屏幕阅读器(screen reader)的影响

阅读更多
  一提到 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:none使用注意事项小结

    2. 使用display: none可能会对网站的SEO产生负面影响,因为搜索引擎蜘蛛通常不会索引这些内容,可以考虑使用其他方法来隐藏内容。 3. 当display: none通过样式文件或标签设置时,使用JavaScript来恢复元素的显示可能...

    标签设置display:none后设置diplay=“”不显示1

    这是因为CSS解析器在遇到空字符串时会将其解释为默认值,但不同类型的元素默认的 `display` 值可能不同。对于大多数元素来说,这通常意味着 `inline` 或 `block`,但并不是所有情况都是这样。因此,当你尝试将 `...

    display:none和visibility:hidden的差别比较与演示代码

    前言: 在使用css隐藏栏位或物件的时候, 常常会使用到display:none和visibility:hidden这两个属性, 但却很容易分不清楚这两个的差别, 或是乾脆同时使用两种属性,来确保物件一定被隐藏, 其实我们可以很简单的来...

    css元素隐藏原理及display:none和visibility:hidden

    隐藏网页元素通常涉及到两个重要的CSS属性:display和visibility。本文将详细探讨CSS元素隐藏的原理以及display:none和visibility:hidden这两个属性的不同应用及其影响。 首先,CSS元素隐藏的原理主要包括两个方面...

    CSS display:block在Firefox下显示布局错乱问题

    对于某一单元行需要显示时,使用CSS display:block属性,不需要显示时使用display:none属性,在IE浏览器中显示正常,没有任何问题,但是当用Firefox浏览时却出现了布局错乱的问题,这是为什么呢? 本文向大家介绍...

    CSS隐藏元素 display visibility opacity的区别.docx

    在CSS中,隐藏元素的方法主要有三种:`display:none`、`visibility:hidden`和`opacity:0`,它们各自有不同的特点和适用场景。 1. `display:none`:此属性会使元素完全从页面布局中消失,不占据任何空间。元素及其...

    HTML之CSS 布局 - display 属性

    `display` 属性是CSS中不可或缺的一部分,它对网页布局起着至关重要的作用。通过`display`属性,我们可以控制HTML元素的显示方式,从而实现各种复杂的布局效果。下面我们将深入探讨`display`属性的原理、用途及其...

    css样式应用优先级实用PPT课件.pptx

    CSS 样式应用优先级详解 CSS 样式应用优先级是指在CSS样式规则应用时的顺序和优先级。该优先级规则决定了哪些样式规则将被应用于HTML元素。下面是CSS样式应用优先级的详细解释: 1. 重要声明(!important) 重要...

    CSS:Visibility和Display属性的比较.pdf

    理解它们的区别并正确使用,可以让你在创建网页时更加灵活,同时也能避免可能对SEO产生的负面影响。在实际工作中,开发者应根据具体需求选择合适的方法来隐藏或显示元素,确保用户体验和搜索引擎优化的平衡。

    css选项卡

    1. **无障碍访问**:为选项卡添加`tabindex="0"`和`aria-selected`属性,确保屏幕阅读器用户也能正常操作。 2. **响应式设计**:根据屏幕尺寸调整选项卡的布局,如在移动设备上垂直堆叠选项卡。 3. **内存效率**:...

    media-queries

    @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伪类多级下拉菜单代码

    总的来说,纯CSS的`:hover`伪类实现多级下拉菜单是一种实用且高效的方法,它不需要JavaScript,对SEO友好,且易于理解和维护。通过调整CSS选择器和属性,你可以根据项目需求定制出各种风格和交互的下拉菜单。

    完全用CSS实现的中英文双语导航菜单

    在这个项目中,我们将利用CSS的伪类选择器、过渡效果和相对定位来实现导航菜单的动态显示。 1. 结构设计: 创建HTML结构,一般使用`&lt;ul&gt;`和`&lt;li&gt;`元素来组织导航菜单,每个链接(`&lt;a&gt;`)包含两个子元素,分别代表...

    divcss隐藏内容样式方法PPT课件.pptx

    隐藏的内容对于屏幕阅读器用户或者辅助技术用户来说是不可见的,因此在隐藏内容时要考虑到这部分用户的需求。 总的来说,理解和掌握这些CSS隐藏技巧对于创建响应式、高性能的网页至关重要。通过合理运用,我们可以...

    css元素隐藏原理及displaynone和visibilityhidden

    在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间;有的可以响应点击,有的不能响应点击。一个一个看。

    谈谈CSS隐藏元素(display,visibility)的区别

    在CSS中,隐藏元素主要有两种方法:`display: none` 和 `visibility: hidden`,它们在隐藏元素的同时,对页面布局和交互性有着不同的影响。此外,还有一些其他的技术,如设置`height: 0`结合`overflow: hidden`或者...

    css中display和visibility的用法和区别介绍

    在CSS中,`display`和`visibility`两个属性都是用于控制元素在页面上的显示状态,但它们的作用方式和效果有着显著的区别。 `display`属性主要影响元素的布局和类型。它有多种不同的值: 1. `block`:将元素转换为...

    CSS实现的大型导航下拉菜单

    使用`display:none`属性可以默认隐藏下拉菜单,只在用户悬停到父级菜单项时显示。 ```css .dropdown-content { display: none; } ``` 2. **显示下拉菜单**: 当鼠标悬停在`.dropdown`上时,通过改变`...

    经典的CSS二级菜单修改:水平方向

    例如,一级菜单项通常设置为`display: inline-block`以水平排列,而二级菜单项则初始状态为`display: none`,当鼠标悬停在一级菜单上时,二级菜单的`display`属性将被切换为`block`,从而显示下拉菜单。CSS可能包括...

Global site tag (gtag.js) - Google Analytics