我可以在 Shiny 中将一段文字环绕在图像周围吗?
Can I wrap a paragraph of text around image in Shiny?
我想看看是否可以在 Shiny 中将文本环绕在图像周围。我有一个闪亮的仪表板,带有一个 'About' 选项卡,其中包含一些文本段落和一些图像。我已经编写了以下概念的简化版本。在像 MS Word 这样的程序中,对于图像如何与文本内嵌以及文本如何环绕图像有几个不同的选项(参见我在 Word 中创建的底部图)。
我目前的解决方案是使用 fluidRow() 和 column() 来分割页面并将文本与图像分开放置。这可以工作,但不能像 Word 的文本换行功能那样提供干净的最终产品。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
# # Dashboard Header
dashboardHeader(title = "Menu"),
#
dashboardSidebar(
sidebarMenu(
menuItem("Example Tab", tabName = "tabA")
)
), # End Dashboard Sidebar
# Body of the dashboard
dashboardBody(
# Start with overall tabItems
tabItems(
tabItem(
tabName = "tabA",
fluidRow(
column(
width = 10,
p("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum."),
),
column(
width = 2,
img(
height = 100,
src = "https://www.r-project.org/logo/Rlogo.png"
),
), # end column
), # end fluidRow
br(),
br(),
fluidRow(
column(
width = 8,
p("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.")
),
column(
width = 4,
img(
height = 200,
src = "https://www.r-project.org/logo/Rlogo.png"
),
), # end column
), # end fluid row
)
)
)
)
####################################################
####################################################
server <- function(input, output, session) {
}
shinyApp(ui = ui, server = server)
如果您将 p
样式设置为 css text-align
是合理的,它应该可以工作
p(style="text-align: justify;", "Lorem ipsum etc etc")
CSS方式:
library(shiny)
library(shinydashboard)
CSS <- "
p {
line-height: 1.6;
font-family: Helvetica;
text-align: justify;
margin: 0;
font-size: 14px;
}
.Rlogo {
float: left;
width: 250px;
shape-outside: url(https://www.r-project.org/logo/Rlogo.svg);
shape-margin: 20px;
margin-right: 20px;
margin-bottom: 20px;
}
"
ui <- dashboardPage(
# # Dashboard Header
dashboardHeader(title = "Menu"),
#
dashboardSidebar(
sidebarMenu(
menuItem("Example Tab", tabName = "tabA")
)
), # End Dashboard Sidebar
# Body of the dashboard
dashboardBody(
tags$head(
tags$style(HTML(CSS))
),
# Start with overall tabItems
tabItems(
tabItem(
tabName = "tabA",
fluidRow(
column(
width = 12,
img(
class = "Rlogo",
src = "https://www.r-project.org/logo/Rlogo.svg"
),
p("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.")
) # end column
) # end fluid row
)
)
)
)
####################################################
####################################################
server <- function(input, output, session) {
}
shinyApp(ui = ui, server = server)
JavaScript方式:
CSS <- "
.Rlogo {
float: left;
width: 250px;
padding: 30px;
}
"
JS <- "
$(document).ready(function(){
$('.Rlogo').slickWrap();
});
"
ui <- dashboardPage(
# # Dashboard Header
dashboardHeader(title = "Menu"),
#
dashboardSidebar(
sidebarMenu(
menuItem("Example Tab", tabName = "tabA")
)
), # End Dashboard Sidebar
# Body of the dashboard
dashboardBody(
tags$head(
tags$script(src = "https://cdn.jsdelivr.net/gh/jasonwyatt/jQSlickWrap/jquery.slickwrap.js"),
tags$script(HTML(JS)),
tags$style(HTML(CSS))
),
# Start with overall tabItems
tabItems(
tabItem(
tabName = "tabA",
fluidRow(
column(
width = 12,
img(
class = "Rlogo",
src = "https://www.r-project.org/logo/Rlogo.svg"
),
p("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.")
) # end column
) # end fluid row
)
)
)
)
####################################################
####################################################
server <- function(input, output, session) {
}
shinyApp(ui = ui, server = server)
我想看看是否可以在 Shiny 中将文本环绕在图像周围。我有一个闪亮的仪表板,带有一个 'About' 选项卡,其中包含一些文本段落和一些图像。我已经编写了以下概念的简化版本。在像 MS Word 这样的程序中,对于图像如何与文本内嵌以及文本如何环绕图像有几个不同的选项(参见我在 Word 中创建的底部图)。
我目前的解决方案是使用 fluidRow() 和 column() 来分割页面并将文本与图像分开放置。这可以工作,但不能像 Word 的文本换行功能那样提供干净的最终产品。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
# # Dashboard Header
dashboardHeader(title = "Menu"),
#
dashboardSidebar(
sidebarMenu(
menuItem("Example Tab", tabName = "tabA")
)
), # End Dashboard Sidebar
# Body of the dashboard
dashboardBody(
# Start with overall tabItems
tabItems(
tabItem(
tabName = "tabA",
fluidRow(
column(
width = 10,
p("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum."),
),
column(
width = 2,
img(
height = 100,
src = "https://www.r-project.org/logo/Rlogo.png"
),
), # end column
), # end fluidRow
br(),
br(),
fluidRow(
column(
width = 8,
p("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.")
),
column(
width = 4,
img(
height = 200,
src = "https://www.r-project.org/logo/Rlogo.png"
),
), # end column
), # end fluid row
)
)
)
)
####################################################
####################################################
server <- function(input, output, session) {
}
shinyApp(ui = ui, server = server)
如果您将 p
样式设置为 css text-align
是合理的,它应该可以工作
p(style="text-align: justify;", "Lorem ipsum etc etc")
CSS方式:
library(shiny)
library(shinydashboard)
CSS <- "
p {
line-height: 1.6;
font-family: Helvetica;
text-align: justify;
margin: 0;
font-size: 14px;
}
.Rlogo {
float: left;
width: 250px;
shape-outside: url(https://www.r-project.org/logo/Rlogo.svg);
shape-margin: 20px;
margin-right: 20px;
margin-bottom: 20px;
}
"
ui <- dashboardPage(
# # Dashboard Header
dashboardHeader(title = "Menu"),
#
dashboardSidebar(
sidebarMenu(
menuItem("Example Tab", tabName = "tabA")
)
), # End Dashboard Sidebar
# Body of the dashboard
dashboardBody(
tags$head(
tags$style(HTML(CSS))
),
# Start with overall tabItems
tabItems(
tabItem(
tabName = "tabA",
fluidRow(
column(
width = 12,
img(
class = "Rlogo",
src = "https://www.r-project.org/logo/Rlogo.svg"
),
p("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.")
) # end column
) # end fluid row
)
)
)
)
####################################################
####################################################
server <- function(input, output, session) {
}
shinyApp(ui = ui, server = server)
JavaScript方式:
CSS <- "
.Rlogo {
float: left;
width: 250px;
padding: 30px;
}
"
JS <- "
$(document).ready(function(){
$('.Rlogo').slickWrap();
});
"
ui <- dashboardPage(
# # Dashboard Header
dashboardHeader(title = "Menu"),
#
dashboardSidebar(
sidebarMenu(
menuItem("Example Tab", tabName = "tabA")
)
), # End Dashboard Sidebar
# Body of the dashboard
dashboardBody(
tags$head(
tags$script(src = "https://cdn.jsdelivr.net/gh/jasonwyatt/jQSlickWrap/jquery.slickwrap.js"),
tags$script(HTML(JS)),
tags$style(HTML(CSS))
),
# Start with overall tabItems
tabItems(
tabItem(
tabName = "tabA",
fluidRow(
column(
width = 12,
img(
class = "Rlogo",
src = "https://www.r-project.org/logo/Rlogo.svg"
),
p("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.")
) # end column
) # end fluid row
)
)
)
)
####################################################
####################################################
server <- function(input, output, session) {
}
shinyApp(ui = ui, server = server)