compacted into a single js file! 📦

This commit is contained in:
mellodoot 2023-03-18 03:14:49 +00:00
parent 968339a8ea
commit 7b90125f44
5 changed files with 113 additions and 54 deletions

View file

@ -1,20 +1,23 @@
# progressive pride flag! 🌈 # progressive pride flag! 🌈
## made with ❤ by mellodoot!
a lovely little pride flag made in vector, and optimised to be nice and lightweight! ## made with ❤ by mellodoot
it tucks into the top-left or top-right corner of any website you drop it on, and you're free to link it to whichever lgbt-supporting site you like :) a lovely little pride flag made in svg, loaded with js, and optimised to be nice and lightweight!
it tucks into the top-right corner of any website you drop it on, and you're free to link it to whichever lgbt-supporting site you like :)
![progressive pride flag](pridetriangle.svg) ![progressive pride flag](pridetriangle.svg)
this flag is currently in use over at my own website, [mellodoot.com](https://mellodoot.com)! feel free to check it out if you'd like to see it in action! this flag is currently in use over at my own website, [mellodoot.com](https://mellodoot.com)! feel free to check it out if you'd like to see it in action!
### how do I put this in the top-right of my website? ## how do I use this on my own website?
simple! just add `right` as an attribute to the surrounding `<a>` tag! the css stylesheet will handle the rest :)
simple! just slap this code into your html document, and the js file will be automagically loaded into your site, generating your flag!
**example:**
```html ```html
<a id="pride-triangle" ... right> <script type="text/javascript" src="https://www.mellodoot.com/js/pridetriangle.js" defer></script>
``` ```
...or copy the code from `pridetriangle.js` and drop it into your own self-hosted file. up to you!
have fun spreading the gay! 🌈 have fun spreading the gay! 🌈

View file

@ -1,7 +0,0 @@
<!-- drop this in the <head> of your site! -->
<link rel="stylesheet" href="pridetriangle.css">
<!-- drop this...anywhere else! -->
<a id="pride-triangle" href="https://github.com/mellodoot/prideflag/" target="_blank">
<img src="pridetriangle.svg" alt="Progressive Pride Flag" />
</a>

View file

@ -1,27 +0,0 @@
#pride-triangle img {
position: fixed;
top: 0;
left: 0;
width: 120px;
transform-origin: 0% 0%;
transition: transform .5s cubic-bezier(.32,1.63,.41,1.01);
z-index: 100;
}
#pride-triangle[right] img {
left: initial;
right: -120px;
rotate: 90deg;
}
#pride-triangle img:hover {
transform: scale(110%);
}
#pride-triangle img:active {
transform: scale(90%);
}
@media only screen and (max-width: 720px) {
#pride-triangle img {
width: 6rem;
right: -6rem;
}
}

89
pridetriangle.js Normal file
View file

