在 R 中的 DT 中悬停图像弹出窗口
Image popup on hover in DT in R
我在 Rmarkdown
中有一个 DT
,我希望在将鼠标悬停在 table 数据上时弹出一个图像。
我的目的似乎有效,但它扭曲了 datatable
。
增加 table 行高度以适合图像。我试图通过 css
减少行大小,但没有成功。
这是我目前的 Rmarkdown
:
---
title: "Untitled"
author: "dimitris_ps"
date: "3 September 2016"
output: html_document
---
<style type="text/css">
.imgTooltip {
visibility: hidden;
}
.ItemsTooltip:hover .imgTooltip {
visibility: visible;
}
td {
height: 14px;
}
</style>
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(DT)
df <- structure(list(a = c("<a class=\"ItemsTooltip\" href=\"http://www.example.com\" target=\"_blank\"><img class=\"imgTooltip\" src=\"https://i.stack.imgur.com/uSSEu.jpg\"/>my Whosebug Avatar</a>",
"<a class=\"ItemsTooltip\" href=\"http://www.example.com\" target=\"_blank\"><img class=\"imgTooltip\" src=\"https://i.stack.imgur.com/uSSEu.jpg\"/>my Whosebug Avatar</a>"
), b = c("<a class=\"ItemsTooltip\" href=\"http://www.example.com\" target=\"_blank\"><img class=\"imgTooltip\" src=\"https://i.stack.imgur.com/uSSEu.jpg\"/>my Whosebug Avatar</a>",
"<a class=\"ItemsTooltip\" href=\"http://www.example.com\" target=\"_blank\"><img class=\"imgTooltip\" src=\"https://i.stack.imgur.com/uSSEu.jpg\"/>my Whosebug Avatar</a>"
)), .Names = c("a", "b"), row.names = c(NA, -2L), class = "data.frame")
```
```{r}
datatable(df, escape=c(FALSE, FALSE))
```
将 CSS 更改为使用 display: none
而不是 visibility: hidden
,如下所示:
.imgTooltip {
display: none;
}
.ItemsTooltip:hover .imgTooltip {
display: block;
}
如果我这样做,我可能会使用 datatable
回调选项而不是在单元格中渲染图像,但我必须再考虑一下。
编辑:这是使用 columnDefs
的更清晰的版本
---
title: "Untitled"
author: "CG"
date: "6 September 2016"
output:
html_document:
md_extensions: +raw_html
---
<style type="text/css">
.imgTooltip {
display: none;
}
.ItemsTooltip:hover .imgTooltip {
display: block;
position: absolute;
z-index: 1;
}
</style>
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(DT)
df <- data.frame(stringsAsFactors=FALSE,
a = rep("my Whosebug Avatar",2),
b = rep("my Whosebug Avatar",2))
```
```{r}
datatable(df, options=list(columnDefs=list(list(
targets=1:2,render=DT::JS(
'function(data,row,type,meta) {
return "<a class=\'ItemsTooltip\' href=\'www.example.com\' target=\'_blank\'><img class=\'imgTooltip\' src=\'https://i.stack.imgur.com/uSSEu.jpg\'/>" +
data + "</a>";
}'
)
))))
```
我在 Rmarkdown
中有一个 DT
,我希望在将鼠标悬停在 table 数据上时弹出一个图像。
我的目的似乎有效,但它扭曲了 datatable
。
增加 table 行高度以适合图像。我试图通过 css
减少行大小,但没有成功。
这是我目前的 Rmarkdown
:
---
title: "Untitled"
author: "dimitris_ps"
date: "3 September 2016"
output: html_document
---
<style type="text/css">
.imgTooltip {
visibility: hidden;
}
.ItemsTooltip:hover .imgTooltip {
visibility: visible;
}
td {
height: 14px;
}
</style>
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(DT)
df <- structure(list(a = c("<a class=\"ItemsTooltip\" href=\"http://www.example.com\" target=\"_blank\"><img class=\"imgTooltip\" src=\"https://i.stack.imgur.com/uSSEu.jpg\"/>my Whosebug Avatar</a>",
"<a class=\"ItemsTooltip\" href=\"http://www.example.com\" target=\"_blank\"><img class=\"imgTooltip\" src=\"https://i.stack.imgur.com/uSSEu.jpg\"/>my Whosebug Avatar</a>"
), b = c("<a class=\"ItemsTooltip\" href=\"http://www.example.com\" target=\"_blank\"><img class=\"imgTooltip\" src=\"https://i.stack.imgur.com/uSSEu.jpg\"/>my Whosebug Avatar</a>",
"<a class=\"ItemsTooltip\" href=\"http://www.example.com\" target=\"_blank\"><img class=\"imgTooltip\" src=\"https://i.stack.imgur.com/uSSEu.jpg\"/>my Whosebug Avatar</a>"
)), .Names = c("a", "b"), row.names = c(NA, -2L), class = "data.frame")
```
```{r}
datatable(df, escape=c(FALSE, FALSE))
```
将 CSS 更改为使用 display: none
而不是 visibility: hidden
,如下所示:
.imgTooltip {
display: none;
}
.ItemsTooltip:hover .imgTooltip {
display: block;
}
如果我这样做,我可能会使用 datatable
回调选项而不是在单元格中渲染图像,但我必须再考虑一下。
编辑:这是使用 columnDefs
---
title: "Untitled"
author: "CG"
date: "6 September 2016"
output:
html_document:
md_extensions: +raw_html
---
<style type="text/css">
.imgTooltip {
display: none;
}
.ItemsTooltip:hover .imgTooltip {
display: block;
position: absolute;
z-index: 1;
}
</style>
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(DT)
df <- data.frame(stringsAsFactors=FALSE,
a = rep("my Whosebug Avatar",2),
b = rep("my Whosebug Avatar",2))
```
```{r}
datatable(df, options=list(columnDefs=list(list(
targets=1:2,render=DT::JS(
'function(data,row,type,meta) {
return "<a class=\'ItemsTooltip\' href=\'www.example.com\' target=\'_blank\'><img class=\'imgTooltip\' src=\'https://i.stack.imgur.com/uSSEu.jpg\'/>" +
data + "</a>";
}'
)
))))
```