R Markdown:隐藏剧透文本(悬停在文本元素上)
R Markdown: hide spoiler text (hover over text element)
是否可以在使用 R Markdown 创建的 .html 文件中隐藏文本块?文本元素应该隐藏,直到用户优先将鼠标悬停在文本上(或单击按钮)。要隐藏的元素不涉及代码块。目前我在 < p>
中包含文本
有人建议通过在每行前面加上“>!”来隐藏文本块,但 R Studio 无法识别这种 'markdown' 方法。它只是 returns 以 '!' 开头的文本块。不过,我更喜欢这种简单的 'hover' 方法,优于 Javascript 和按钮。
欢迎提出任何建议。谢谢。
这当然是可以的。有几种可能性,包括线性变换(动画淡入淡出)、按钮、无按钮等。
首先,这是一个使用 CSS 的简单方法。当没有悬停时,字体和背景颜色匹配,因此没有文本可见。悬停时背景变为白色,文本变为黑色。
---
title: "Hide Code Blocks"
author: "Martin Schmelzer"
date: "June 25, 2018"
output: html_document
---
<style>
hide {
background-color: #d6d6d6;
color: #d6d6d6;
}
hide:hover {
background-color: white;
color: black;
}
</style>
## R Markdown
<hide>This is a hidden text block!</hide>
我的建议是使用 CSS 完成此任务。
以下 Rmd
文件包含一些隐藏 spoiler
class 元素的规则。您可能会发现其他方法 CSS:
---
output: html_document
---
```{css, echo=FALSE}
.spoiler {
visibility: hidden;
}
.spoiler::before {
visibility: visible;
content: "Spoiler alert! Hover me to see the answer."
}
.spoiler:hover {
visibility: visible;
}
.spoiler:hover::before {
display: none;
}
```
You can insert a message in raw `HTML`:
<p class="spoiler">Answer</p>
A better approach is to use bracketed spans:
[This is another answer]{.spoiler}
基于关于想要显示 kable
的 table 的附加部分,我查看了 htmltools
包中的一些函数来创建 HTML元素。我想出的方法是通过 js
代码块使用最少量的 Javascript。
基本上,我使用 shiny::actionButton
创建了一个按钮,并通过向 onclick
属性提供函数名称来附加一个 Javascript 单击处理程序。 knit table 位于 HTML
包装器内,因此它可以在 <div>
元素内作为容器正确呈现。此容器的 hidden
property 最初设置为 true。
点击处理程序是唯一真正要编写的 Javascript,这是一个通过 ID 查找 <div>
并将其 hidden
属性 设置为 false 的函数.
RMarkdown:
---
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
library(htmltools)
shiny::actionButton("show_table_button",
label = "Show table",
onclick = "button_handler()")
div(id = "tableContainer",
hidden = "true",
HTML(knitr::kable(head(iris), format = "html")))
```
```{js}
function button_handler() {
document.getElementById('tableContainer').hidden = false;
}
```
创建:
点击按钮后:
请注意,还有一些其他包用于在 R 中编写更复杂的 Javascript 代码——我没有使用过任何推荐的包——但我试图将这些包限制在你已经拥有的使用中任何 Shiny / HTML 相关的小部件。
是否可以在使用 R Markdown 创建的 .html 文件中隐藏文本块?文本元素应该隐藏,直到用户优先将鼠标悬停在文本上(或单击按钮)。要隐藏的元素不涉及代码块。目前我在 < p>
中包含文本有人建议通过在每行前面加上“>!”来隐藏文本块,但 R Studio 无法识别这种 'markdown' 方法。它只是 returns 以 '!' 开头的文本块。不过,我更喜欢这种简单的 'hover' 方法,优于 Javascript 和按钮。
欢迎提出任何建议。谢谢。
这当然是可以的。有几种可能性,包括线性变换(动画淡入淡出)、按钮、无按钮等。
首先,这是一个使用 CSS 的简单方法。当没有悬停时,字体和背景颜色匹配,因此没有文本可见。悬停时背景变为白色,文本变为黑色。
---
title: "Hide Code Blocks"
author: "Martin Schmelzer"
date: "June 25, 2018"
output: html_document
---
<style>
hide {
background-color: #d6d6d6;
color: #d6d6d6;
}
hide:hover {
background-color: white;
color: black;
}
</style>
## R Markdown
<hide>This is a hidden text block!</hide>
我的建议是使用 CSS 完成此任务。
以下 Rmd
文件包含一些隐藏 spoiler
class 元素的规则。您可能会发现其他方法 CSS:
---
output: html_document
---
```{css, echo=FALSE}
.spoiler {
visibility: hidden;
}
.spoiler::before {
visibility: visible;
content: "Spoiler alert! Hover me to see the answer."
}
.spoiler:hover {
visibility: visible;
}
.spoiler:hover::before {
display: none;
}
```
You can insert a message in raw `HTML`:
<p class="spoiler">Answer</p>
A better approach is to use bracketed spans:
[This is another answer]{.spoiler}
基于关于想要显示 kable
的 table 的附加部分,我查看了 htmltools
包中的一些函数来创建 HTML元素。我想出的方法是通过 js
代码块使用最少量的 Javascript。
基本上,我使用 shiny::actionButton
创建了一个按钮,并通过向 onclick
属性提供函数名称来附加一个 Javascript 单击处理程序。 knit table 位于 HTML
包装器内,因此它可以在 <div>
元素内作为容器正确呈现。此容器的 hidden
property 最初设置为 true。
点击处理程序是唯一真正要编写的 Javascript,这是一个通过 ID 查找 <div>
并将其 hidden
属性 设置为 false 的函数.
RMarkdown:
---
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
library(htmltools)
shiny::actionButton("show_table_button",
label = "Show table",
onclick = "button_handler()")
div(id = "tableContainer",
hidden = "true",
HTML(knitr::kable(head(iris), format = "html")))
```
```{js}
function button_handler() {
document.getElementById('tableContainer').hidden = false;
}
```
创建:
点击按钮后:
请注意,还有一些其他包用于在 R 中编写更复杂的 Javascript 代码——我没有使用过任何推荐的包——但我试图将这些包限制在你已经拥有的使用中任何 Shiny / HTML 相关的小部件。