
A JavaScript-driven Twitter Generator to generate fake Twitter tweets that can be downloadable as images.
How to use it:
1. Build the HTML for the fake Twitter generator.
<div class="form">
<h2>Details</h2>
<div class="form-control upload">
<label for="avatar"
>Upload Profile Picture<input
type="file"
class="file"
id="avatar"
name="avatar"
accept="image/png, image/jpeg"
/></label>
<p id="file-name" class="file-name"></p>
<button id="reset" class="reset" type="button">Reset</button>
</div>
<div class="form-control">
<label for="name">Name</label>
<input type="text" id="name" />
<small><span class="count">0</span>/50 characters</small>
</div>
<div class="form-control">
<label for="username">Username</label>
<div class="username_input">@<input type="text" id="username" /></div>
<small
><span class="count">0</span>/15 characters. Only numbers, letters
or _ characters</small
>
</div>
<div class="form-control">
<label for="message">Message</label>
<textarea id="message" rows="3"></textarea>
<small><span class="count">0</span>/280 characters</small>
</div>
<div class="form-control">
<label for="time">Time</label>
<input type="text" id="time" />
<small>hh:mm format</small>
</div>
<div class="form-control">
<label for="date">Date</label>
<input type="text" id="date" />
<small>mmm dd, yyyy format</small>
</div>
<div class="form-control">
<label for="client">Client</label>
<input type="text" id="client" />
<small
>Twitter for iPhone, Twitter for Android, Twitter Web App,
etc.</small
>
</div>
<div class="form-control">
<label for="retweets">Retweets Count</label>
<input type="number" id="retweets" />
</div>
<div class="form-control">
<label for="quotes">Quote Tweets Count</label>
<input type="number" id="quotes" />
</div>
<div class="form-control">
<label for="likes">Likes Count</label>
<input type="number" id="likes" />
</div>
<div class="form-control">
<p>Theme</p>
<div class="group">
<label class="radio_container"
>Light
<input
type="radio"
name="theme_radio"
value="light"
checked="checked"
/>
<span class="radio_mark"></span>
</label>
<label class="radio_container"
>Dim
<input type="radio" name="theme_radio" value="dim" />
<span class="radio_mark"></span>
</label>
<label class="radio_container"
>Dark
<input type="radio" name="theme_radio" value="dark" />
<span class="radio_mark"></span>
</label>
</div>
</div>
<div class="form-control">
<p>Verified Badge</p>
<div class="group">
<label class="radio_container"
>Show
<input type="radio" name="verified_radio" value="show" />
<span class="radio_mark"></span>
</label>
<label class="radio_container"
>Hide
<input
type="radio"
name="verified_radio"
value="hide"
checked="checked"
/>
<span class="radio_mark"></span>
</label>
</div>
</div>
</div>
<div class="tweet-desk">
<h2>Preview</h2>
<div id="tweet_box" class="tweet_box">
<div id="tweet" class="tweet">
<div class="head">
<div class="title">
<img
id="tweet_avatar"
src="./assets/silhoutte.png"
alt="avatar"
width="48"
height="48"
/>
<div class="text">
<p>
<span id="tweet_name">Name</span>
<svg
xmlns="http://www.w3.org/2000/svg"
id="tweet_verified"
class="verified hide"
width="18"
height="18"
viewBox="0 0 24 24"
fill="currentColor"
>
<g>
<path
d="M22.5 12.5c0-1.58-.875-2.95-2.148-3.6.154-.435.238-.905.238-1.4 0-2.21-1.71-3.998-3.818-3.998-.47 0-.92.084-1.336.25C14.818 2.415 13.51 1.5 12 1.5s-2.816.917-3.437 2.25c-.415-.165-.866-.25-1.336-.25-2.11 0-3.818 1.79-3.818 4 0 .494.083.964.237 1.4-1.272.65-2.147 2.018-2.147 3.6 0 1.495.782 2.798 1.942 3.486-.02.17-.032.34-.032.514 0 2.21 1.708 4 3.818 4 .47 0 .92-.086 1.335-.25.62 1.334 1.926 2.25 3.437 2.25 1.512 0 2.818-.916 3.437-2.25.415.163.865.248 1.336.248 2.11 0 3.818-1.79 3.818-4 0-.174-.012-.344-.033-.513 1.158-.687 1.943-1.99 1.943-3.484zm-6.616-3.334l-4.334 6.5c-.145.217-.382.334-.625.334-.143 0-.288-.04-.416-.126l-.115-.094-2.415-2.415c-.293-.293-.293-.768 0-1.06s.768-.294 1.06 0l1.77 1.767 3.825-5.74c.23-.345.696-.436 1.04-.207.346.23.44.696.21 1.04z"
></path>
</g>
</svg>
</p>
<p>@<span id="tweet_username">username</span></p>
</div>
</div>
<div class="dots">
<svg
xmlns="http://www.w3.org/2000/svg"
width="19"
height="19"
viewBox="0 0 24 24"
fill="currentColor"
>
<g>
<circle cx="5" cy="12" r="2"></circle>
<circle cx="12" cy="12" r="2"></circle>
<circle cx="19" cy="12" r="2"></circle>
</g>
</svg>
</div>
</div>
<div class="content">
<div id="tweet_message" class="message">
Generate convincing fake tweet images
</div>
<div class="tweet_info">
<div id="tweet_time">4:38 PM</div>
·
<div id="tweet_date">Jul 7, 2021</div>
·
<div id="tweet_client" class="tweet_client">
Twitter Web App
</div>
</div>
</div>
<div class="stats">
<div class="stat">
<span id="tweet_retweets" class="count">96</span> Retweets
</div>
<div class="stat">
<span id="tweet_quotes" class="count">88</span> Quote Tweets
</div>
<div class="stat">
<span id="tweet_likes" class="count">153</span> Likes
</div>
</div>
<div class="tail">
<svg
xmlns="http://www.w3.org/2000/svg"
width="22"
height="22"
viewBox="0 0 24 24"
fill="currentColor"
>
<g>
<path
d="M14.046 2.242l-4.148-.01h-.002c-4.374 0-7.8 3.427-7.8 7.802 0 4.098 3.186 7.206 7.465 7.37v3.828c0 .108.044.286.12.403.142.225.384.347.632.347.138 0 .277-.038.402-.118.264-.168 6.473-4.14 8.088-5.506 1.902-1.61 3.04-3.97 3.043-6.312v-.017c-.006-4.367-3.43-7.787-7.8-7.788zm3.787 12.972c-1.134.96-4.862 3.405-6.772 4.643V16.67c0-.414-.335-.75-.75-.75h-.396c-3.66 0-6.318-2.476-6.318-5.886 0-3.534 2.768-6.302 6.3-6.302l4.147.01h.002c3.532 0 6.3 2.766 6.302 6.296-.003 1.91-.942 3.844-2.514 5.176z"
></path>
</g>
</svg>
<svg
xmlns="http://www.w3.org/2000/svg"
width="22"
height="22"
viewBox="0 0 24 24"
fill="currentColor"
>
<g>
<path
d="M23.77 15.67c-.292-.293-.767-.293-1.06 0l-2.22 2.22V7.65c0-2.068-1.683-3.75-3.75-3.75h-5.85c-.414 0-.75.336-.75.75s.336.75.75.75h5.85c1.24 0 2.25 1.01 2.25 2.25v10.24l-2.22-2.22c-.293-.293-.768-.293-1.06 0s-.294.768 0 1.06l3.5 3.5c.145.147.337.22.53.22s.383-.072.53-.22l3.5-3.5c.294-.292.294-.767 0-1.06zm-10.66 3.28H7.26c-1.24 0-2.25-1.01-2.25-2.25V6.46l2.22 2.22c.148.147.34.22.532.22s.384-.073.53-.22c.293-.293.293-.768 0-1.06l-3.5-3.5c-.293-.294-.768-.294-1.06 0l-3.5 3.5c-.294.292-.294.767 0 1.06s.767.293 1.06 0l2.22-2.22V16.7c0 2.068 1.683 3.75 3.75 3.75h5.85c.414 0 .75-.336.75-.75s-.337-.75-.75-.75z"
></path>
</g>
</svg>
<svg
xmlns="http://www.w3.org/2000/svg"
width="22"
height="22"
viewBox="0 0 24 24"
fill="currentColor"
>
<g>
<path
d="M12 21.638h-.014C9.403 21.59 1.95 14.856 1.95 8.478c0-3.064 2.525-5.754 5.403-5.754 2.29 0 3.83 1.58 4.646 2.73.814-1.148 2.354-2.73 4.645-2.73 2.88 0 5.404 2.69 5.404 5.755 0 6.376-7.454 13.11-10.037 13.157H12zM7.354 4.225c-2.08 0-3.903 1.988-3.903 4.255 0 5.74 7.034 11.596 8.55 11.658 1.518-.062 8.55-5.917 8.55-11.658 0-2.267-1.823-4.255-3.903-4.255-2.528 0-3.94 2.936-3.952 2.965-.23.562-1.156.562-1.387 0-.014-.03-1.425-2.965-3.954-2.965z"
></path>
</g>
</svg>
<svg
xmlns="http://www.w3.org/2000/svg"
width="22"
height="22"
viewBox="0 0 24 24"
fill="currentColor"
>
<g>
<path
d="M17.53 7.47l-5-5c-.293-.293-.768-.293-1.06 0l-5 5c-.294.293-.294.768 0 1.06s.767.294 1.06 0l3.72-3.72V15c0 .414.336.75.75.75s.75-.336.75-.75V4.81l3.72 3.72c.146.147.338.22.53.22s.384-.072.53-.22c.293-.293.293-.767 0-1.06z"
></path>
<path
d="M19.708 21.944H4.292C3.028 21.944 2 20.916 2 19.652V14c0-.414.336-.75.75-.75s.75.336.75.75v5.652c0 .437.355.792.792.792h15.416c.437 0 .792-.355.792-.792V14c0-.414.336-.75.75-.75s.75.336.75.75v5.652c0 1.264-1.028 2.292-2.292 2.292z"
></path>
</g>
</svg>
</div>
</div>
</div>
<button id="download" class="btn" type="button">Download</button>
</div>2. Load the necessary JavaScript and CSS files in the document and done.
<link rel="stylesheet" href="css/style.css" /> <script src="js/html2canvas.min.js"></script> <script src="js/app.js"></script>







