diff --git a/R/column_spec.R b/R/column_spec.R
index 8381899..e13e685 100644
--- a/R/column_spec.R
+++ b/R/column_spec.R
@@ -23,7 +23,7 @@
 #' @export
 column_spec <- function(kable_input, column,
                         width = NULL, bold = FALSE, italic = FALSE,
-                        monospace = FALSE) {
+                        monospace = FALSE, color = NULL, background = NULL) {
   if (!is.numeric(column)) {
     stop("column must be a numeric value")
   }
@@ -33,14 +33,20 @@
     return(kable_input)
   }
   if (kable_format == "html") {
-    return(column_spec_html(kable_input, column, width, bold, italic, monospace))
+    return(column_spec_html(kable_input, column, width,
+                            bold, italic, monospace,
+                            color, background))
   }
   if (kable_format == "latex") {
-    return(column_spec_latex(kable_input, column, width, bold, italic, monospace))
+    return(column_spec_latex(kable_input, column, width,
+                             bold, italic, monospace,
+                             color, background))
   }
 }
 
-column_spec_html <- function(kable_input, column, width, bold, italic, monospace) {
+column_spec_html <- function(kable_input, column, width,
+                             bold, italic, monospace,
+                             color, background) {
   kable_attrs <- attributes(kable_input)
   kable_xml <- read_kable_as_xml(kable_input)
   kable_tbody <- xml_tpart(kable_xml, "tbody")
@@ -79,6 +85,15 @@
       xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
                                                "font-family: monospace;")
     }
+    if (!is.null(color)) {
+      xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
+                                               "color: ", color, ";")
+    }
+    if (!is.null(background)) {
+      xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
+                                               "background-color: ",
+                                               background, ";")
+    }
   }
   out <- as_kable_xml(kable_xml)
   attributes(out) <- kable_attrs
diff --git a/R/row_spec.R b/R/row_spec.R
index 55a8bed..6615365 100644
--- a/R/row_spec.R
+++ b/R/row_spec.R
@@ -19,7 +19,8 @@
 #'
 #' @export
 row_spec <- function(kable_input, row,
-                     bold = FALSE, italic = FALSE, monospace = FALSE) {
+                     bold = FALSE, italic = FALSE, monospace = FALSE,
+                     color = NULL, background = NULL) {
   if (!is.numeric(row)) {
     stop("row must be a numeric value")
   }
@@ -29,14 +30,17 @@
     return(kable_input)
   }
   if (kable_format == "html") {
-    return(row_spec_html(kable_input, row, bold, italic, monospace))
+    return(row_spec_html(kable_input, row, bold, italic, monospace,
+                         color, background))
   }
   if (kable_format == "latex") {
-    return(row_spec_latex(kable_input, row, bold, italic, monospace))
+    return(row_spec_latex(kable_input, row, bold, italic, monospace,
+                          color, background))
   }
 }
 
-row_spec_html <- function(kable_input, row, bold, italic, monospace) {
+row_spec_html <- function(kable_input, row, bold, italic, monospace,
+                          color, background) {
   kable_attrs <- attributes(kable_input)
   kable_xml <- read_kable_as_xml(kable_input)
   kable_tbody <- xml_tpart(kable_xml, "tbody")
@@ -63,6 +67,15 @@
       xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
                                                "font-family: monospace;")
     }
+    if (!is.null(color)) {
+      xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
+                                               "color: ", color, ";")
+    }
+    if (!is.null(background)) {
+      xml_attr(target_cell, "style") <- paste0(xml_attr(target_cell, "style"),
+                                               "background-color: ",
+                                               background, ";")
+    }
   }
   out <- as_kable_xml(kable_xml)
   attributes(out) <- kable_attrs
diff --git a/tests/visual_tests/column_row_spec_html.Rmd b/tests/visual_tests/column_row_spec_html.Rmd
index 7bbe229..d63ab49 100644
--- a/tests/visual_tests/column_row_spec_html.Rmd
+++ b/tests/visual_tests/column_row_spec_html.Rmd
@@ -40,7 +40,7 @@
 kable(dt, "html") %>%
   kable_styling(full_width = F)   %>%
   row_spec(1, bold = T) %>%
-  column_spec(2, "5cm", bold = T) %>%
+  column_spec(2, "5cm", bold = T, color = "white", background = "red") %>%
   column_spec(3, monospace = T) %>%
   column_spec(4, "3cm", italic = T)
 ```
@@ -54,5 +54,5 @@
 kable(dt, "html") %>%
   kable_styling(full_width = F) %>%
   column_spec(7, bold = T) %>%
-  row_spec(5, bold = T, italic = T)
+  row_spec(5, bold = T, italic = T, color = "white", background = "black")
 ```
