Been working hard.

main
NA 2023-09-11 18:15:44 +01:00
parent b78ac99797
commit 8a865a16e8
57 changed files with 1137 additions and 862 deletions

11
.vscode/settings.json vendored
View File

@ -2,6 +2,15 @@
"cSpell.words": [
"Adultwork",
"Fetlife",
"Lexi"
"Lexi",
"masterlist",
"webp"
],
"cSpell.ignoreWords": [
"anotherpage",
"gmtime",
"recaptcha",
"unselectable",
"webm"
]
}

View File

@ -4,26 +4,20 @@
<title>Template</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="/css/variables.css">
<link rel="stylesheet" href="/css/reset.css">
<link rel="stylesheet" href="/css/fonts.css">
<link rel="stylesheet" href="/css/header.css">
<link rel="stylesheet" href="/css/body.css">
<link rel="stylesheet" href="/css/footer.css">
<link rel="icon" href="/images/favicon.svg" sizes="any" type="image/svg+xml">
</head>
<body>
<div class="mobile_background"></div>
<header>
<a class="nav_bar_name" href="/index.html">Alexandra & Celeste</a>
<hr>
<nav>
<ul>
<li><a href="/lexi.html">Lexi</a></li>
<li><a href="/celeste.html">Celeste</a></li>
<li><a href="/book.html">Book</a></li>
<li><a href="/gallery/1.html">Gallery</a></li>
<li><a href="/content.html">Content</a></li>
</ul>
</nav>
</header>
<iframe src="/templates/header.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
<div class="container">
@ -67,31 +61,6 @@
</form>
</div>
<footer>
<div class="footer_links">
<ul>
<li>
<a href="https://fetlife.com/users/13275260" target="_blank">
<img src="/images/footer/fetlife.svg" alt="Fetlife" id="fetlife">
</a>
</li>
<li>
<a href="https://twitter.com/AlexandrCeleste" target="_blank">
<img src="/images/footer/twitter.svg" alt="Twitter" id="twitter">
</a>
</li>
<li>
<a href="mailto:Work@AlexandraCeleste.com" target="_blank">
<img src="/images/footer/email.svg" alt="Email" id="email">
</a>
</li>
<li>
<a href="https://www.adultwork.com/6816039" target="_blank">
<img src="/images/footer/adult_work.png" alt="Adultwork" id="adultwork">
</a>
</li>
</ul>
</div>
</footer>
<iframe src="/templates/footer.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
</body>
</html>

219
css/body.css Normal file
View File

@ -0,0 +1,219 @@
* {
text-decoration: none;
}
body {
overflow: auto;
}
.container {
max-width: var(--max_width);
background-color: #ffffffd0;
padding-top: 10px;
margin: 0 auto;
}
/* Start of background shit */
.mobile_background {
width: 100vw;
height: 100vh;
background-image: url(/images/background_0.5x.webp);
background-size: cover;
background-position: center;
position: fixed;
z-index: -1;
}
@media only screen and (min-width: 1050px) {
.mobile_background {
display: none;
}
body {
background-image: url(/images/background_0.5x.webp);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
background-position-y: 0px;
}
}
@media only screen and (min-width: 1921px) {
body {
background-image: url(/images/background_0.75x.webp);
}
}
@media only screen and (min-width: 2881px) {
body {
background-image: url(/images/background_1x.webp);
}
}
/* End of background shit */
/* Start of booking form */
.booking_form {
margin: 0 auto;
width: fit-content;
}
.booking_form select {
margin-bottom: 3px;
margin-left: 2px;
}
.booking_form input {
margin-bottom: 3px;
margin-left: 2px;
}
.booking_form textarea {
width: 97.8%;
height: 25vh;
resize: none;
}
.booking_form .recaptcha {
width: fit-content;
margin: 0 auto;
}
.booking_form button {
display: block;
margin: 0 auto;
}
/* End of booking form */
/* Start of services section */
.services_container {
text-align: center;
}
.services_grid {
margin: 0 auto;
display: flex;
flex-wrap: wrap;
justify-content: center;
height: fit-content;
}
.service {
width: fit-content;
text-align: center;
margin: 8px;
}
.service img {
border-radius: 50%;
width: 100px;
}
.service p {
text-align: center;
width: 120px;
border: 1px solid;
height: 35px;
}
.service p .service_arrow {
width: 10px;
transform: rotate(-90deg);
}
.service_dropdown_button {
background: none;
color: inherit;
border: none;
padding: 0;
font: inherit;
outline: inherit;
height: fit-content;
}
.service_dropdown_text {
display: none;
}
.service_dropdown_button:focus {
pointer-events: none;
}
.service_dropdown_button:focus > .service p .service_arrow {
transform: rotate(90deg);
}
.service_dropdown_empty {
display: none;
height: 32px;
}
.service_dropdown_button:focus > .service_dropdown_text {
display: block;
max-width: 122px;
justify-content: center;
text-align: center;
}
/* End of services section */
/* Start of gallery */
.gallery {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.gallery button {
padding: 0;
border: 0;
margin: 10px;
max-height: 150px;
}
.gallery button img {
max-height: 150px;
}
.gallery_video {
border: solid blue 3px;
}
.gallery_overlay {
background-color: #00000064;
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 100;
justify-content: center;
display: none;
}
.gallery_overlay img, video {
max-height: 95vh;
max-width: 95vw;
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
}
#gallery_nav_bar {
width: fit-content;
margin: 0 auto;
}
#gallery_nav_bar button {
margin: 10px 3px;
margin-bottom: 20px;
}
/* End of gallery */

9
css/fonts.css Normal file
View File

@ -0,0 +1,9 @@
@font-face {
src: url(/fonts/PetitFormalScript-Regular.ttf);
font-family: PetitFormalScript;
}
@font-face {
src: url(/fonts/Lato-LightItalic.ttf);
font-family: Lato-Light;
}

56
css/footer.css Normal file
View File

