R标记:隐藏扰流板文本(将光标悬停在文本元素上)

R标记:隐藏扰流板文本(将光标悬停在文本元素上),r,r-markdown,knitr,R,R Markdown,Knitr,是否可以在使用R标记创建的.html文件中隐藏文本块?文本元素应该隐藏,直到用户优先将鼠标悬停在文本上(或单击按钮)。要隐藏的元素与代码块无关。目前我将文本包含在 建议通过在每行前面加“>!”来隐藏文本块,但R Studio并不认可这种“降价”方法。它只返回一个以“!”开头的文本块。不过,我更喜欢这种简单的“悬停”方法,而不是Javascript和按钮 欢迎提出任何建议。谢谢。这当然是可能的。有几种可能性,包括线性变换(动画淡入)、按钮、无按钮等等 首先,这里是一个使用CSS的简单方法。不悬停时

是否可以在使用R标记创建的.html文件中隐藏文本块?文本元素应该隐藏,直到用户优先将鼠标悬停在文本上(或单击按钮)。要隐藏的元素与代码块无关。目前我将文本包含在

建议通过在每行前面加“>!”来隐藏文本块,但R Studio并不认可这种“降价”方法。它只返回一个以“!”开头的文本块。不过,我更喜欢这种简单的“悬停”方法,而不是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>
---
标题:“隐藏代码块”
作者:“马丁·施梅尔泽”
日期:“2018年6月25日”
输出:html\u文档
---
隐藏{
背景色:#D6;
颜色:#D6;
}
隐藏:悬停{
背景色:白色;
颜色:黑色;
}
##降价
这是一个隐藏的文本块!

我的建议是使用CSS完成此任务

以下
Rmd
文件包含一些隐藏
spoiler
类元素的规则。您可以使用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}
---
输出:html\u文档
---
```{css,echo=FALSE}
.扰流板{
可见性:隐藏;
}
.扰流板::之前{
能见度:可见;
内容:“剧透警报!让我悬停查看答案。”
}
.扰流板:悬停{
能见度:可见;
}
.扰流板:悬停::之前{
显示:无;
}
```
您可以在原始“HTML”中插入消息:

答案

更好的方法是使用括号跨度: [这是另一个答案]{.spoiler}
基于关于想要显示一个
kable
'd表的附加部分,我查看了
htmltools
包中用于创建HTML元素的一些函数。我提出的方法通过
js
代码块使用最少的Javascript

基本上,我使用
shinny::actionButton
创建了一个按钮,并通过向
onclick
属性提供函数名来附加一个Javascript点击处理程序。knit表位于
HTML
包装器中,因此它将在
元素中作为容器正确呈现。此容器的初始值设置为true

单击处理程序是唯一要编写的真正Javascript,它是一个按ID查找
的函数,并将其
隐藏的
属性设置为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代码的软件包,我没有使用任何推荐的软件包,但我尝试将这些软件包限制在使用任何与闪亮的/HTML小部件相关的软件包中。

同样值得一提的是:,这可以消除输入中对原始HTML的需要。如果您不想再看到它,有没有办法添加一个“隐藏表格”按钮来隐藏它?老实说,我会尝试使用预构建的HTML小部件库,而不是在R中编写javascript,但是您可以切换
document.getElementById('tableContainer')).在单击处理程序中隐藏