【问题标题】:Box Shadow inside TR tag [duplicate]TR标签内的盒子阴影[重复]
【发布时间】:2014-09-12 22:19:08
【问题描述】:

我正在尝试为表格内的TR 元素创建插入框阴影效果,但没有成功。 我正在使用以下 CSS:

tr {
     -moz-box-shadow: inset 0 0 5px #888;
     -webkit-box-shadow: inset 0 0 5px#888;
     box-shadow: inner 0 0 5px #888;
  }

现场演示:http://jsbin.com/urage5/edit

不能在tr 元素上创建这种效果吗?

【问题讨论】:

  • td 的background-color 是否设置为transparent?
  • 试过改了,还是不行
  • 查看我的答案(如下)以获得部分成功的解决方法。

标签: css


【解决方案1】:

要保留正常工作的表,您需要设置td-元素的样式而不是tr。使用伪类:first-child 和:last-child 可以实现与样式tr 相同的外观。为 box-shadow 添加稍微不同的值就可以了——我还添加了 border-radius 以获得更好的说明:

td {
    box-shadow: 0 4px 2px -3px rgba(0, 0, 0, 0.5) inset;
}
td:first-child {
    border-radius: 5px 0 0 5px;
    box-shadow: 4px 4px 2px -3px rgba(0, 0, 0, 0.5) inset;
}
td:last-child {
    border-radius: 0 5px 5px 0;
    box-shadow: 0 4px 2px -3px rgba(0, 0, 0, 0.5) inset;
}

查看实时示例:http://jsfiddle.net/KtPdt/

更多选项请查看:https://stackoverflow.com/a/11002210/1106393

【讨论】:

【解决方案2】:

我发现启用tr 以显示box-shadow 的唯一方法是在tr 元素上设置display: block;,尽管这意味着该行将不再匹配表格宽度:

tr {
    -moz-box-shadow: inset 0 0 5px #888;
    -webkit-box-shadow: inset 0 0 5px #888;
    box-shadow: inset 1px 1px 5px #888;
    display: block;
}

td {
    padding: 0.5em; /* Just to spread things out a bit */
}

JS Fiddle demo.

这适用于 Firefox 4 和 Chromium 10.x,但在 Opera 11.01 上失败(都在 Ubuntu 10.10 上运行)。我无法访问 Mac 或 Windows,所以我不能说 Safari 或 IE 将如何处理 tr 元素上的 display: block,甚至是在不同平台上运行的 Firefox 和 Chrome。

【讨论】:

  • 不幸的是,display:block 使元素不再按列排列。
  • 这是真的;不幸的是,它仍然是我知道启用box-shadow...的唯一方法... =/
  • 我最终通过使用单个 colspan-ed 单元格在我的行上方和下方创建一行并将 box-shadow 应用到该行来实现此功能。将 box-shadow 应用于行中的每个单元格都有效,但前提是模糊和散布为 0px。
  • display:block 破坏了表格的功能,因此没有任何意义。
  • 它是box-shadow: inset 1px 1px 5px #888;..
【解决方案3】:

Firefox 在 tr 标签上显示阴影很好。

谷歌浏览器有一个错误。投票this issue 以加快 Chromium 开发者的步伐。

【讨论】:

  • 可以选择。因为我认为box-shadow 被设计为仅适用于块。我的意见是应该适用于所有人
猜你喜欢
  • 1970-01-01
  • 2011-11-30
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
相关资源
最近更新 更多