Skip to content

Instantly share code, notes, and snippets.

@pnchinmay
Forked from OliverBalfour/README.md
Created June 7, 2023 05:09
Show Gist options
  • Save pnchinmay/b414b98b55fded531049a2ba801788d2 to your computer and use it in GitHub Desktop.
Save pnchinmay/b414b98b55fded531049a2ba801788d2 to your computer and use it in GitHub Desktop.
Obsidian custom checkbox snippet

Custom checkboxes for Obsidian! It's like deathau's snippet except updated to work really well in Live Preview mode in Obsidian 1.0.

Simply edit the x inside checkboxes to >, ?, etc. to see styling like below!

Editing Live Preview Viewing
image image image

Installation:

  • Download the checkbox.css file on this page
  • In Obsidian, open Settings > Appearance > CSS snippets
  • Click the folder icon to open the snippets folder (your_vault/.obsidian/snippets/, a hidden folder)
  • Copy checkbox.css there
  • Reload Obsidian
  • Go back to the CSS snippets settings and enable the checkbox option
/*
Obsidian styled checkboxes snippet (Oliver's version)
See https://github.com/deathau/obsidian-snippets#checkboxes for a demo.
This supports live preview editor mode and reading mode.
Tweaks: search this file for "tweak" to find places for common customizations.
Based on:
* https://github.com/deathau/obsidian-snippets/blob/main/checkbox.css (works with reading mode only)
* https://forum.obsidian.md/t/5-checkbox/35758 (works with live preview editor only)
This snippet combines both of the above snippets and irons out some inconsistencies.
*/
/* Hide a weird tick overlay */
input[type=checkbox]:checked::after {
display: none !important;
}
/* Hide undesirable borders */
.HyperMD-list-line input[type="checkbox"]:checked {
border: none !important;
}
/* Default checkbox styling */
.HyperMD-list-line input[type="checkbox"],
.markdown-preview-view input[type="checkbox"] {
-webkit-appearance: none;
box-sizing: border-box;
/* (tweak): change text-normal to text-faint below to give unchecked checkboxes a lighter border */
border: 1px solid var(--text-normal);
position: relative;
width: 16px;
height: 16px;
margin: 0;
margin-right: 4px;
margin-bottom: 2px;
transition: background-color 200ms ease-out 0s;
cursor: pointer;
filter: none;
border-radius: 4px;
}
.HyperMD-list-line input[type="checkbox"]:checked::before {
position: absolute;
color: white;
text-align: center;
font-weight: 900;
line-height: 15px;
width:12px;
left:2px;
right:2px;
}
.markdown-preview-view input[type="checkbox"]:checked {
border: none;
background-color: var(--interactive-accent);
}
.markdown-preview-view input[type="checkbox"]:hover {
background-color: var(--background-primary-alt);
}
.markdown-preview-view input[type="checkbox"]:checked::before {
position: absolute;
color: white;
text-align: center;
font-weight: 900;
line-height: 15px;
width:12px;
left:2px;
right:2px;
}
/* SVG check mark for done ('- [x]') */
/* 'x' icon */
.HyperMD-list-line input[data-task="x"]:checked::before,
.markdown-preview-view li[data-task="x"]>input[type="checkbox"]:checked::before {
content: '';
top:2px;
bottom:2px;
background-color: white;
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpolygon points='5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039'%3E%3C/polygon%3E%3C/svg%3E");
}
/* strikethrough for done tasks */
.HyperMD-task-line[data-task="x"],
.markdown-preview-view ul>li[data-task="x"] {
color: var(--checklist-done-color);
text-decoration: var(--checklist-done-decoration);
}
/* SVG chevron right for deferred/scheduled ('- [>]') */
/* '-' icon */
.HyperMD-list-line input[data-task=">"]:checked::before,
.markdown-preview-view li[data-task=">"]>input[type="checkbox"]:checked::before {
content: '';
top:2px;
bottom:2px;
background-color: white;
-webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 14 14' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.12 7L3.26667 11.76L4.57333 13.0667L10.7333 7L4.57333 0.933332L3.26667 2.24L8.12 7Z'/%3E%3C/svg%3E");
}
/* strikethrough for deferred/scheduled tasks */
.HyperMD-task-line[data-task=">"],
.markdown-preview-view ul>li[data-task=">"] {
color: var(--checklist-done-color);
text-decoration: var(--checklist-done-decoration);
}
/* SVG line for cancelled/non-task ('- [-]') */
/* faint text-colored background */
.HyperMD-list-line input[data-task="-"]:checked,
.markdown-preview-view li[data-task="-"]>input[type="checkbox"]:checked {
background-color: var(--checklist-done-color);
}
/* '-' icon */
.HyperMD-list-line input[data-task="-"]:checked::before,
.markdown-preview-view li[data-task="-"]>input[type="checkbox"]:checked::before {
content: '';
top:2px;
bottom:2px;
background-color: white;
-webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 14 14' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0.5' y='6.5' width='13' height='1'/%3E%3C/svg%3E");
}
/* strikethrough for cancelled tasks */
.HyperMD-task-line[data-task="-"],
.markdown-preview-view ul>li[data-task="-"] {
color: var(--checklist-done-color);
text-decoration: var(--checklist-done-decoration);
}
/* question ('- [?]') */
/* yellow background */
.HyperMD-list-line input[data-task="?"]:checked,
.markdown-preview-view li[data-task="?"]>input[type="checkbox"]:checked {
background-color: #A99400;
}
/* '?' icon */
.HyperMD-list-line input[data-task="?"]:checked::before,
.markdown-preview-view li[data-task="?"]>input[type="checkbox"]:checked::before {
content: '?';
-webkit-mask-image: none !important;
background-color: #A99400 !important;
}
/* normal text */
.HyperMD-list-line[data-task="?"] span,
.markdown-preview-view ul>li[data-task="?"] {
color: var(--text-normal);
text-decoration: none;
}
/* important task ('- [!]') */
/* red background */
.HyperMD-list-line input[data-task="!"]:checked,
.markdown-preview-view li[data-task="!"]>input[type="checkbox"]:checked {
background-color: #e73c4c !important;
}
/* '!' icon */
.HyperMD-list-line input[data-task="!"]:checked::before,
.markdown-preview-view li[data-task="!"]>input[type="checkbox"]:checked::before {
content: '!';
-webkit-mask-image: none !important;
background-color: #e73c4c !important;
}
/* bold text */
.HyperMD-list-line[data-task="!"] span,
.markdown-preview-view ul>li[data-task="!"] {
color: var(--text-normal);
text-decoration: none;
font-weight: var(--bold-weight);
color: var(--bold-color);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment