【问题标题】:HTML\CSS: change cell background for hover state with CSSHTML\CSS:使用 CSS 更改悬停状态的单元格背景
【发布时间】:2010-09-21 18:45:34
【问题描述】:

看看这个jsFIDDLE sample

我想使用 CSS 更改悬停状态的单元格背景颜色.. 它可以通过 JavaScript 实现,但我想用 CSS 来实现...另外我希望整个单元格充当链接如何做到这一点

【问题讨论】:

    标签: html css hyperlink tablecell onhover


    【解决方案1】:

    您需要考虑几件事情:

    • 不要混合使用 CSS 和展示性 HTML,否则会变得非常混乱。颜色(用于文本、背景、边框)、大小、对齐方式以及与网站外观有关的任何内容都属于 CSS。

    • 尽量避免使用表格进行布局。作为初学者,它们可能看起来更容易,但这是一种过时的技术。

    • 在 CSS 中,您需要将 :hover 规则移到 :visited 规则之前。由于这两个规则具有相同的特性,第一个规则(当前为:visited)将永远不会应用悬停规则。

    • 您不需要在 CSS 中为每个规则重复样式。由于继承和级联,许多样式会自动应用于子元素。

    • 您需要在链接而不是表格单元格上设置背景颜色,然后您可以更改悬停时的背景颜色,就像您已经使用文本颜色一样。

    • 提供链接display: block 将使链接延伸到其包含块的整个宽度,因为这是块元素的默认行为。

    下面是一个示例,使用“干净”的 CSS 和 HTML 的相同布局应该如下所示:

    http://www.jsfiddle.net/QShRF/5/

    【讨论】:

    【解决方案2】:

    给菜单的table标签一个id,然后:

    #menu-table td:hover { background: whatever; }
    

    实际上,您不应该将表用于数据表以外的任何东西,它们很难维护和破坏语义。

    【讨论】:

    • 是的,让我们给所有的 td 上课。浪费字节,尤其是在必须添加/删除单元格时浪费时间。在这种情况下,只需给表一个 ID 并使用table#id > td
    • 更好的主意,谢谢。此外,不应使用 >,因为它意味着直接后代,而 td 不是(它在 tr 中)。
    【解决方案3】:

    .menu_links:link { display: block }

    使整个单元格充当链接(尽管您需要添加一点边距/填充)。然后你可以添加.menu_links:hover { background: #123123 } 来为背景着色。

    另外,我可以建议您在样式表中设置所有表格的样式。 <table bordercolor="red" bgcolor="#ffffff"> 非常过时,使网站的维护成为地狱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 2015-10-08
      • 2011-11-17
      • 2023-03-14
      • 2017-09-01
      相关资源
      最近更新 更多