@ -0,0 +1,89 @@
function create_path(id, d, fill) {
const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
path.setAttribute('id', id);
path.setAttribute('d', d);
path.setAttribute('style', `fill:${fill}`);
return path;
}
function create_rect(id, x, y, width, height, fill) {
const rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
rect.setAttribute('id', id);
rect.setAttribute('x', x);
rect.setAttribute('y', y);
rect.setAttribute('width', width);
rect.setAttribute('height', height);
rect.setAttribute('style', `fill:${fill}`);
return rect;
}
function create_svg() {
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg.setAttribute("viewBox", "0 0 120 120");
const title = document.createElementNS("http://www.w3.org/2000/svg", "title");
title.textContent = "Progressive Pride Flag";
svg.appendChild(title);
svg.appendChild(create_path("red", "M40,0 H0 L20,20 Z", "#d20605"));
svg.appendChild(create_path("orange", "M80,0 H40 L20,20 L40,40 Z", "#ef9c00"));
svg.appendChild(create_path("yellow", "M120,0 H80 L40,40 L60,60 Z", "#e5fe02"));
svg.appendChild(create_path("green", "M120,40 V0 L60,60 L80,80 Z", "#09be01"));
svg.appendChild(create_path("blue", "M120,80 V40 L80,80 L100,100 Z", "#081a9a"));
svg.appendChild(create_path("purple", "M120,80 L100,100 L120,120 Z", "#76008a"));
svg.appendChild(create_rect("black", "70", "0", "50", "50", "#010101"));
svg.appendChild(create_rect("brown", "80", "0", "40", "40", "#603814"));
svg.appendChild(create_rect("lightblue", "90", "0", "30", "30", "#73d6ed"));
svg.appendChild(create_rect("pink", "100", "0", "20", "20", "#ffafc8"));
svg.appendChild(create_rect("white", "110", "0", "10", "10", "#ffffff"));
return svg;
}
function create_triangle() {
const link = document.createElement("a");
link.id = "pride-triangle";
link.href = "https://github.com/mellodoot/prideflag";
link.target = "_blank";
const triangle = create_svg();
triangle.style.position = "fixed";
triangle.style.top = "0";
triangle.style.right = "0";
triangle.style.width = "120px";
triangle.style.transformOrigin = "100% 0%";
triangle.style.transition = "transform .5s cubic-bezier(.32,1.63,.41,1.01)";
triangle.style.zIndex = "100";
triangle.onmouseenter = function () {
this.style.transform = "scale(110%)";
};
triangle.onmouseleave = function () {
this.style.transform = "initial";
};
triangle.onmousedown = function () {
this.style.transform = "scale(90%)";
};
triangle.onmouseup = function () {
this.style.transform = "initial";
};
window.onresize = function () {
if (window.innerWidth <= 720) {
triangle.style.width = "6rem";
triangle.style.right = "-6rem";
} else {
triangle.style.width = "120px";
triangle.style.right = "-120px";
}
}
link.appendChild(triangle);
return link;
}
const triangle = create_triangle();
document.body.appendChild(triangle);

View file

@ -1,13 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120" width="120" height="120">
<path id="red" d="M0,80 L20,100 L0,120 Z" style="fill:#d20605"/> <path id="red" d="M120,80 L100,100 L120,120 Z" style="fill:#d20605"/>
<path id="orange" d="M0,80 V40 L40,80 L20,100 Z" style="fill:#ef9c00"/> <path id="orange" d="M120,80 V40 L80,80 L100,100 Z" style="fill:#ef9c00"/>
<path id="yellow" d="M0,40 V0 L60,60 L40,80 Z" style="fill:#e5fe02"/> <path id="yellow" d="M120,40 V0 L60,60 L80,80 Z" style="fill:#e5fe02"/>
<path id="green" d="M0,0 H40 L80,40 L60,60 Z" style="fill:#09be01"/> <path id="green" d="M120,0 H80 L40,40 L60,60 Z" style="fill:#09be01"/>
<path id="blue" d="M40,0 H80 L100,20 L80,40 Z" style="fill:#081a9a"/> <path id="blue" d="M80,0 H40 L20,20 L40,40 Z" style="fill:#081a9a"/>
<path id="purple" d="M80,0 H120 L100,20 Z" style="fill:#76008a"/> <path id="purple" d="M40,0 H0 L20,20 Z" style="fill:#76008a"/>
<rect id="black" width="50" height="50" style="fill:#010101"/>
<rect id="brown" width="40" height="40" style="fill:#603814"/> <rect id="black" x="70" width="50" height="50" style="fill:#010101"/>
<rect id="lightblue" width="30" height="30" style="fill:#73d6ed"/> <rect id="brown" x="80" width="40" height="40" style="fill:#603814"/>
<rect id="pink" width="20" height="20" style="fill:#ffafc8"/> <rect id="lightblue" x="90" width="30" height="30" style="fill:#73d6ed"/>
<rect id="white" width="10" height="10" style="fill:#fff"/> <rect id="pink" x="100" width="20" height="20" style="fill:#ffafc8"/>
<rect id="white" x="110" width="10" height="10" style="fill:#fff"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 821 B

After

Width:  |  Height:  |  Size: 889 B