rleaflethtmlwidgets

Is it possible to include custom css in htmlwidgets for R and/or LeafletR?


I'd like to make some style changes to my leaflet map.

Is it possible to include

either via htmlwidgets for R or LeafletR?

Best


Solution

  • With no code whatsoever in your question, answering is very difficult. I'll attempt an answer. There are two methods of adding custom CSS to an htmlwidget. I will caution up front though that you will need to be very specific or use the !important override, since there is already quite a bit of CSS that is automatically added to leaflet.

    Easy but Less Robust

    htmlwidgets can be combined with tags from the htmltools package.

    library(leaflet)
    library(htmltools)
    
    # example from ?leaflet
    m = leaflet() %>% addTiles()
    
    # there are two approaches to the custom css problem
    #  1.  the easy but less robust way
    browsable(
      tagList(list(
        tags$head(
          # you'll need to be very specific
          tags$style("p{font-size:200%;}")
          # could also use url
          #tags$link(href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css",rel="stylesheet")
        ),
        m
      ))
    )
    

    More Robust with htmlDependency

    You can also use the htmlDependency which will handle conflicts caused by duplicates.

    #  2.  you can add dependencies to your leaflet map
    #  this mechanism will smartly handle duplicates
    #  but carries a little more overhead
    str(m$dependencies)  # should be null to start
    # 
    m$dependencies <- list(
      htmlDependency(
        name = "font-awesome"
        ,version = "4.3.0"
        # if local file use file instead of href below
        #  with an absolute path
        ,src = c(href="http://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css")
        ,stylesheet = "font-awesome.min.css"
      )
    )
    
    m