如何在R Shiny Dashboard上的/固定标题上显示固定图像

时间:2016-04-22 14:52:31

标签: css r shiny shinydashboard

我正在使用R Shiny Dashboard包来创建仪表板。我实际上想要一个固定的标题,当我向下滚动时它不会移动。在这个标题的右上方我想放一个图像。我的css文件名为" remaniement"并位于文件夹\ www

  1. 第一个想法:我试图对每个元素的宽度进行参数化,例如将.skin-blue .main-header .navbar的宽度设置为80%,将图片的宽度设置为20%但是当浏览器窗口大小发生变化时出现问题

  2. 我尝试将标题宽度设置为100%并将图像放在标题上方。我不知道为什么,即使我将z-index: 9999999;放在我的css文件上,图像也总是在标题下。

  3. 对于上面的两个想法,我尝试使用功能dashboardBody()或dashboardHeader()编码的图片,但没有成功。

  4. 这是我的ui.R代码:

    library(shiny)
    library(shinydashboard)
    
    header<-dashboardHeader(title = "Titre",disable = FALSE)
    sidebar<-dashboardSidebar(sidebarMenu(menuItem("Home", tabName = "home", icon = icon("home"))))
    body<-dashboardBody(
    tags$link(rel = "stylesheet", href = "remaniement.css"),
    tags$div(class="windows",tags$a(href='https://www.microsoft.com/en-gb/windows',target="_blank",tags$img(src='windows.png',width = 80))))
    
    ui<-dashboardPage(skin = "blue",header,sidebar,body)
    

    我的服务器.R代码:

    server <- function(input, output,session) {}
    

    和我的css代码:

    /*image that a want to put in the header*/
    .windows{
    position: fixed;
    right: 0;
    top: 0;
    white-space: nowrap;
    overflow: visible;
    background-color: #FFFFFF;
    z-index:9999999;}
    
    /* logo */
    .skin-blue .main-header .logo {
    background-color: #3c8dbc;
    color: #FFF;
    position: fixed;
    width: 230px;
    white-space: nowrap;
    overflow: visible;}
    
    /* navbar (rest of the header) */
    .skin-blue .main-header .navbar {
    width:80%;
    position: fixed;
    white-space: nowrap;
    overflow: visible;
    background: linear-gradient(90deg, #3c8dbc, #ffffff);
    z-index:850;}
    
    .skin-blue .main-header .navbar .sidebar-toggle {
    position: fixed;
    white-space: nowrap;
    overflow: visible;}
    
    .sidebar {
    color: #FFF;
    position: fixed;
    width: 220px;
    white-space: nowrap;
    overflow: visible;}
    
    .content-wrapper,
    .right-side,
    .main-footer{
    -webkit-transition: -webkit-transform 0.3s ease-in-out, margin 0.3s ease-in-out;
    -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out;
    -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out;
    transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out;
    margin-left: 230px;
    z-index: 820;
    top:50px;
    position: relative;
    white-space: nowrap;
    overflow: visible;
    background-color: #ffffff;}
    
    .main-sidebar,
    .left-side {
    position: absolute;
    top: 0;
    left: 0;
    padding-top: 50px;
    min-height: 100%;
    width: 230px;
    z-index: 810;
    -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out;
    -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out;
    -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out;
    transition: transform 0.3s ease-in-out, width 0.3s ease-in-out;}
    

    我真的迷失了,已经超过3天了,我被困在了......

    提前谢谢!

1 个答案:

答案 0 :(得分:0)

(已编辑)

事情“很简单”(但是发现它有些苛刻)。

首先,我需要像这样将images目录设置为“资源路径”:

addResourcePath("<name for my resource path>", "<actual path>"

请尽可能使用system.file()定义实际路径,这是一种干净的方法。您还可以使用resourcePath()

检查当前的资源路径(默认默认值+您的资源)

然后,您可以在用户界面中使用tags$img()来调用新注册的文件夹:

tags$img("<actual path>/local-path-to-your-image", ...) # ... can contain HTML parameter such as width and height

您将完成!