@ -0,0 +1,56 @@
/* Start of Footer */
footer {
max-width: var(--max_width);
padding-top: 10px;
padding-bottom: 10px;
width: 100%;
background-color: black;
margin: 0 auto;
}
footer .footer_links ul {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
footer .footer_links ul li {
list-style: none;
margin: 0 10px;
margin-bottom: 8px;
}
#fetlife {
width: 30px;
}
#twitter {
width: 40px;
}
#email {
width: 50px;
}
#adultwork {
height: 32px;
}
#mastodon {
height: 40px;
}
.mental_gallery_thanks {
margin: 0 auto;
text-align: center;
width: 300px;
border: 3px solid purple;
}
.mental_gallery_thanks img {
max-width:100%;
max-height:100%;
}
/* End of Footer */

91
css/header.css Normal file
View File

@ -0,0 +1,91 @@
/* Start of Navigation Bar */
header {
background-color: #feedff;
height: auto;
max-width: var(--max_width);
}
.nav_bar_name {
font-family: PetitFormalScript;
font-size: 30px;
color: #7f0264;
display: block;
text-align: center;
margin: 0 auto;
width: fit-content;
padding: 15px 0 0 0;
}
header hr {
border-top: 2px solid;
margin: 10px 30px 7px 30px;
}
header nav ul {
padding: 0;
display: flex;
justify-content: space-between;
list-style-type: none;
max-width: 590px;
padding-bottom: 6px;
margin: 0 auto;
}
header nav ul li {
display: inline-block;
list-style: none;
justify-content: space-between;
margin: 0 auto;
}
header nav ul li a {
font-family: Lato-Light;
font-weight: bold;
color: #b627dd;
font-size: 5.25vw;
}
@media only screen and (min-width: 450px) { /* Stops text getting too large on tablets & some phones */
header nav ul li a {
font-size: 25px;
}
}
@media only screen and (min-width: 1050px) {
header {
height: 82px;
margin: 0 auto;
}
header .nav_bar_name {
margin: 20px 0 0px 8%;
padding: 0 20px 0 0;
text-align: left;
line-height: 45px;
border-right: 2px solid;
float: left;
}
header hr {
display: none;
}
header nav ul {
margin: 0;
float: left;
}
header nav ul li {
display: inline-block;
list-style: none;
padding: 0 0 0 40px;
}
header nav ul li a {
line-height: 83px;
}
}
/* End of Navigation Bar */

104
css/reset.css Normal file
View File

@ -0,0 +1,104 @@
/*
html5doctor.com Reset Stylesheet
v1.6.1
Last Updated: 2010-09-17
Author: Richard Clark - http://richclarkdesign.com
Twitter: @rich_clark
*/
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
margin:0;
padding:0;
border:0;
outline:0;
font-size:100%;
vertical-align:baseline;
background:transparent;
}
body {
line-height:1;
}
article,aside,details,figcaption,figure,
footer,header,hgroup,menu,nav,section {
display:block;
}
nav ul {
list-style:none;
}
blockquote, q {
quotes:none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content:'';
content:none;
}
a {
margin:0;
padding:0;
font-size:100%;
vertical-align:baseline;
background:transparent;
}
/* change colours to suit your needs */
ins {
background-color:#ff9;
color:#000;
text-decoration:none;
}
/* change colours to suit your needs */
mark {
background-color:#ff9;
color:#000;
font-style:italic;
font-weight:bold;
}
del {
text-decoration: line-through;
}
abbr[title], dfn[title] {
border-bottom:1px dotted;
cursor:help;
}
table {
border-collapse:collapse;
border-spacing:0;
}
/* change border colour to suit your needs */
hr {
display:block;
height:1px;
border:0;
border-top:1px solid #cccccc;
margin:1em 0;
padding:0;
}
input, select {
vertical-align:middle;
}
/* End of Reset Stylesheet */

3
css/variables.css Normal file
View File

