Compare commits

...

2 Commits

Author SHA1 Message Date
mi
b6f6ee4b70 click comic to navigate 2025-11-07 17:52:46 +10:00
mi
2588b66318 💄 switch to underlines 2025-11-07 17:45:30 +10:00
3 changed files with 46 additions and 4 deletions

View File

@@ -56,7 +56,7 @@ nav .container {
.nav-links a:hover, .nav-links a:hover,
.nav-links a.active { .nav-links a.active {
text-decoration: line-through; text-decoration: underline;
} }
/* Main content */ /* Main content */
@@ -187,6 +187,11 @@ main {
background: #fff; background: #fff;
} }
.comic-image a {
display: block;
cursor: pointer;
}
.comic-image img { .comic-image img {
max-width: 100%; max-width: 100%;
height: auto; height: auto;
@@ -380,7 +385,7 @@ footer {
} }
.social-links a:hover { .social-links a:hover {
text-decoration: line-through; text-decoration: underline;
} }
.newsletter-form { .newsletter-form {

View File

@@ -34,12 +34,16 @@
// Update date // Update date
document.querySelector('.comic-date').textContent = comic.date; document.querySelector('.comic-date').textContent = comic.date;
// Update image // Update image and its link
const img = document.querySelector('.comic-image img'); const comicImageDiv = document.querySelector('.comic-image');
const img = comicImageDiv.querySelector('img');
img.src = `/static/images/comics/${comic.filename}`; img.src = `/static/images/comics/${comic.filename}`;
img.alt = title; img.alt = title;
img.title = comic.alt_text; img.title = comic.alt_text;
// Update or create/remove the link wrapper
updateComicImageLink(comic.number);
// Update author note // Update author note
const transcriptDiv = document.querySelector('.comic-transcript'); const transcriptDiv = document.querySelector('.comic-transcript');
if (comic.author_note) { if (comic.author_note) {
@@ -66,6 +70,30 @@
history.pushState({ comicId: comic.number }, '', `/comic/${comic.number}`); history.pushState({ comicId: comic.number }, '', `/comic/${comic.number}`);
} }
// Update comic image link for click navigation
function updateComicImageLink(currentNumber) {
const comicImageDiv = document.querySelector('.comic-image');
const img = comicImageDiv.querySelector('img');
// Remove existing link if present
const existingLink = comicImageDiv.querySelector('a');
if (existingLink) {
existingLink.replaceWith(img);
}
// Add link if there's a next comic
if (currentNumber < totalComics) {
const link = document.createElement('a');
link.href = `/comic/${currentNumber + 1}`;
link.onclick = (e) => {
e.preventDefault();
loadComic(currentNumber + 1);
};
img.parentNode.insertBefore(link, img);
link.appendChild(img);
}
}
// Update navigation button states // Update navigation button states
function updateNavButtons(currentNumber) { function updateNavButtons(currentNumber) {
const navButtons = document.querySelector('.nav-buttons'); const navButtons = document.querySelector('.nav-buttons');
@@ -129,6 +157,7 @@
if (currentNumber && totalComics) { if (currentNumber && totalComics) {
updateNavButtons(currentNumber); updateNavButtons(currentNumber);
updateComicImageLink(currentNumber);
} }
// Handle browser back/forward // Handle browser back/forward

View File

@@ -12,9 +12,17 @@
</div> </div>
<div class="comic-image"> <div class="comic-image">
{% if comic.number < total_comics %}
<a href="{{ url_for('comic', comic_id=comic.number + 1) }}">
<img src="{{ url_for('static', filename='images/comics/' + comic.filename) }}"
alt="{{ comic.title if comic.title else '#' ~ comic.number }}"
title="{{ comic.alt_text }}">
</a>
{% else %}
<img src="{{ url_for('static', filename='images/comics/' + comic.filename) }}" <img src="{{ url_for('static', filename='images/comics/' + comic.filename) }}"
alt="{{ comic.title if comic.title else '#' ~ comic.number }}" alt="{{ comic.title if comic.title else '#' ~ comic.number }}"
title="{{ comic.alt_text }}"> title="{{ comic.alt_text }}">
{% endif %}
</div> </div>
<div class="comic-navigation"> <div class="comic-navigation">