Chapter 1: Demo
Chapter Text
Twitter Workskin
Here's my attempt at a workskin! I started this using code from the work I've linked to this fic. The goal of this skin is to be different siteskin-friendly, mobile-friendly, screenreader-friendly, and disabled workskin-friendly ( as in, it still resembles a tweet using just basic HTML).
I've also included as many options for what to add as I can, as well as using nth-child and before / after pseudo classes to 'automate' as much as possible, so the HTML isn't super bulky.
The icons I used are from SVG replo / I took them from the workskins I linked above.
Simple Tweet
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
Wow, what a very nice and accessible workskin. What should I tweet today?
[Replies: 2 ] |
[Retweets: 32 ] |
[Likes: 45 ] |
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
This is what it looks like with the creator's workskin disabled! All of the new words are still read by screenreaders when the workskin is active, making it more accessible than words with no context added I'd also like to think the dividers are a nice touch.
[Replies: 2 ] |
[Retweets: 32 ] |
[Likes: 45 ] |
Tweets of different styles
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
This is the 'Ao3 default' style. Try using some siteskins like reversi (located in the footer of the Ao3 website) to see how it changes!
[Replies: 2 ] |
[Retweets: 32 ] |
[Likes: 45 ] |
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
This is the dark mode style, makes it easy on the eyes
[Replies: 2 ] |
[Retweets: 32 ] |
[Likes: 45 ] |
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
Lastly, a minimal style, this is the least intrusive option.
[Replies: 2 ] |
[Retweets: 32 ] |
[Likes: 45 ] |
Tweet with reply
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
The regular tweet and the reply tweet are both quite similar, only the formatting is different, and they use almost all of the same classes.
[Replies: 2 ] |
[Retweets: 32 ] |
[Likes: 45 ] |
-- Reply Tweet: --
Tweet with reply - stripped
-- Tweet: --
Username: HelloWorld
Adding the date, time, handle, the stats, and even icon are all optional. Pretty cool, right? the only thing you need is your username and some text.
-- Reply Tweet: --
Adding Images and Polls
Username: HelloWorld
Handle: @twitteruser
You can add both images and polls quite easily. Don't forget to add alt text to the image!
-- Poll: --
- Option: Hawks
- Option: Keigo Takami
- Option: Dabi's summer fling
4 votes · 23 hours left
[Replies: 2 ] |
[Retweets: 32 ] |
[Likes: 45 ] |
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
Another poll, by itself this time
-- Poll: --
- Option: Option one
- Option: Option two
- Option: Option three
268 votes · 23 hours left
[Replies: 234 ] |
[Retweets: 32K ] |
[Likes: 454M ] |
Tweet with answered poll
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
This poll has been answered! This is a bit trickier for me to automate, as I have to make a new CSS class for each poll option (because of its percent-age and which result won).
In this poll, you've voted for option two, and the poll is finished, with option one winning. Take a look at this without the workskin, I've made it so you still now which poll won as well as what you voted for.
-- Poll: --
- 50% voted for the winning option: Option one
- 20% voted for option: Option two
- You voted for this option - 30% voted for option: Option three
4 votes · final results
[Replies: 234 ] |
[Retweets: 32K ] |
[Likes: 454M ] |
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
This poll has been answered (option two again), but it's not finished, so there's no winner yet
-- Poll: --
- 50% voted for option: Option one
- 20% voted for option: Option two
- You voted for this option - 30% voted for option: Option three
4 votes · 2h left
[Replies: 234 ] |
[Retweets: 32K ] |
[Likes: 454M ] |
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
Here's one more poll that you haven't voted in, and is also ongoing
-- Poll: --
- 50% voted for option: Option one
- 20% voted for option: Option two
- 30% voted for option: Option three
4 votes · 2h left
[Replies: 234 ] |
[Retweets: 32K ] |
[Likes: 454M ] |
Quote tweet
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
Now for quote tweets. These are also seperated by dividers and a blockquote when the workskin is disabled.
-- Quote Tweet: --
![]()
Name: steve @thefirstmc · Posted 20h ago
images and polls also work in quote tweets!
![]()
-- Poll: --
- Option: Hawks
- Option: Keigo Takami
- Option: Dabi's summer fling
4 votes · 23 hours left
[Replies: 234 ] |
[Retweets: 32K ] |
[Likes: 454M ] |
Tweet with multiple reply
-- Tweet: --
Username: HelloWorld
Handle: @twitteruser
Let's look at all the things we can add to the reply tweets!
[Replies: 2 ] |
[Retweets: 32 ] |
[Likes: 45 ] |
-- Reply Tweet: --
-- Reply Tweet: --
-- Reply Tweet: --
Chapter 2: HTML
Summary:
the HTML used for the demo
Chapter Text
Simple Tweet
<div class="twtdiv twt-light">
<div class="twt">
<hr>
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p> Wow, what a very nice and accessible workskin. What should I tweet today?
</p>
<div class="timestamp"><p><span class="screenreader">Posted</span> 02:00 · 2023-12-16</p></div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
</div>
<div>
<div>
<hr>
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p> This is what it looks like with the creator's workskin disabled! All of the new words are
still read by screenreaders when the workskin is active, making it more accessible than
words with no context added I'd also like to think the dividers are a nice touch.
</p>
<div class="timestamp"><p><span class="screenreader">Posted</span> 02:00 · 2023-12-16</p></div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
</div>
Tweets of different styles
<div class="twtdiv">
<div class="twt">
<hr>
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p> This is the 'Ao3 default' style. Try using some siteskins like reversi (located in the footer of the Ao3
website) to see how it changes!
</p>
<div class="timestamp"><p><span class="screenreader">Posted</span> 02:00 · 2023-12-16</p></div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
<div class="twtdiv twt-dark">
<div class="twt">
<hr>
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p> This is the dark mode style, makes it easy on the eyes
</p>
<div class="timestamp"><p><span class="screenreader">Posted</span> 02:00 · 2023-12-16</p></div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
</div>
<div class="twtdiv twt-minimal">
<hr>
<div class="twt">
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p> Lastly, a minimal style, this is the least intrusive option.
</p>
<div class="timestamp"><p><span class="screenreader">Posted</span> 02:00 · 2023-12-16</p></div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
</div>
Tweet with reply
<div class="twtdiv twt-light">
<hr>
<div class="twt">
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p> The regular tweet and the reply tweet are both quite similar, only the formatting is different,
and they use almost all of the same classes.
</p>
<div class="timestamp"><p><span class="screenreader">Posted</span> 02:00 · 2023-12-16</p></div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
<div class="twt reply-twt">
<span class="screenreader">-- Reply Tweet: -- </span>
<div class="icon-div">
<p><img src="https://images.squidge.org/images/2023/12/07/stevemc.jpeg" width="50px" class="hidden" hidden alt=""></p>
</div>
<div class="reply-body">
<div class="header">
<p><span class="name"><span class="screenreader">Name: </span><b>steve</b></span><span class="handle"> @thefirstmc · <span class="screenreader">Posted</span> 20h <span class="screenreader">ago</span></span></p>
</div>
<div class="text">
<p>
The reply tweet is seperated into two columns thanks to display: table. The div that holds the icon is set to
a specified min-width and max-width, and the div that holds the body of the tweet's width is set to
auto.
</p><p>
the divider for the regular tweet is a pseudo element of the stats div, and its disabled
in the reply tweet
</p>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
</div>
<hr>
</div>
</div>
<br>
<Br>
Tweet with reply - stripped
<div class="twtdiv twt-light">
<hr>
<div class="twt">
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
</div>
</div>
<div class="text">
<p> Adding the date, time, handle, the stats, and even icon are all optional. Pretty cool, right?
the only thing you need is your username and some text.
</p>
</div>
<table><tr>
<td class="reply"><p></p></td>
<td class="retweet"><p></td>
<td class="like"><p></p></td>
</tr></table>
<hr>
</div>
<div class="twt reply-twt">
<span class="screenreader">-- Reply Tweet: -- </span>
<div class="icon-div">
</div>
<div class="reply-body">
<div class="header">
<p><span class="name"><span class="screenreader">Name: </span><b>hero</b></span></p>
</div>
<div class="text">
<p>
The reply tweet keeps a bit of its left-margin to distinguish it.
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
</div>
<hr>
</div>
</div>
<br>
<Br>
Adding Images and Polls
<div class="twtdiv twt-light">
<div class="twt ">
<hr>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
You can add both images and polls quite easily. Don't forget to add alt text to the image!
<p class="twt-image">
<img src= ' https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg'
width="400" alt="Hawks from BNHA looking sexy">
</p>
<div class="poll"><p class="screenreader">-- Poll: --</p>
<ul>
<li><span class="screenreader">Option: </span> Hawks</li>
<li><span class="screenreader">Option: </span>Keigo Takami</li>
<li><span class="screenreader">Option: </span>Dabi's summer fling</li>
</ul>
<p class="poll-info">4 votes · 23 hours left</p>
</div>
<div class="timestamp"><p><span class="screenreader">Posted</span> 03:45 · 2023-12-18 </p></div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
<div class="twtdiv twt-light">
<div class="twt">
<hr>
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p>Another poll, by itself this time </p>
<div class="poll"><p class="screenreader">-- Poll: --</p>
<ul>
<li><span class="screenreader">Option: </span>Option one</li>
<li><span class="screenreader">Option: </span>Option two</li>
<li><span class="screenreader">Option: </span>Option three</li>
</ul>
<p class="poll-info">268 votes · 23 hours left</p>
</div>
<div class="timestamp"><p><span class="screenreader">Posted</span> 02:00 · 2023-12-16</p></div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 234 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32K <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 454M <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
</div>
Tweet with answered poll
<div class="twtdiv twt-light">
<div class="twt">
<hr>
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p>This poll has been answered! This is a bit trickier for me to automate, as I have to make a new
CSS class for each poll option (because of its percent-age and which result won). </p>
<p>In this poll, you've voted for option two, and the poll is finished, with option one winning.
Take a look at this without the workskin, I've made it so you still now which poll won as well as what
you voted for.
</p>
<div class="poll answered"><p class="screenreader">-- Poll: --</p>
<ul>
<li class="percent--1-winner"><span class="screenreader"><b>50% voted for the winning option: </span> Option one</b></li>
<li class="percent--2"><span class="screenreader">20% voted for option: </span>Option two <img src="https://images.squidge.org/images/2023/12/16/pollcheckmark.png" width="15" class="hidden" hidden alt=""><span class="screenreader">- You voted for this option</span></li>
<li class="percent--3"><span class="screenreader">30% voted for option: </span>Option three</li>
</ul>
<p class="poll-info">4 votes · final results</p>
</div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 234 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32K <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 454M <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
</div>
<br>
<br>
<div class="twtdiv twt-light">
<div class="twt">
<hr>
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p>This poll has been answered (option two again), but it's not finished, so there's no winner yet
</p>
<div class="poll answered"><p class="screenreader">-- Poll: --</p>
<ul>
<li class="percent--1"><span class="screenreader">50% voted for option: </span> Option one</li>
<li class="percent--2"><span class="screenreader">20% voted for option: </span>Option two <img src="https://images.squidge.org/images/2023/12/16/pollcheckmark.png" width="15" class="hidden" hidden alt=""><span class="screenreader">- You voted for this option</span></li>
<li class="percent--3"><span class="screenreader">30% voted for option: </span>Option three</li>
</ul>
<p class="poll-info">4 votes · 2h left</p>
</div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 234 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32K <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 454M <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
</div>
<br>
<br>
<div class="twtdiv twt-light">
<div class="twt">
<hr>
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p>
Here's one more poll that you haven't voted in, and is also ongoing
</p>
<div class="poll answered"><p class="screenreader">-- Poll: --</p>
<ul>
<li class="percent--1"><span class="screenreader">50% voted for option: </span> Option one</li>
<li class="percent--2"><span class="screenreader">20% voted for option: </span>Option two</li>
<li class="percent--3"><span class="screenreader">30% voted for option: </span>Option three</li>
</ul>
<p class="poll-info">4 votes · 2h left</p>
</div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 234 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32K <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 454M <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
</div>
Quote tweet
<div class="twtdiv twt-light">
<div class="twt">
<hr>
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p>
Now for quote tweets. These are also seperated by dividers and a blockquote when the workskin is disabled.
</p>
<hr>
<blockquote>
<p><span class="screenreader">-- Quote Tweet: -- </span></p>
<div class="quote-div">
<div class="header">
<div class="icon-div">
<p><img hidden class="hidden" alt="" width="50px" src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg">
</p>
</div>
<div class="name-handle-div">
<p><span class="name"><span class="screenreader">Name: </span>
<b>steve</b></span><span class="handle"> @thefirstmc ·
<span class="screenreader">Posted</span> 20h <span class="screenreader">ago
</span></span></p>
</div>
</div>
<p>images and polls also work in quote tweets!</p>
<p class="twt-image">
<img src= ' https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg' width="400" alt="hawks from BNHA looking sexy">
</p>
<div class="poll"><p class="screenreader">-- Poll: --</p>
<ul>
<li><span class="screenreader">Option: </span> Hawks</li>
<li><span class="screenreader">Option: </span>Keigo Takami</li>
<li><span class="screenreader">Option: </span>Dabi's summer fling</li>
</ul>
<p class="poll-info">4 votes · 23 hours left</p>
</div>
</div>
</blockquote>
<hr>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 234 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32K <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 454M <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
</div>
</div>
Tweet with multiple reply
<div class="twtdiv twt-light">
<hr>
<div class="twt">
<span class="screenreader">-- Tweet: -- </span>
<div class="header">
<div>
<p><img src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg"
width="50" height="50" class="hidden" hidden alt=""></p>
</div>
<div class="name-handle-div">
<p class="name"><span class="screenreader">Username: </span><b>HelloWorld</b></p>
<p class="handle"><span class="screenreader">Handle: </span>@twitteruser</p>
</div>
</div>
<div class="text">
<p> Let's look at all the things we can add to the reply tweets!
</p>
<div class="timestamp"><p><span class="screenreader">Posted</span> 02:00 · 2023-12-16</p></div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
<hr>
</div>
<div class="twt reply-twt">
<span class="screenreader">-- Reply Tweet: -- </span>
<div class="icon-div">
<p><img src="https://images.squidge.org/images/2023/12/07/stevemc.jpeg" width="50px" class="hidden" hidden alt=""></p>
</div>
<div class="reply-body">
<div class="header">
<p><span class="name"><span class="screenreader">Name: </span><b>steve</b></span><span class="handle"> @thefirstmc · <span class="screenreader">Posted</span> 20h <span class="screenreader">ago</span></span></p>
</div>
<div class="text">
<p>
have an image:
</p>
<p class="twt-image">
<img src= ' https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg'
width="400" alt="Hawks from BNHA looking sexy">
</p>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
</div>
<hr>
</div>
<div class="twt reply-twt">
<span class="screenreader">-- Reply Tweet: -- </span>
<div class="icon-div">
<p><img src="https://images.squidge.org/images/2023/12/07/stevemc.jpeg" width="50px" class="hidden" hidden alt=""></p>
</div>
<div class="reply-body">
<div class="header">
<p><span class="name"><span class="screenreader">Name: </span><b>steve</b></span><span class="handle"> @thefirstmc · <span class="screenreader">Posted</span> 20h <span class="screenreader">ago</span></span></p>
</div>
<div class="text">
<p>
now a quote tweet, with both an image and a poll.
</p>
<hr>
<blockquote>
<p><span class="screenreader">-- Quote Tweet: -- </span></p>
<div class="quote-div">
<div class="header">
<div class="icon-div">
<p><img hidden class="hidden" alt="" width="50px" src="https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg">
</p>
</div>
<div class="name-handle-div">
<p><span class="name"><span class="screenreader">Name: </span>
<b>steve</b></span><span class="handle"> @thefirstmc ·
<span class="screenreader">Posted</span> 20h <span class="screenreader">ago
</span></span></p>
</div>
</div>
<p>images and poll coming right up!</p>
<p class="twt-image">
<img src= ' https://images.squidge.org/images/2023/09/14/00d56b33f5a708454d853fbad6d2e18a.jpeg' width="400" alt="hawks from BNHA looking sexy">
</p>
<div class="poll"><p class="screenreader">-- Poll: --</p>
<ul>
<li><span class="screenreader">Option: </span> Hawks</li>
<li><span class="screenreader">Option: </span>Keigo Takami</li>
<li><span class="screenreader">Option: </span>Dabi's summer fling</li>
</ul>
<p class="poll-info">4 votes · 23 hours left</p>
</div>
</div>
</blockquote>
<hr>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
</div>
<hr>
</div>
<div class="twt reply-twt">
<span class="screenreader">-- Reply Tweet: -- </span>
<div class="icon-div">
<p><img src="https://images.squidge.org/images/2023/12/07/stevemc.jpeg" width="50px" class="hidden" hidden alt=""></p>
</div>
<div class="reply-body">
<div class="header">
<p><span class="name"><span class="screenreader">Name: </span><b>steve</b></span><span class="handle"> @thefirstmc · <span class="screenreader">Posted</span> 20h <span class="screenreader">ago</span></span></p>
</div>
<div class="text">
<p>
Finally, have an answered poll:
</p>
<div class="poll answered"><p class="screenreader">-- Poll: --</p>
<ul>
<li class="percent--1-winner"><span class="screenreader"><b>Winning Option: </span> Option one</b></li>
<li class="percent--2"><span class="screenreader">Option: </span>Option two <img src="https://images.squidge.org/images/2023/12/16/pollcheckmark.png" width="15" class="hidden" hidden alt=""><span class="screenreader">- You voted for this option</span></li>
<li class="percent--3"><span class="screenreader">Option: </span>Option three</li>
</ul>
<p class="poll-info">4 votes · final results</p>
</div>
</div>
<table><tr>
<td class="reply"><p><span class="screenreader">[Replies: </span> 2 <span class="screenreader">]</span></p></td>
<td class="retweet"><p><span class="screenreader">[Retweets: </span> 32 <span class="screenreader">]</span></p></td>
<td class="like"><p><span class="screenreader">[Likes: </span> 45 <span class="screenreader">]</span></p></td>
</tr></table>
</div>
<hr>
</div>
</div>
Chapter 3: CSS
Summary:
the CSS used for the twitter mimic
Chapter Text
.twt .screenreader {
position: absolute;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/*I've added a div called twtdiv that is only meant to
help with the twt:firstchild last child thing
without it, the first tweet ever and the last tweet ever will be marked, meaning multiple
tweets in a fic would become more difficult for me to provide
*/
.twtdiv{
width: 85vw;
max-width: 20cm;
margin: 1em auto;
border: 2px solid #84848477;
border-radius: 10px;
}
.twt {
padding: 1vw;
border-bottom: 2px solid #84848477;
border-top:0;
line-height: 1;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", sans-serif;
}
.twt:last-child{
border-bottom: none;
}
.twtdiv p{
margin: 0px auto;
line-height: 1.3;
line-break:auto;
}
.twt div{
margin: 0;
padding: 0;
}
.twt ul{
padding: 0;
}
/* Ive added some hr's for visibility when theres no workskin*/
.twtdiv hr{
display: none;
}
.twtdiv blockquote{
margin: 0;
margin-inline-start: 0;
border-inline-start: rgb(0,0,0,0) 0px solid;
padding: 0;
background-color: rgb(0,0,0,0);
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", sans-serif;
}
/*
STYLIZATION
*/
/*different twitter colours*/
.twt-light{
background-color: white;
color: black;
}
.twt-dark{
background-color: black;
color: white;
}
/*another twitter style, a minimal feel*/
.twt-minimal{
border: none;
}
.twt-minimal:first-child{
border: none;
}
/*
HEADER
*/
.twt .header{
display: block;
padding-bottom: 0;
display: block;
text-wrap:nowrap;
overflow: hidden;
}
.twt .header div{
display: inline-block;
}
.twt .header .name-handle-div{
margin: 5px auto 1em 10px;
vertical-align: top;
max-width: 50%;
word-break: keep-all;
}
.twt .header img{
visibility: visible;
display:inline-block;
border-radius: 50%;
width: 50px;
height: 50px;
}
.twt .icon-div img{
border-radius: 50%;
width: 50px;
height: 50px;
width: 100%;
height: 100%;
overflow: hidden;
}
.twt .name:hover {
text-decoration: underline;
}
.twt .handle {
font-size: small;
font-weight: normal;
opacity: 67%
}
.twt .header::after{
/*oh no not float*/
float: right;
content: url('https://images.squidge.org/images/2023/12/16/ellipsis-svgrepo-com1.png');
background-size: 100%;
transform: scale(4.5%);
width: 0;
height: 0;
margin-right: 30px;
}
/*
BODY
*/
.twt .text{
font-size: 1.2em;
margin: 5px 0.5em;
}
.twt .text p{
margin-bottom: 1em;
}
.twt .text::after{
display: block;
background-color:currentColor;
opacity: 25%;
height: 1.5px;
content: "";
margin: 15px 0 0 0;
}
.twt .timestamp {
opacity: 60%;
font-size: small;
margin: 0.8em auto 0 0.5em;
}
/*
FOOTER
*/
.twt table {
table-layout: fixed;
width: 100%;
opacity: 70%;
font-size: small;
margin: 10px auto 0px auto;
font-weight: bold;
}
.twt table:hover{
background-color: none;
}
.twt td{
text-align: center;
}
.twt td p{
display: inline-block;
padding: 0 0 0 25px;
width: min-content;
}
.reply-twt td{
text-align: left;
}
.twt table p::before{
float: left;
width: 0px;
height: 0px;
margin-top: 0px;
margin-left: -25px;
transform: scale(50%);
margin-bottom: 16px;
}
.twt table .reply p::before{
content: url("https://images.squidge.org/images/2023/12/09/replies.png");
}
/*the retweets a different size from the rest, who knows why*/
.twt table .retweet p::before{
content: url("https://images.squidge.org/images/2023/12/09/retweets.png");
margin-left: -29px;
margin-bottom: 17px;
transform: scale(42%);
}
.twt table .like p::before{
content: url("https://images.squidge.org/images/2023/12/09/likes.png");
}
/*
REPLY
*/
.reply-twt .icon-div {
display: table-cell;
width: 50px;
vertical-align: top;
}
.reply-twt .icon-div img{
display: table-cell;
margin: 0 1vw;
width: 50px;
height: 50px;
border-radius: 50%;
vertical-align: top;
}
.reply-twt .reply-body {
display: table-cell;
padding-left: 2vw;
text-overflow:ellipsis;
}
.twt .reply-to{
margin: 3px 0;
font-size: 0.9em;
opacity: 70%;
}
.twt .handle-link {
color: #1DA1F2;
}
.twt .handle-link:hover {
text-decoration: underline;
}
.reply-twt .reply-body .text{
margin: 0.5em auto;
}
.reply-twt .reply-body .text::after{
display: none;
content: "";
}
.twt .reply-body::before{
/*oh no not float*/
float: right;
content: url('https://images.squidge.org/images/2023/12/16/ellipsis-svgrepo-com1.png');
background-size: 100%;
transform: scale(4.5%);
width: 0;
height: 0;
margin-right: 30px;
margin-top: -5px;
}
/*
QUOTE TWEET
*/
.twt .quote-div {
line-height: 1;
padding: 5px 1vw;
border: 2px solid #8484845d;
border-radius: 10px;
margin-top: 0.3em;
}
.reply-twt .quote-div .icon-div{
width: auto;
}
.twt .quote-div .header{
display: block;
text-wrap:nowrap;
overflow: hidden;
}
.twt .quote-div .header div, .twt .quote-div .header p{
display: inline-block;
margin: 0;
padding: 0;
}
.twt .quote-div p{
display: inline-block;
padding: 0;
margin: 0;
}
.twt .quote-div .icon-div img{
display: inline-block;
height: 30px;
width: 30px;
padding: 0;
margin: 0;
}
.twt .quote-div .name-handle-div{
padding-right: 1em;
}
/*get rid of the ellipsis in main and reply tweet*/
.twt .quote-div .header::after{ content: ""; }
/*
IMAGE
*/
.twt-image>img{
width: 96%;
display: block;
background-color: #c7c7c7;
border: 1px solid #c7c7c7;
border-radius: 10px;
margin: 1em auto;
overflow: hidden;
line-height: 0;
}
/*Polls*/
.twt .poll ul{
margin: 2px auto;
}
.twt .poll li{
list-style-type: none none;
margin-block-start: 0em;
margin-inline-end: 0;
margin-block-end: 0em;
margin-inline-start: 0em;
display: block;
color: rgba(0, 172, 240, 0.89);
font-weight: bold;
font-size: 0.95em;
border: 1.2px solid rgba(0, 172, 240, 0.89);
border-radius: 25px;
margin: 5px 0.5vw;
text-align: center;
padding: 5px 5px 5px 5px;
}
.twt .answered li{
background-color: #84848400;
border: none;
border-radius: 5px;
text-align: left;
color: unset;
font-weight: normal;
padding-left: 2em;
overflow: hidden;
text-wrap: nowrap;
}
.twt .poll .winner{
background-color: #1DA1F2;
}
.twt .answered .percent--1{
background: linear-gradient(90deg, #9babb956 0%, #9babb956 50%, rgb(0,0,0,0) 0%, rgb(0,0,0,0) 100%);
}
.twt .answered .percent--1-winner{
background: linear-gradient(90deg, #1da0f29b 0%, #1DA1F29b 50%, rgb(0,0,0,0) 0%, rgb(0,0,0,0) 100%);
}
.twt .answered .percent--2{
background: linear-gradient(90deg, #9babb956 0%, #9babb956 20%, rgb(0,0,0,0) 0%, rgb(0,0,0,0) 100%);
}
.twt .answered .percent--3{
background: linear-gradient(90deg, #9babb956 0%, #9babb956 30%, rgb(0,0,0,0) 0%, rgb(0,0,0,0) 100%);
}
.twt .answered .percent--4{
background: linear-gradient(90deg, #717d8826 0%, #9babb956 10%, rgb(0,0,0,0) 0%, rgb(0,0,0,0) 100%);
}
.twt .poll .poll-info{
display: block;
border: none;
text-align:justify;
background-color: unset;
color: currentColor;
opacity: 70%;
font-weight: normal;
font-size: smaller;
padding-left: 15px;
margin: 0;
}
.twt .poll img{
display: inline-block;
vertical-align: middle;
height: 1.2em;
width: 1.2em;
margin: -5px auto 0 auto;
}
.twt .poll .percent--text{
float: right;
font-size: 0.9em;
overflow: hidden;
text-wrap: nowrap;
}