@ -0,0 +1,3 @@
:root { /* CSS variables */
--max_width: 1250px;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

42
gallery.html Normal file
View File

@ -0,0 +1,42 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Gallery</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/variables.css">
<link rel="stylesheet" href="/css/reset.css">
<link rel="stylesheet" href="/css/fonts.css">
<link rel="stylesheet" href="/css/header.css">
<link rel="stylesheet" href="/css/body.css">
<link rel="stylesheet" href="/css/footer.css">
<link rel="icon" href="/images/favicon.svg" sizes="any" type="image/svg+xml">
</head>
<body>
<div class="mobile_background"></div>
<iframe src="/templates/header.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
<div class="gallery_overlay" id="gallery_overlay">
<button id="close_overlay">X</button>
</div>
<div class="container">
<div class="gallery" id="gallery">
<noscript>
Sorry you need javascript enabled for this gallery to work. It doesn't track you. Promise.
<br>
The code is at <code>/js/gallery.js</code> if you want a read.
</noscript>
<script src="/js/gallery.js" type="text/javascript"></script>
</div>
<div id="gallery_nav_bar"></div>
</div>
<iframe src="/templates/footer.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
</body>
</html>

View File

@ -1,152 +0,0 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Gallery</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/style.css">
<link rel="icon" href="/images/favicon.svg" sizes="any" type="image/svg+xml">
</head>
<body> <style type="text/css">body:focus-within { overflow: hidden; }</style>
<div class="mobile_background"></div>
<header>
<a class="nav_bar_name" href="/index.html">Alexandra & Celeste</a>
<hr>
<nav>
<ul>
<li><a href="/lexi.html">Lexi</a></li>
<li><a href="/celeste.html">Celeste</a></li>
<li><a href="/book.html">Book</a></li>
<li><a href="/gallery/1.html">Gallery</a></li>
<li><a href="/content.html">Content</a></li>
</ul>
</nav>
</header>
<div class="container">
<div class="gallery">
<span>X</span>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7872.webp');">
<img src="/gallery/1/thumbnails/_DSC7872.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7861.webp');">
<img src="/gallery/1/thumbnails/_DSC7861.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7850.webp');">
<img src="/gallery/1/thumbnails/_DSC7850.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7844.webp');">
<img src="/gallery/1/thumbnails/_DSC7844.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7843.webp');">
<img src="/gallery/1/thumbnails/_DSC7843.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7831.webp');">
<img src="/gallery/1/thumbnails/_DSC7831.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7822.webp');">
<img src="/gallery/1/thumbnails/_DSC7822.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7818.webp');">
<img src="/gallery/1/thumbnails/_DSC7818.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7805.webp');">
<img src="/gallery/1/thumbnails/_DSC7805.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7797.webp');">
<img src="/gallery/1/thumbnails/_DSC7797.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7792.webp');">
<img src="/gallery/1/thumbnails/_DSC7792.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/_DSC7789.webp');">
<img src="/gallery/1/thumbnails/_DSC7789.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/IMG_20220529_203931.webp');">
<img src="/gallery/1/thumbnails/IMG_20220529_203931.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/IMG_20220516_004052.webp');">
<img src="/gallery/1/thumbnails/IMG_20220516_004052.webp">
</button>
</div>
<div class="gallery_image">
<button class="gallery_image_button" style="background-image: url('/gallery/1/content/IMG_20220516_003606.webp');">
<img src="/gallery/1/thumbnails/IMG_20220516_003606.webp">
</button>
</div>
</div>
</div>
<footer>
<div class="footer_links">
<ul>
<li>
<a href="https://fetlife.com/users/13275260" target="_blank">
<img src="/images/footer/fetlife.svg" alt="Fetlife" id="fetlife">
</a>
</li>
<li>
<a href="https://twitter.com/AlexandrCeleste" target="_blank">
<img src="/images/footer/twitter.svg" alt="Twitter" id="twitter">
</a>
</li>
<li>
<a href="mailto:Work@AlexandraCeleste.com" target="_blank">
<img src="/images/footer/email.svg" alt="Email" id="email">
</a>
</li>
<li>
<a href="https://www.adultwork.com/6816039" target="_blank">
<img src="/images/footer/adult_work.png" alt="Adultwork" id="adultwork">
</a>
</li>
</ul>
</div>
</footer>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,78 @@
## INSTRUCTIONS:
## Place a webp thumbnail in add_new/thumbnails.
## and Place a webm or webp content in add_new/content.
## Then run this script.
## Thumbnails and content must match or this program will crash.
##
## Content warnings can be added as arguments separated by a space.
## This script requires pillow: pip install pillow
from PIL import Image
from datetime import datetime
import json
import shutil
import os
import sys
def write_json(new_data, filename='gallery/masterlist.json'):
with open(filename, 'r+') as file:
file_data = json.load(file) # Load existing data into dict.
file_data["data"].append(new_data) # Join new data with existing data.
file.seek(0) # Sets file's current position at offset.
json.dump(file_data, file, indent=4)
def find_content(filename, content_list):
i = 0
for content in content_list:
content_filename = content.split('.')[0]
if filename == content_filename:
return i
i+=1
add_new_content = "gallery/add_new/content/"
add_new_thumbnails = "gallery/add_new/thumbnails/"
gallery_content = "gallery/content/"
gallery_thumbnails = "gallery/thumbnails/"
## Get the content warnings (if any.)
try:
args = sys.argv[1]
except:
args = ""
content_list = os.listdir(add_new_content)
thumbnails_list = os.listdir(add_new_thumbnails)
for thumbnail in thumbnails_list:
# Check if the image is a webp
if thumbnail.split('.')[-1] != "webp":
print("Error: " + thumbnail + " Is not a webp image.")
continue
filename = thumbnail.split('.')[0]
content_index = find_content(filename, content_list)
if content_list[content_index].split('.')[-1] != "webp" and content_list[content_index].split('.')[-1] != "webm":
print("Error: " + content_list[content_index] + " Is not a webp or webm file.")
continue
data = {
'thumbnail_path' : gallery_thumbnails + thumbnail,
'content_path' : gallery_content + content_list[content_index],
'video' : False,
'content_warnings' : args,
'date_added' : datetime.now().strftime('%Y-%m-%d %H:%M:%S')
}
if content_list[content_index].split('.')[-1] == "webm":
data["video"] = True
write_json(data)
# Move the files from the add_new folder to gallery
shutil.move(add_new_content + content_list[content_index], gallery_content + content_list[content_index])
shutil.move(add_new_thumbnails + thumbnail, gallery_thumbnails + thumbnail)

View File

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 213 KiB

View File

Before

Width:  |  Height:  |  Size: 207 KiB

After

Width:  |  Height:  |  Size: 207 KiB

View File

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

View File

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 154 KiB

View File

Before

Width:  |  Height:  |  Size: 251 KiB

After

Width:  |  Height:  |  Size: 251 KiB

View File

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 190 KiB

View File

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

View File

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 164 KiB

View File

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 159 KiB

View File

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

View File

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 95 KiB

View File

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

88
gallery/masterlist.json Normal file
View File

@ -0,0 +1,88 @@
{
"data": [
{
"thumbnail_path": "gallery/thumbnails/_DSC7792.webp",
"content_path": "gallery/content/_DSC7792.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7797.webp",
"content_path": "gallery/content/_DSC7797.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7805.webp",
"content_path": "gallery/content/_DSC7805.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7818.webp",
"content_path": "gallery/content/_DSC7818.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7822.webp",
"content_path": "gallery/content/_DSC7822.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7831.webp",
"content_path": "gallery/content/_DSC7831.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7843.webp",
"content_path": "gallery/content/_DSC7843.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7844.webp",
"content_path": "gallery/content/_DSC7844.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7850.webp",
"content_path": "gallery/content/_DSC7850.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7861.webp",
"content_path": "gallery/content/_DSC7861.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7872.webp",
"content_path": "gallery/content/_DSC7872.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
},
{
"thumbnail_path": "gallery/thumbnails/_DSC7789.webp",
"content_path": "gallery/content/_DSC7789.webp",
"video": false,
"content_warnings": "",
"date_added": "2023-09-11 13:07:11"
}
]
}

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -4,61 +4,30 @@
<title>Alexandra & Celeste</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="/css/variables.css">
<link rel="stylesheet" href="/css/reset.css">
<link rel="stylesheet" href="/css/fonts.css">
<link rel="stylesheet" href="/css/header.css">
<link rel="stylesheet" href="/css/body.css">
<link rel="stylesheet" href="/css/footer.css">
<link rel="icon" href="/images/favicon.svg" sizes="any" type="image/svg+xml">
</head>
<body>
<div class="mobile_background"></div>
<header>
<a class="nav_bar_name" href="/index.html">Alexandra & Celeste</a>
<hr>
<nav>
<ul>
<li><a href="/lexi.html">Lexi</a></li>
<li><a href="/celeste.html">Celeste</a></li>
<li><a href="/book.html">Book</a></li>
<li><a href="/gallery/1.html">Gallery</a></li>
<li><a href="/content.html">Content</a></li>
</ul>
</nav>
</header>
<iframe src="/templates/header.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
<div class="container">
<div class="mental_gallery_thanks">
<a href="https://www.artstation.com/mental_foundry" target="_blank">
<img src="images/mentalgallery_small.webp">
<p>Wonderfull artwork made by Mental Gallery:<br>Click to view website.</p>
<p>Wonderful artwork made by Mental Gallery:<br>Click to view website.</p>
</a>
</div>
</div>
<footer>
<div class="footer_links">
<ul>
<li>
<a href="https://fetlife.com/users/13275260" target="_blank">
<img src="/images/footer/fetlife.svg" alt="Fetlife" id="fetlife">
</a>
</li>
<li>
<a href="https://twitter.com/AlexandrCeleste" target="_blank">
<img src="/images/footer/twitter.svg" alt="Twitter" id="twitter">
</a>
</li>
<li>
<a href="mailto:Work@AlexandraCeleste.com" target="_blank">
<img src="/images/footer/email.svg" alt="Email" id="email">
</a>
</li>
<li>
<a href="https://www.adultwork.com/6816039" target="_blank">
<img src="/images/footer/adult_work.png" alt="Adultwork" id="adultwork">
</a>
</li>
</ul>
</div>
</footer>
<iframe src="/templates/footer.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
</body>
</html>

View File

@ -10,7 +10,7 @@ if (captcha_label) {
captcha_html = '<p>' + captcha_label + '<br>';
}
captcha_html += '<iframe id="doom_captcha" src="doom_captcha.html?=' + '&countdown=' + document.currentScript.getAttribute('countdown') + '&enemies=' + captcha_enemies + '" style="width:300px;height:150px;border:2px red solid;"></iframe>';
captcha_html += '<iframe id="doom_captcha" src="/templates/doom_captcha.html?=' + '&countdown=' + document.currentScript.getAttribute('countdown') + '&enemies=' + captcha_enemies + '" style="width:300px;height:150px;border:2px red solid;"></iframe>';
if (captcha_label) {
captcha_html += '</p>';

223
js/gallery.js Normal file
View File

@ -0,0 +1,223 @@
generate_gallery();
setup_close_overlay();
function get_url_param(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
insert_url_param("page", 1);
}
function insert_url_param(key, value) { // Shamelessly stolen from: https://stackoverflow.com/a/487049
key = encodeURIComponent(key);
value = encodeURIComponent(value);
// kvp looks like ['key1=value1', 'key2=value2', ...]
var kvp = document.location.search.substring(1).split('&');
let i=0;
for(; i<kvp.length; i++){
if (kvp[i].startsWith(key + '=')) {
let pair = kvp[i].split('=');
pair[1] = value;
kvp[i] = pair.join('=');
break;
}
}
if(i >= kvp.length){
kvp[kvp.length] = [key,value].join('=');
}
// can return this or...
let params = kvp.join('&');
// reload page with new params
document.location.search = params;
}
async function get_masterlist() {
let response = await fetch('/gallery/masterlist.json');
let masterlist = await response.text();
masterlist = JSON.parse(masterlist);
return masterlist
}
function setup_close_overlay() {
let button = document.getElementById("close_overlay");
button.onclick = function(event){
document.getElementsByTagName("body")[0].style.overflow = "auto";
document.getElementById("gallery_overlay").style.display = "none";
let all_elements = document.getElementsByTagName("*");
for (var i = all_elements.length; i--;) { // Apparently iterating in reverse is slightly faster.
if (all_elements[i].id != "close_overlay") {
all_elements[i].removeAttribute("tabindex")
}
}
document.getElementById("temp").remove(); // Delete the element when done with it.
};
}
async function generate_gallery() {
let masterlist = await get_masterlist();
masterlist = masterlist.data.reverse(); // Reverse the json data since most recent content is appended.
let gallery = document.getElementsByClassName("gallery")[0];
const SMALL_SCREEN_IMAGE_COUNT = 24;
const LARGE_SCREEN_IMAGE_COUNT = 50;
let view_width = window.screen.width;
let count = 0
if (window.screen.width < 600) {
count = SMALL_SCREEN_IMAGE_COUNT;
} else {
count = LARGE_SCREEN_IMAGE_COUNT;
}
let chunked_masterlist = [];
for (let i = 0; i < masterlist.length; i+= count) {
chunked_masterlist.push(masterlist.slice(i, i+count));
}
let chunk_index = get_url_param("page") -1;
if (chunk_index < 0 || chunk_index >= chunked_masterlist.length || isNaN(chunk_index)) { // Avoid people trying to access page -39913 or some dumb shit;
insert_url_param("page", 1);
}
masterlist = chunked_masterlist[chunk_index];
// Populate the gallery with images n crap.
for (let i in masterlist) {
let thumbnail = document.createElement('img');
thumbnail.src=masterlist[i].thumbnail_path;
thumbnail.loading="lazy";
let button = document.createElement('button');
let content_path = masterlist[i].thumbnail_path.replace("/thumbnails/", "/content/");
if (masterlist[i].video) { // Replace with webp if a video.
content_path = content_path.replace(".webp", ".webm");
thumbnail.classList.add("gallery_video");
}
button.dataset.content_path = content_path;
thumbnail.dataset.content_path = content_path;
button.onclick = function(event){
content_path = event.target.dataset.content_path;
document.getElementsByTagName("body")[0].style.overflow = "hidden";
document.getElementById("gallery_overlay").style.display = "block";
let all_elements = document.getElementsByTagName("*");
for (var i = all_elements.length; i--;) { // Apparently iterating in reverse is slightly faster.
if (all_elements[i].id != "close_overlay") {
all_elements[i].setAttribute("tabindex", "-1");
}
}
if (content_path.includes(".webm")) {
let video = document.createElement('video');
video.muted = true;
video.src = content_path;
video.controls = true;
video.id = "temp";
document.getElementById("gallery_overlay").appendChild(video);
} else {
let image = document.createElement('img');
image.src = content_path;
image.id = "temp";
document.getElementById("gallery_overlay").appendChild(image);
}
};
button.appendChild(thumbnail);
gallery.appendChild(button);
}
const NAV_BAR_RANGE = 3;
let forward = 0;
let backward = 0;
// Generate the nav bar.
for (let i = 0; i <= NAV_BAR_RANGE; i+=1) {
if (chunk_index +i == chunked_masterlist.length) {
break;
}
forward =i;
}
for (let i = 0; i <= NAV_BAR_RANGE; i+=1) {
if (chunk_index -i < 0) {
break;
}
backward =i;
}
let buttons = []
if (backward > 0) {
let beginning = document.createElement('button');
beginning.onclick = function(){ insert_url_param("page", 1) };
beginning.innerText = "<<";
buttons.push(beginning);
let previous = document.createElement('button');
previous.onclick=function(){ insert_url_param("page", chunk_index) };
previous.innerText = "<";
buttons.push(previous);
for (i = chunk_index - backward; i < chunk_index; i+=1) {
let button = document.createElement('button');
let n = i+1
button.onclick=function(){ insert_url_param("page", n) };
button.innerText = i+1;
buttons.push(button);
}
}
let current = document.createElement('button');
current.innerText = chunk_index +1;
current.disabled = true;
buttons.push(current);
if (forward > 0) {
for (i = chunk_index+1; i <= chunk_index + forward; i+=1) {
let button = document.createElement('button');
let n = i+1
button.onclick=function(){ insert_url_param("page", n) };
button.innerText = i+1;
buttons.push(button);
}
let next = document.createElement('button');
next.onclick=function(){ insert_url_param("page", chunk_index+2) };
next.innerText = ">";
buttons.push(next);
let end = document.createElement('button');
end.onclick=function(){ insert_url_param("page", chunked_masterlist.length) };
end.innerText = ">>";
buttons.push(end);
}
for (i in buttons) {
document.getElementById("gallery_nav_bar").appendChild(buttons[i]);
}
}

View File

@ -4,26 +4,20 @@
<title>Lexi Whore</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="/css/variables.css">
<link rel="stylesheet" href="/css/reset.css">
<link rel="stylesheet" href="/css/fonts.css">
<link rel="stylesheet" href="/css/header.css">
<link rel="stylesheet" href="/css/body.css">
<link rel="stylesheet" href="/css/footer.css">
<link rel="icon" href="/images/favicon.svg" sizes="any" type="image/svg+xml">
</head>
<body>
<div class="mobile_background"></div>
<header>
<a class="nav_bar_name" href="/index.html">Alexandra & Celeste</a>
<hr>
<nav>
<ul>
<li><a href="/lexi.html">Lexi</a></li>
<li><a href="/celeste.html">Celeste</a></li>
<li><a href="/book.html">Book</a></li>
<li><a href="/gallery/1.html">Gallery</a></li>
<li><a href="/content.html">Content</a></li>
</ul>
</nav>
</header>
<iframe src="/templates/header.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
<div class="container">
<div class="services_container">
@ -50,31 +44,6 @@
</div>
</div>
<footer>
<div class="footer_links">
<ul>
<li>
<a href="https://fetlife.com/users/13275260" target="_blank">
<img src="/images/footer/fetlife.svg" alt="Fetlife" id="fetlife">
</a>
</li>
<li>
<a href="https://twitter.com/AlexandrCeleste" target="_blank">
<img src="/images/footer/twitter.svg" alt="Twitter" id="twitter">
</a>
</li>
<li>
<a href="mailto:Work@AlexandraCeleste.com" target="_blank">
<img src="/images/footer/email.svg" alt="Email" id="email">
</a>
</li>
<li>
<a href="https://www.adultwork.com/6816039" target="_blank">
<img src="/images/footer/adult_work.png" alt="Adultwork" id="adultwork">
</a>
</li>
</ul>
</div>
</footer>
<iframe src="/templates/footer.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
</body>
</html>

484
style.css
View File

@ -1,484 +0,0 @@
/*
html5doctor.com Reset Stylesheet
v1.6.1
Last Updated: 2010-09-17
Author: Richard Clark - http://richclarkdesign.com
Twitter: @rich_clark
*/
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
margin:0;
padding:0;
border:0;
outline:0;
font-size:100%;
vertical-align:baseline;
background:transparent;
}
body {
line-height:1;
}
article,aside,details,figcaption,figure,
footer,header,hgroup,menu,nav,section {
display:block;
}
nav ul {
list-style:none;
}
blockquote, q {
quotes:none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content:'';
content:none;
}
a {
margin:0;
padding:0;
font-size:100%;
vertical-align:baseline;
background:transparent;
}
/* change colours to suit your needs */
ins {
background-color:#ff9;
color:#000;
text-decoration:none;
}
/* change colours to suit your needs */
mark {
background-color:#ff9;
color:#000;
font-style:italic;
font-weight:bold;
}
del {
text-decoration: line-through;
}
abbr[title], dfn[title] {
border-bottom:1px dotted;
cursor:help;
}
table {
border-collapse:collapse;
border-spacing:0;
}
/* change border colour to suit your needs */
hr {
display:block;
height:1px;
border:0;
border-top:1px solid #cccccc;
margin:1em 0;
padding:0;
}
input, select {
vertical-align:middle;
}
/* End of Reset Stylesheet */
:root { /* CSS variables */
--max_width: 1250px;
}
@font-face {
src: url(fonts/PetitFormalScript-Regular.ttf);
font-family: PetitFormalScript;
}
@font-face {
src: url(fonts/Lato-LightItalic.ttf);
font-family: Lato-Light;
}
* {
text-decoration: none;
}
body {
overflow: auto;
}
.container {
max-width: var(--max_width);
background-color: #ffffffd0;
padding-top: 10px;
margin: 0 auto;
}
/* Start of background shit */
.mobile_background {
width: 100vw;
height: 100vh;
background-image: url(images/background_0.5x.webp);
background-size: cover;
background-position: center;
position: fixed;
z-index: -1;
}
@media only screen and (min-width: 1050px) {
.mobile_background {
display: none;
}
body {
background-image: url(images/background_0.5x.webp);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
background-position-y: 0px;
}
}
@media only screen and (min-width: 1921px) {
body {
background-image: url(images/background_0.75x.webp);
}
}
@media only screen and (min-width: 2881px) {
body {
background-image: url(images/background_1x.webp);
}
}
/* End of background shit */
/* Start of Navigation Bar */
header {
background-color: #feedff;
height: auto;
max-width: var(--max_width);
}
.nav_bar_name {
font-family: PetitFormalScript;
font-size: 30px;
color: #7f0264;
display: block;
text-align: center;
margin: 0 auto;
width: fit-content;
padding: 15px 0 0 0;
}
header hr {
border-top: 2px solid;
margin: 10px 30px 7px 30px;
}
header nav ul {
padding: 0;
display: flex;
justify-content: space-between;
list-style-type: none;
max-width: 590px;
padding-bottom: 6px;
margin: 0 auto;
}
header nav ul li {
display: inline-block;
list-style: none;
justify-content: space-between;
margin: 0 auto;
}
header nav ul li a {
font-family: Lato-Light;
font-weight: bold;
color: #b627dd;
font-size: 5.25vw;
}
@media only screen and (min-width: 450px) { /* Stops text getting too large on tablets & some phones */
header nav ul li a {
font-size: 25px;
}
}
@media only screen and (min-width: 1050px) {
header {
height: 82px;
margin: 0 auto;
}
header .nav_bar_name {
margin: 20px 0 0px 8%;
padding: 0 20px 0 0;
text-align: left;
line-height: 45px;
border-right: 2px solid;
float: left;
}
header hr {
display: none;
}
header nav ul {
margin: 0;
float: left;
}
header nav ul li {
display: inline-block;
list-style: none;
padding: 0 0 0 40px;
}
header nav ul li a {
line-height: 83px;
}
}
/* End of Navigation Bar */
/* Start of Footer */
footer {
max-width: var(--max_width);
padding-top: 10px;
padding-bottom: 10px;
width: 100%;
background-color: black;
margin: 0 auto;
}
footer .footer_links ul {
display: flex;
justify-content: center;
}
footer .footer_links ul li {
list-style: none;
margin: 0 10px;
}
#fetlife {
width: 30px;
}
#twitter {
width: 40px;
}
#email {
width: 50px;
}
#adultwork {
height: 32px;
}
.mental_gallery_thanks {
margin: 0 auto;
text-align: center;
width: 300px;
border: 3px solid purple;
}
.mental_gallery_thanks img {
max-width:100%;
max-height:100%;
}
/* End of Footer */
/* Start of booking form */
.booking_form {
margin: 0 auto;
width: fit-content;
}
.booking_form select {
margin-bottom: 3px;
margin-left: 2px;
}
.booking_form input {
margin-bottom: 3px;
margin-left: 2px;
}
.booking_form textarea {
width: 97.8%;
height: 25vh;
resize: none;
}
.booking_form .recaptcha {
width: fit-content;
margin: 0 auto;
}
.booking_form button {
display: block;
margin: 0 auto;
}
/* End of booking form */
/* Start of services section */
.services_container {
text-align: center;
}
.services_grid {
margin: 0 auto;
display: flex;
flex-wrap: wrap;
justify-content: center;
height: fit-content;
}
.service {
width: fit-content;
text-align: center;
margin: 8px;
}
.service img {
border-radius: 50%;
width: 100px;
}
.service p {
text-align: center;
width: 120px;
border: 1px solid;
height: 35px;
}
.service p .service_arrow {
width: 10px;
transform: rotate(-90deg);
}
.service_dropdown_button {
background: none;
color: inherit;
border: none;
padding: 0;
font: inherit;
outline: inherit;
height: fit-content;
}
.service_dropdown_text {
display: none;
}
.service_dropdown_button:focus {
pointer-events: none;
}
.service_dropdown_button:focus > .service p .service_arrow {
transform: rotate(90deg);
}
.service_dropdown_empty {
display: none;
height: 32px;
}
.service_dropdown_button:focus > .service_dropdown_text {
display: block;
max-width: 122px;
justify-content: center;
text-align: center;
}
/* End of services section */
/* Start of gallery */
.gallery {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.gallery span {
display: none;
}
.gallery_image_button {
width: fit-content;
height: fit-content;
margin: 10px;
background: none;
color: inherit;
border: none;
padding: 0px;
font: inherit;
outline: inherit;
cursor: pointer;
}
.gallery_image_button img {
max-width: 160px;
max-height: 160px;
}
.gallery_image_button:focus {
position: fixed;
left: 0; top: 0;
margin: 0;
width: 100vw;
height: 100vh;
cursor: default;
background-color: #000000d0;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
}
.gallery_image_button:focus > img {
display: none;
}
.gallery:focus-within > span {
position: fixed;
left: 0; top: 0;
z-index: +1;
color: palevioletred;
font-size: 32px;
cursor: pointer;
display: block;
padding: 20px;
}
/* End of gallery */

View File

@ -1,59 +0,0 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Template</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/style.css">
<link rel="icon" href="/images/favicon.svg" sizes="any" type="image/svg+xml">
</head>
<body>
<div class="mobile_background"></div>
<header>
<a class="nav_bar_name" href="/index.html">Alexandra & Celeste</a>
<hr>
<nav>
<ul>
<li><a href="/lexi.html">Lexi</a></li>
<li><a href="/celeste.html">Celeste</a></li>
<li><a href="/book.html">Book</a></li>
<li><a href="/gallery/1.html">Gallery</a></li>
<li><a href="/content.html">Content</a></li>
</ul>
</nav>
</header>
<div class="container">
</div>
<footer>
<div class="footer_links">
<ul>
<li>
<a href="https://fetlife.com/users/13275260" target="_blank">
<img src="/images/footer/fetlife.svg" alt="Fetlife" id="fetlife">
</a>
</li>
<li>
<a href="https://twitter.com/AlexandrCeleste" target="_blank">
<img src="/images/footer/twitter.svg" alt="Twitter" id="twitter">
</a>
</li>
<li>
<a href="mailto:Work@AlexandraCeleste.com" target="_blank">
<img src="/images/footer/email.svg" alt="Email" id="email">
</a>
</li>
<li>
<a href="https://www.adultwork.com/6816039" target="_blank">
<img src="/images/footer/adult_work.png" alt="Adultwork" id="adultwork">
</a>
</li>
</ul>
</div>
</footer>
</body>
</html>

View File

@ -8,28 +8,28 @@
<link rel="shortcut icon" href="favicon.ico"/>
<link rel="prefetch" href="doom_assets/pisga0.png" />
<link rel="prefetch" href="doom_assets/shotgun.gif" />
<link rel="prefetch" href="doom_assets/sound/music2.mp3" />
<link rel="prefetch" href="doom_assets/sound/dspistol.wav" />
<link rel="prefetch" href="doom_assets/sound/dsdshtgn.wav" />
<link rel="prefetch" href="doom_assets/sound/ok.mp3" />
<link rel="prefetch" href="/doom_assets/pisga0.png" />
<link rel="prefetch" href="/doom_assets/shotgun.gif" />
<link rel="prefetch" href="/doom_assets/sound/music2.mp3" />
<link rel="prefetch" href="/doom_assets/sound/dspistol.wav" />
<link rel="prefetch" href="/doom_assets/sound/dsdshtgn.wav" />
<link rel="prefetch" href="/doom_assets/sound/ok.mp3" />
<link rel="prefetch" href="doom_assets/sound/1_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/2_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/3_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/4_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/5_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/6_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/1_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/2_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/3_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/4_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/5_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/6_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/1_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/2_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/3_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/4_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/5_kill.wav" />
<link rel="prefetch" href="doom_assets/sound/6_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/1_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/2_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/3_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/4_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/5_kill.wav" />
<link rel="prefetch" href="/doom_assets/sound/6_kill.wav" />
<link rel="stylesheet" href="doom_captcha.css">
<link rel="stylesheet" href="/css/doom_captcha.css">
</head>
<body>
@ -58,14 +58,14 @@
body {
overflow-x: hidden;
background: black url('doom_assets/backgrounds/1.png');
background: black url('/doom_assets/backgrounds/1.png');
background-size: cover;
background-position: top center;
touch-action: pan-x pan-y;
background-repeat:no-repeat;
width: 100%;
height: 100%;
cursor: url(doom_assets/cursor2.png) 16 16, default !important;
cursor: url(/doom_assets/cursor2.png) 16 16, default !important;
}
button{background:none;border:1px #fff solid;color:#fff;cursor:pointer;margin-top:17px;}
@ -75,11 +75,11 @@ button{background:none;border:1px #fff solid;color:#fff;cursor:pointer;margin-to
#btn_again{display:block;margin-top:0;border:0;}
#cheatcode {
cursor: url(doom_assets/cursor2.png), default !important;
cursor: url(/doom_assets/cursor2.png), default !important;
}
.enemy{
cursor: url(doom_assets/cursor3.png) 16 16, default!important;
cursor: url(/doom_assets/cursor3.png) 16 16, default!important;
top:50%;
margin-top:-57px;
background-repeat:no-repeat;
@ -117,7 +117,7 @@ button{background:none;border:1px #fff solid;color:#fff;cursor:pointer;margin-to
<div id="game" style="position:fixed;height:100%;width:100%;left:0px;top:0px;" onclick="handleMiss(event, this);">
<div class="enemy" style="display:none;z-index:1;position:fixed;left:120px;"></div>
<div id="gun" style="pointer-events:none;z-index:2;background:url('doom_assets/pisga0.png');background-position:left bottom;background-repeat:no-repeat;width:100%;height:100px;position:fixed;left:0;bottom:-10px;"></div>
<div id="gun" style="pointer-events:none;z-index:2;background:url('/doom_assets/pisga0.png');background-position:left bottom;background-repeat:no-repeat;width:100%;height:100px;position:fixed;left:0;bottom:-10px;"></div>
<table id="countdown" cellpadding="0" cellspacing="0" border="0" style="display:none;z-index:2;position:fixed;left:0;bottom:0;width:100%;height:7px;"><td id="percent" bgcolor="red" width="100%"></td><td bgcolor="black"></td></table>
</div>
@ -132,25 +132,25 @@ button{background:none;border:1px #fff solid;color:#fff;cursor:pointer;margin-to
</div>
<audio id="sound_music" loop>
<source src="doom_assets/sound/music2.mp3" type="audio/mp3">
<source src="/doom_assets/sound/music2.mp3" type="audio/mp3">
</audio>
<audio id="sound_shoot">
<source src="doom_assets/sound/dspistol.wav" type="audio/wav">
<source src="/doom_assets/sound/dspistol.wav" type="audio/wav">
</audio>
<audio id="sound_shootshotgun">
<source src="doom_assets/sound/dsdshtgn.wav" type="audio/wav">
<source src="/doom_assets/sound/dsdshtgn.wav" type="audio/wav">
</audio>
<audio id="sound_ok">
<source src="doom_assets/sound/ok.mp3" type="audio/mp3">
<source src="/doom_assets/sound/ok.mp3" type="audio/mp3">
</audio>
<audio id="sound_death" src="" type="audio/wav">
</audio>
<script src="js/jquery-3.5.1.min.js"></script>
<script src="/js/jquery-3.5.1.min.js"></script>
<script>
var screen_width;
var screen_height;
@ -190,21 +190,21 @@ function handleShootAnim() {
flash = true;
if (!idkfa) {
playSound('shoot');
$('#gun').css('background', 'rgba(0, 0, 0, 0) url("doom_assets/pistol-flash.png") no-repeat scroll left bottom');
$('#gun').css('background', 'rgba(0, 0, 0, 0) url("/doom_assets/pistol-flash.png") no-repeat scroll left bottom');
$('#gun').css('left',"-=22");
} else {
playSound('shootshotgun');
$('#gun').css('background', 'rgba(0, 0, 0, 0) url("doom_assets/shotgun-flash.png") no-repeat scroll left bottom');
$('#gun').css('background', 'rgba(0, 0, 0, 0) url("/doom_assets/shotgun-flash.png") no-repeat scroll left bottom');
//$('#gun').css('left',"-=33");
$('#gun').css('bottom',"0px");
}
setTimeout(function() {
flash = false;
if (!idkfa) {
$('#gun').css('background', 'rgba(0, 0, 0, 0) url("doom_assets/pisga0.png") no-repeat scroll left bottom');
$('#gun').css('background', 'rgba(0, 0, 0, 0) url("/doom_assets/pisga0.png") no-repeat scroll left bottom');
$('#gun').css('left',"+=22");
} else {
$('#gun').css('background', 'rgba(0, 0, 0, 0) url("doom_assets/sht2a0.png") no-repeat scroll left bottom');
$('#gun').css('background', 'rgba(0, 0, 0, 0) url("/doom_assets/sht2a0.png") no-repeat scroll left bottom');
//$('#gun').css('left',"+=33");
$('#gun').css('bottom',"-10px");
}
@ -227,10 +227,10 @@ $('.enemy').click(function() {
handleShootAnim();
if (sound_on) {
$('#sound_death').attr("src", "doom_assets/sound/" + id_enemy + "_kill.wav");
$('#sound_death').attr("src", "/doom_assets/sound/" + id_enemy + "_kill.wav");
$('#sound_death')[0].play();
}
$('.enemy').css('background-image', "url('doom_assets/enemies/" + id_enemy + "_dead.png')");
$('.enemy').css('background-image', "url('/doom_assets/enemies/" + id_enemy + "_dead.png')");
total_kills++;
@ -284,7 +284,7 @@ function randomNumber(min, max) {
function showEnemy() {
id_enemy = randomNumber(1, total_enemies);
$('.enemy').css('background-image', "url('doom_assets/enemies/" + id_enemy + "_normal.png')").css('left', randomNumber(0, screen_width-enemy_width)).show();
$('.enemy').css('background-image', "url('/doom_assets/enemies/" + id_enemy + "_normal.png')").css('left', randomNumber(0, screen_width-enemy_width)).show();
}
function postSize(height) {
@ -370,13 +370,13 @@ $('#cheatcode').keyup(function() {
}
if ($(this).css('opacity', 1).val().toUpperCase() == 'IDKFA') {
idkfa = true;
document.getElementById("gun").style.backgroundImage='url("doom_assets/sht2a0.png"';
document.getElementById("gun").style.backgroundImage='url("/doom_assets/sht2a0.png"';
$('#cheatcode').val('').hide();
}
});
function setRandomBackground(){
$('body').css('background-image', "url('doom_assets/backgrounds/" + randomNumber(1, total_backgrounds) + ".png')" );
$('body').css('background-image', "url('/doom_assets/backgrounds/" + randomNumber(1, total_backgrounds) + ".png')" );
}
$(function() {
@ -389,17 +389,17 @@ $(function() {
for (var i = 1; i <= total_backgrounds; i++) {
var image_aux = new Image();
image_aux.src = 'doom_assets/backgrounds/' + i + '.png';
image_aux.src = '/doom_assets/backgrounds/' + i + '.png';
images_preload.push(image_aux);
}
for (var i = 1; i <= total_enemies; i++) {
var image_aux = new Image();
image_aux.src = 'doom_assets/enemies/' + i + '_normal.png';
image_aux.src = '/doom_assets/enemies/' + i + '_normal.png';
images_preload.push(image_aux);
image_aux = new Image();
image_aux.src = 'doom_assets/enemies/' + i + '_dead.png';
image_aux.src = '/doom_assets/enemies/' + i + '_dead.png';
images_preload.push(image_aux);
}

33
templates/footer.html Normal file
View File

@ -0,0 +1,33 @@
<!DOCTYPE HTML>
<footer>
<div class="footer_links">
<ul>
<li>
<a href="https://fetlife.com/users/13275260" target="_blank">
<img src="/images/footer/fetlife.svg" alt="Fetlife" id="fetlife">
</a>
</li>
<li>
<a href="https://twitter.com/AlexandrCeleste" target="_blank">
<img src="/images/footer/twitter.svg" alt="Twitter" id="twitter">
</a>
</li>
<li>
<a href="https://girldick.gay/@AlexandraCeleste" target="_blank">
<img src="/images/footer/mastodon.svg" alt="Mastodon" id="mastodon">
</a>
</li>
<li>
<a href="mailto:Work@AlexandraCeleste.com" target="_blank">
<img src="/images/footer/email.svg" alt="Email" id="email">
</a>
</li>
<li>
<a href="https://www.adultwork.com/6816039" target="_blank">
<img src="/images/footer/adult_work.png" alt="Adultwork" id="adultwork">
</a>
</li>
</ul>
</div>
</footer>

15
templates/header.html Normal file
View File

@ -0,0 +1,15 @@
<!DOCTYPE HTML>
<header>
<a class="nav_bar_name" href="/index.html">Alexandra & Celeste</a>
<hr>
<nav>
<ul>
<li><a href="/lexi.html">Lexi</a></li>
<li><a href="/celeste.html">Celeste</a></li>
<li><a href="/book.html">Book</a></li>
<li><a href="/gallery.html">Gallery</a></li>
<li><a href="/content.html">Content</a></li>
</ul>
</nav>
</header>

27
templates/template.html Normal file
View File

@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Template</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/variables.css">
<link rel="stylesheet" href="/css/reset.css">
<link rel="stylesheet" href="/css/fonts.css">
<link rel="stylesheet" href="/css/header.css">
<link rel="stylesheet" href="/css/body.css">
<link rel="stylesheet" href="/css/footer.css">
<link rel="icon" href="/images/favicon.svg" sizes="any" type="image/svg+xml">
</head>
<body>
<div class="mobile_background"></div>
<iframe src="/templates/header.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
<div class="container"></div>
<iframe src="/templates/footer.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
</body>
</html>