Theme Colours
Definition
- Each theme has primary + 2 complementary(?) colour shades + background + foreground + accent
- Themes are designed to be (mostly?) WCAG 2.0 contrast compliant, theme meta tags are updated upon theme selection FAB
Implementation
- CSS colour variables in sets of numbers for RGB input ie. rgb(var(--color))
- To allow background transparency, add alpha value ie. rgba(var(--color), 0.5)
- Set class "darked" to define dark theme and use meta theme-color; Set attribute data-theme for custom colours based on light/dark themes
- Colour definitions (subject to usage):
- For links, use "--primary"
- For header prefix & visited links, use "--secondary"
- For background shades or colour for use in Google Material 3 Design, use "--tertiary"
- For page text, use "--foreground"
- For page background, use "--background"
- For sub-content background, use "--accent"
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Theme Editor
Check for WCAG 2.0 contrast compliance at EightShapes Contrast Grid
(Note: Link colour fixed for testing purposes)
Floating Action Buttons (FABs)
Definition
- Action menus on corners of screen with lists of buttons, responsive to content
- On mobile screens scroll, menus will hide on scroll down after scrolled down certain level of top of page
Implementation
- Create node of class name "action-menu" with location of menu as class name (supports bottom-left/bottom-right), with children button nodes of class name "fab"
- Assume all menus fit on a min screen aspect-ratio of 1:1 and min width 320px (current page is content max-width 680px)
<div class="action-menu bottom-left"> <div class="fab back">...</div> </div> <div class="action-menu bottom-right"> <div class="fab theme">...</div> </div>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Pop-Up Content
Definition
- On external link tags with supported URLs, show content or embedded iframe render as bottom sheet
- Link tags are detected by attribute target="_blank" (ie. must open in new window/tab)
- When mouse hover, link will be transformed to popup, with link node containing original content and content node containing rendered content
- For interaction, right click/tap and hold to view popup, click on scrim/background overlay to close; Left click not affected to comply with accessibility and allow link to open in mobile apps
Implementation
- Container class name "popup", cloned link child class "popup-text", rendered content child class "popup-content"
- Class name "show" will be appended to container when popup content is shown
The link will transform into <div class="popup" data=url="[LINK]"> <a class="popup-text" href="[LINK]" target="_blank">[TEXT]</a> <div class="popup-content">[CONTENT]</div> </div> and behave the same on left click, just that right click will show popup, if available.
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Fallback when link is not supported for render, or exclude from render
Well, I hear this could be the best weekend for cherry blossom season in Tokyo so I better do this seasonal story up before it dies out in about two days lol
Jisho.org iframe
"There's a thing called give and take, you know?" Yeah Isaki gave you a kiss so she can take your- All according to keikaku haha
Apple Music release/track embeds
I also took the chance to listen to some live albums including
wacci's live from 2021, and
SPYAIR's live from last year
featuring YOSUKE the new singer. Don't ask if I listened to all, I only pick
the
ones
I like. IKE-san still better though. *laughs* Alright, it's different, it's
like if someone shaved their beard away, you know?
Twitter/X posts, Instagram post/reel embeds
(Note: Instagram does not support dark mode on embed)
If not for IDOLY PRIDE's live tweets from
the lot
of them (ie. not MusicRay'n and their tiny images haha) I would have died from
anxiety. Instead I'm going to die of sensory overload on Instagram HAHA
just see
for yourself
dude
YouTube video, Shorts embeds
Okay, didn't expect YouTube to recommend me
Ogura Yui's halloween livestream
yesterday, it was pretty good for what it is, she just naturally gave us
fanservice I can't even. *giggles*
The new song's dance video
though. *laughs*
Images (by file formats and/or domain name)
MyAnimeList.net frame courtesy of Jikan API v4
(Note: Can priority filter by list of MAL anime IDs, if provided in window.anime)
What if I told you that this Natsukawa is not that Natsukawa and the sister is not this Shiina
but that Shiina which was voiced by Komatsu Mikako but in this Anime it's the main
guy's sister- You get the point. *laughs*
Aika-chan
is cute though. *giggles*
Carousel
Definition
- Gallery with swappable image elements on click/tap
- Click/tap container fast (<0.2s) will turn off transition (for comparing differences)
- Right-click/tap and hold to show all items
Implementation
- Container class "carousel", child items class "carousel-item", all but first child class "hide" as initial state
- Append "show" class to container to allow fallback if JavaScript not supported but CSS supported, to prevent render issues
<div class="carousel"> <div class="carousel-item"></div> <div class="carousel-item hide"></div> <div class="carousel-item hide"></div> ... </div>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Different image sizes and orientations, right-click image to show all
![]() |
Even in a raincoat Isaki is still adorable af |
Same image size, multi-column
![]() |
![]() |
This week in violence we have: I gotta say Saki-chan you lost to Milika-san here this episode haha |
Agenda
Definition
- Image-supported table of contents, in grid form
- All links should be page anchors, otherwise will display "Details" overlay
Implementation
- Container class "agenda", children classes "agenda-item" for content
- For container size layout customization, use inline style on container (eg. max-width), do not style children layout
- Inline style variables for container: "--columns" no. of columns (3 is default, 2 on mobile screens), "--ratio" to define image aspect ratio
<div class="agenda" style="--ratio: [RATIO]; --columns: [COLS];"> <div class="agenda-item"></div> <div class="agenda-item"></div> <div class="agenda-item"></div> ... </div>
[[UNABLE TO SHOW ON LOCAL]]
6 items, default 3 columns, aspect ratio 2
2 items, 2 columns, default aspect ratio, inline style max width
Data Table
Definition
- Responsive width table (not height responsive) with collapsed borders
- Fixed first and last column, fixed top row customization possible
- Table can be represented as list of cards, header row will be hidden, recommend content rows to be meaningful in context (see example)
- Reference data tables can be created from other data tables, showing only specific rows with header, if any
Implementation
- Use table generators (eg. DivTable.com) to render HTML and wrap with container class name "datatable"
- Children must be HTML table tag following HTML 1.1 standard (ie. tbody, tr, th, td elements)
- Use class "no-wrap" to prevent wrapping of text values (shorter height, horizontal overflow if > 4 columns)
- Use class "all-borders" to include vertical borders
- Use class "freeze-(left/right)" to freeze first/last column
- Use class "freeze-top" to freeze top row (not sticky above page for long tables)
- Use class "cards" to display as list of cards
- Use attribute "data-select" to define comma-separated zero-based index of (tr) rows with (td), excluding header rows with (th) elements
- Use attribute "data-ref" to reference the id of the component of an existing data table (mandatory to define ref tables)
<div class="datatable freeze-left freeze-right all-borders"> <table> <tbody> <tr> <th></th> <th></th> ... </tr> <tr> <td title='[FOR_OVERFLOW_USE]' ></td> <td></td> ... </tr> ... </tbody> </table> </div>
[[UNABLE TO SHOW ON LOCAL]]
Freeze first column, no wrapping (visible scrollbar on desktop)
Item | From | Timeline | Qty | Price | Shipping | Purchased On | Arrived On | Condition |
---|---|---|---|---|---|---|---|---|
Kanno Mai "VOICE+ Vol.5" Print Tune Bromide Set | Mercari | 2023.02 | 2 | ยฅ999 | - | 2023.05.31 ๐ง |
2023.06.09 ๐ง๐ง |
OK? |
Ueda Reina CD "Atrium" Animate Bonus | Y! | 2022.10 ๐ฉ |
1 (+File) | ยฅ1000 | ยฅ210 | 2023.06.02 ๐ง |
2023.06.05 ๐ง๐ง |
OK |
Waki Azumi "Kimi to no Mirai" Release Event Bromides | Y! | 2023.03 | 6 | ยฅ1000๐ฝ | ยฅ210 | 2023.06.02 ๐ง |
2023.06.05 ๐ง๐ง |
Bent |
Nagae Rika "Re:color" Gamers Bonus | Mercari | 2023.02 | 2 | ยฅ1000 | - | 2023.06.02 ๐ง |
2023.06.06 ๐ง๐ง |
OK |
Aizawa Saya "Kimi no Iro, Kimi no Koe wo Kikasete" Event Bromides | Mercari | 2022.05 ๐ฉ |
2 | ยฅ444 | - | 2023.06.02 ๐ง |
2023.06.08 ๐ง๐ง |
OK |
Koga Aoi "Seiyuu Animedia Aug 2020" Bonus | Mercari | 2020.07 ๐ฉ๐ฉ๐ฉ |
1 | ยฅ50๐ฝ | ยฅ185 | 2023.06.02 ๐ง |
2023.06.06 ๐ง๐ง |
OK |
Natsukawa Shiina "Yueni" Animate Bonus | Y! | 2023.05 | 1 | ยฅ700 | ยฅ210 | 2023.06.03 ๐ง |
2023.06.07 ๐ง๐ง |
OK |
Natsukawa Shiina "Yueni" HMV Bonus | Mercari | 2023.05 | 1 | ยฅ300 | - | 2023.06.03 ๐ง |
2023.06.08 ๐ง๐ง |
OK |
Kouno Marika "Gekkan Bushiroad Mar 2022" Gamers Bonus | Y! | 2022.02 ๐ฉ |
1 | ยฅ400 | ยฅ185 | 2023.06.04 ๐ง |
2023.06.07 ๐ง๐ง |
OK |
TrySail "Seiyuu Grand Prix Jul 2021" HMV Bonus | Y! | 2021.06 ๐ฉ๐ฉ |
1 | ยฅ700 | ยฅ210 | 2023.06.04 ๐ง |
2023.06.09 ๐ง๐ง |
OK |
TrySail "Seiyuu Grand Prix Jul 2021" Animate Bonus | Y! | 2021.06 ๐ฉ๐ฉ |
1 | ยฅ300 | ยฅ185 | 2023.06.04 ๐ง |
2023.06.07 ๐ง๐ง |
OK |
Takahashi Rie "Seiyuu Grand Prix Jul 2023" Bromide Set | Mercari | 2023.06 | 3 | ยฅ2555 | - | 2023.06.09 ๐ง๐ง |
2023.06.14 ๐ง๐ง๐ง |
OK |
Takahashi Rie "TV Guide A Stars vol.02" Gamers Bonus | Y! | 2023.03 | 1 | ยฅ1100๐ผ |
ยฅ185 | 2023.06.09 ๐ง๐ง |
2023.06.13 ๐ง๐ง๐ง |
OK |
Ueda Reina "Seiyuu Grand Prix Dec 2022" Animate Bonus | Mercari | 2022.11 ๐ฉ |
1 | ยฅ399 | - | 2023.06.11 ๐ง๐ง |
2023.06.19 ๐ง๐ง๐ง๐ง |
OK |
TrySail "Karei One Turn / Follow You!" Set | Mercari | 2023.05 | 1 (+Card) | ยฅ1300 | - | 2023.06.12 ๐ง๐ง๐ง |
2023.06.16 ๐ง๐ง๐ง |
OK |
Kanno Mai "Kanno Mai to Issho." Bonus | Mercari | 2022.08 ๐ฉ |
1 | ยฅ1500๐ผ | - | 2023.06.12 ๐ง๐ง๐ง |
2023.06.16 ๐ง๐ง๐ง |
OK |
Amamiya Sora "10 miles to America" HMV Bonus | Mercari | 2023.06 | 2 | ยฅ1111 | - | 2023.06.14 ๐ง๐ง๐ง |
2023.06.16 ๐ง๐ง๐ง |
OK |
Asakura Momo "Seiyuu Grand Prix Apr 2022" Animate + Gamers Bonus | Mercari | 2022.03 ๐ฉ |
2 | ยฅ599 | - | 2023.06.18 ๐ง๐ง๐ง |
2023.06.21 ๐ง๐ง๐ง๐ง |
OK |
Reference table with 2 rows selected (based on above example)
HTML<div class="datatable" data-ref="[ID_OF_TABLE]" data-select="[COMMA_SEPARATED_ZERO_BASED_INTEGERS]"></div>
Data table as cards
(Note: Header will be hidden)
Name | Reputation | Quality | Followers | Decency Level |
---|---|---|---|---|
Nagishiro Mito Pixiv Twitter/X | Seen on Pixiv โณโณ |
Nice Artwork ๐จ๐๐ |
424.3k followers on X โญโญโญโญ |
Suggestive ๐ธ๐ |
Kantoku Pixiv Twitter/X | Seen Often on Twitter โณโณโณ |
Nice Artwork ๐จ๐๐ |
373.1k followers on X โญโญโญโญ |
Indecent ๐ธ๐๐ |
Hiten Pixiv Twitter/X | Following on Social Media โณโณโณโณ |
Perfect Artwork ๐จ๐๐๐ฒ๐ฅฐ |
528.7k followers on X โญโญโญโญโญ |
Pure ๐ธ |
Accordion
Definition
- Collapsible single item content (not in groups)
- Click on header to expand/collapse content
- Click on footer (if any) on bottom of content to collapse content, hidden with content
Implementation
- Container class "accordion"
- In DOM order: Children classes "header" for toggle, "content" for body, optional "footer" to collapse after end of body
<div class="accordion"> <blockquote class="header">[TITLE]</blockquote> <div class="content">[CONTENT]</div> <blockquote class="footer">CLOSE</blockquote> </div>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
100 QUESTIONS FOR HONDO KAEDE!!!
(Selected ones will be mentioned here in quote, above is full if you interested and can Japanese)
Q1: Origin of name
A1: Mother encountered people of fate who were named "Sakura" and
"Kaede" more than often especially more of the former, so it was a hard
decision between them
[Well thank goodness it isn't "Hondo Sakura" lol]
Q2: Nickname(s) as a kid
A2: Kae-chan, Ede-chan
[Kae-chan? Is that something I can call you after dating you twice?
Hehe]
Q3: Similarities to parents
A3: Partly similar to father, mostly mother
Q4: Earliest memory of your life
A4: Recollection of being in Higashiyama Zoo (Aichi Prefecture where
she was born) where she was trying to get a handshake with a giraffe
mascot who walked away, and (she) shouted "Wait up! If you leave I'll
throw this at you!!" while crying and running towards it
[LOL that sounded bad but the mascot with a long neck probably did not
notice her]
Q5: Things you were interested to learn as a kid
A5: Calligraphy for a year plus, swimming for around 5 years
A53: Without going overboard... hmm... shopping or sorts?
[Yeah fine I'll carry your bags for the stuff I paid haha]
Q55: What do you see in your partner
A55: Serious, honest, knowledgeable, nice, nice, nice, laughs a lot,
playful mind at heart and carries one's dreams and hopes moving forward
[Three nices? Well in her defence I already lost at being knowledgeable
so]
Q57: What you want to listen on a driving date?
A57: Whatever they like they can let it play! If it gets too loud I'll
get uncomfortable (though)
[Remind me to bring up like, Teshima Aoi on our drive lol]
Q58: Fetishes
A58: I wonder what they are...
[I wonder too, Ede-chan, you into female voice actresses?]
Q59: What tickles your fancy?
A59: I wonder what they are...
[Okay guys literally drill her with your kindness, she doesn't have that
moment so you gotta put in the effort]
Q61: Would you prefer to confess or be confessed to?
A61: I would like to confess from my side! Without hesitation!
[Well I look forward to the day I get confessed to by you-]
Q62: Own charm points
A62: Strong eyes and...
double tooth?
[Yes and YES OH MY FUCKING GOD- I thank our Lord and saviour for
stopping this girl from fixing her teeth]
Q100: Last word!
A100: Thanks for getting your hands on this! My favourite foods,
outfits, places, people... a lot of them were being compiled! This
photobook where being a voice actress but it was without the essence of
voice within, I gave the title of the book "MUTE". The stuff I worked a
lot on and I will continue to work on and enjoy them all back and forth,
so please continue to show your support!
[Ah, so THAT is how the title came about; She is right though]
Conversation
Definition
- Styled lines of text as conversation bubbles
- Bubbles are names, with right-aligned for sender and left-aligned for everyone else
Implementation
- Container class "conversation", will read children nodes innerText (in order)
- Set "data-separator" attribute to use custom separator between name and text, default ASCII colon ":"
- Set "data-sender" attribute to define sender to right align, else all left align
- To allow re-enactment of lines, set "data-animate" attribute, will be rendered with replay button at bottom of conversation
- Set inline styles at container to prevent overflow (max-height, overflow-y)
<div class="conversation" data-separator="[SEPARATOR]" data-sender="[NAME]" data-animate> <div>[NAME][SEPARATOR][MESSAGE]</div> ... </div>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Two party conversation, sender not defined, no inline styles, custom separator
Nan | I saw you brought someone home in the afternoon, who was that?
Shouhei | Uh...
Nan | Is she your girlfriend? She is very cute.
Shouhei | Are you jealous?
Nan | W-what are you talking about? Of course not, I was just happy for onii-chan.
Shouhei | LOL
Three party conversation, sender defined, animated, inline styles to prevent overflow
Miyu: Onii-chan, who is she?
Inori: I didn't know you have such an adorable sister!!
Shouhei: Uh...
Miyu: I-Is she your girlfriend??
Inori: Are you jealous I am hanging out with your brother? That's so cute!
Miyu: W-what are you talking about? Of course not!
Shouhei: LOL
Abbreviation
Definition
- Extension of HTML abbr tag, to allow click/touch to show title in custom HTML dialog tag
<abbr title="[POPUP_TEXT]"> [CONTENT] </abbr>
[[UNABLE TO SHOW ON LOCAL]]
[[UNABLE TO SHOW ON LOCAL]]
Jokes aside though, this truly is a work of art in itself, just
displaying the many sides of Toyota Moe here. It's just as if I have long
planned on the title for this review: "Motif Overflowing, Like a Work of Art".
Omake
Definition
- Padded element to reflect content outside of main body
<div class="omake"> [CONTENT] </div>
.omake { border-radius: 8px; background-color: rgb(var(--accent)); padding: 1em; transition: background-color 0.2s cubic-bezier(0.2, 0.0, 0, 1.0); }
WORTHY MENTION: COLLECTING CD
This technically doesn't fall in this category, since I wouldn't call collecting songs a thing, but hey, it's sort of like it. You like the songs, you buy them and they stack up. *laughs* Not going to do pricing on this one because... I spent a lot. Over the past decade alone, I've spent a lot. A good portion of my salary when I was in the Army went to those, and those were the first things I bought with my own money. So yeah, I'll update if I can count them all haha maybe I can do this.
This technically doesn't fall in this category, since I wouldn't call collecting songs a thing, but hey, it's sort of like it. You like the songs, you buy them and they stack up. *laughs* Not going to do pricing on this one because... I spent a lot. Over the past decade alone, I've spent a lot. A good portion of my salary when I was in the Army went to those, and those were the first things I bought with my own money. So yeah, I'll update if I can count them all haha maybe I can do this.
Emoji
Definition
- Use of Noto Color Emoji required for desktop environments to display emoji correctly
(Note: Mobile devices use their own emoji sets by default) - Emoji that require this font for intended use: "Pinched fingers" will not render, "Bird" should show blue bird
- Emoji use are split in two categories, direct use and converted with the latter from text in the format "*[EXPRESSION]*"
Implementation
- Use .woff2 files based on "Self-hosted Noto Color Emoji font for Chrome and Edge" GitHub Repo, and determine what to download and host based on unicode ranges in table shown
- For the following emoji, use font files "3.woff2" to "9.woff2"
ALL EMOJI USED (IN NO PARTICULAR ORDER)
๐ฅฐ๐๐ฌ๐๐ค๐ฒ๐คญ๐๐คฏ๐๐คฎ๐๐ข๐ฑ๐คท๐ฉ๐๐ฒ๐คซ๐๐๐๐๐ค๐๐๐ฆ๐๐ฅฑ๐ผ๏ธ๐ต๐ฆ๐๏ธ๐ท๐๐๐๐ฉ๐๐ด๐โ๏ธ๐๐๐๐ต๐๐๐
๐ฆ๐๐๐๐โจ
CONVERTED EMOJI LISTING & REFERENCE
Name | Convert From | Codepoint | Fallback (if any) |
---|---|---|---|
Smiling Face with Smiling Eyes and Three Hearts | *blessed* | U+1F970 | ๐ฅฐ |
Face Throwing A Kiss | *chu* *kiss* | U+1F618 | ๐ |
Grimacing Face | *cringe* | U+1F62C | ๐ฌ |
Smiling Face with Sunglasses | *dabs* | U+1F60E | ๐ |
Hand with Index and Middle Fingers Crossed | *fingers crossed* | U+1F91E | ๐ค |
Astonished Face | *gasp* *speechless* | U+1F632 | ๐ฒ |
Smiling Face with Smiling Eyes and Hand Covering Mouth | *giggles* | U+1F92D | ๐คญ |
Grinning Squinting Face | *laughs* | U+1F606 | ๐ |
Exploding Head | *mind blown* | U+1F92F | ๐คฏ |
Relieved Face | *phew* | U+1F60C | ๐ |
Face with Open Mouth Vomiting | *pukes* | U+1F92E | ๐คฎ |
Neutral Face | *silence* | U+1F610 | ๐ |
Crying Face | *sob* *sniff* | U+1F622 | ๐ข |
Face Screaming In Fear | *screams* | U+1F631 | ๐ฑ |
Shrug | *shrugs* | U+1F937 | ๐คท |
Weary Face | *sigh* | U+1F629 | ๐ฉ |
Smiling Face with Smiling Eyes | *smiles* | U+1F60A | ๐ |
Face with Finger Covering Closed Lips | *sshh* | U+1F92B | ๐คซ |
Thumbs Up Sign | *thumbs up* | U+1F44D | ๐ |
Face with Rolling Eyes | *ugh* | U+1F644 | ๐ |
Winking Face | *wink* *wink wink* | U+1F609 | ๐ ๐๐ |
Kissing Face with Smiling Eyes Pinched Fingers |
*chef's kiss* | U+1F618 U+1F90C | ๐๐ค |
Aubergine Splashing Sweat Symbol |
*fap* *fap fap fap* | U+1F346 U+1F4A6 | ๐ ๐๐๐ฆ |
Clapping Hands Sign | *claps* *applauds* *applauses* | U+1F44F | ๐ |
Yawning Face | *yawns* | U+1F971 | ๐ฅฑ |
Person Raising Both Hands In Celebration | *yay* | U+1F64C | ๐ |
Person with Folded Hands | *prays* | U+1F64F | ๐ |