Skip to content

Commit f6a8313

Browse files
committed
Add font size slider to Line Break Lab and Text Reversal Lab
Added adjustable font size control (12-32px) to match Eraser Lab: 1. Line Break Lab: - Added font size slider in toggle bar - Range: 12px to 32px (default 16px) - Updates text display in real-time 2. Text Reversal Lab: - Added font size slider in toggle bar - Same range and behavior as Line Break Lab - Consistent UI across all text display tools 3. CSS styling: - Created .font-size-control class - Positioned in toggle bar with margin-left: auto - Responsive: stacks to full width on mobile - Styled to match site design (white bg, dark border) - Slider width: 120px desktop, 150px mobile All three text manipulation labs now have consistent font size controls.
1 parent 9986d6e commit f6a8313

3 files changed

Lines changed: 71 additions & 3 deletions

File tree

line-break-lab.html

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,15 @@ <h3>Remove All Line Breaks</h3>
9595
</div>
9696

9797
</div>
98-
98+
9999
<div class="text-display" id="textDisplay" style="display: none;">
100100
<div class="toggle-bar">
101101
<button class="view-toggle active" id="showOriginalBtn">Original Text</button>
102102
<button class="view-toggle" id="showModifiedBtn">Modified Text</button>
103+
<div class="font-size-control">
104+
<label for="fontSizeSlider">Font Size: <span id="fontSizeValue">16px</span></label>
105+
<input type="range" class="slider" id="fontSizeSlider" min="12" max="32" value="16">
106+
</div>
103107
</div>
104108
<div class="text-box">
105109
<div class="text-content" id="displayText"></div>
@@ -143,6 +147,10 @@ <h3>Remove All Line Breaks</h3>
143147
const removeAllBtn = document.getElementById('removeAllBtn');
144148
const resetBtn = document.getElementById('resetBtn');
145149

150+
// Font size control
151+
const fontSizeSlider = document.getElementById('fontSizeSlider');
152+
const fontSizeValue = document.getElementById('fontSizeValue');
153+
146154
// Upload handlers
147155
uploadZone.addEventListener('click', () => fileInput.click());
148156

@@ -191,15 +199,22 @@ <h3>Remove All Line Breaks</h3>
191199
displayText.textContent = showingOriginal ? originalText : currentText;
192200
}
193201

202+
// Font size slider handler
203+
fontSizeSlider.addEventListener('input', () => {
204+
const size = fontSizeSlider.value + 'px';
205+
fontSizeValue.textContent = size;
206+
displayText.style.fontSize = size;
207+
});
208+
194209
// Toggle buttons handler
195210
document.querySelectorAll('.toggle-btn').forEach(btn => {
196211
btn.addEventListener('click', function() {
197212
const tool = this.dataset.tool;
198213
const action = this.dataset.action;
199-
214+
200215
// Update state
201216
toolStates[tool] = action;
202-
217+
203218
// Update UI
204219
const siblings = this.parentElement.querySelectorAll('.toggle-btn');
205220
siblings.forEach(s => s.classList.remove('active'));

styles.css

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,44 @@ input[type="file"],
623623
padding: 10px;
624624
border-radius: 0;
625625
border: 2px solid #4a4a4a;
626+
align-items: center;
627+
flex-wrap: wrap;
628+
}
629+
630+
.font-size-control {
631+
display: flex;
632+
align-items: center;
633+
gap: 10px;
634+
margin-left: auto;
635+
padding: 8px 15px;
636+
background: #ffffff;
637+
border: 2px solid #4a4a4a;
638+
}
639+
640+
.font-size-control label {
641+
font-size: 0.9em;
642+
font-weight: 600;
643+
color: #1a1a1a;
644+
white-space: nowrap;
645+
margin: 0;
646+
}
647+
648+
.font-size-control .slider {
649+
width: 120px;
650+
height: 6px;
651+
margin: 0;
652+
}
653+
654+
@media (max-width: 768px) {
655+
.font-size-control {
656+
margin-left: 0;
657+
width: 100%;
658+
justify-content: space-between;
659+
}
660+
661+
.font-size-control .slider {
662+
width: 150px;
663+
}
626664
}
627665

628666
.toggle-btn,

text-reverse-lab.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ <h3>Insert Line Breaks</h3>
4646
<div class="toggle-bar">
4747
<button class="toggle-btn active" id="showOriginalBtn">Original Text</button>
4848
<button class="toggle-btn" id="showModifiedBtn">Modified Text</button>
49+
<div class="font-size-control">
50+
<label for="fontSizeSlider">Font Size: <span id="fontSizeValue">16px</span></label>
51+
<input type="range" class="slider" id="fontSizeSlider" min="12" max="32" value="16">
52+
</div>
4953
</div>
5054
<div class="text-box">
5155
<div class="text-content" id="displayText"></div>
@@ -72,6 +76,10 @@ <h3>Insert Line Breaks</h3>
7276
const showOriginalBtn = document.getElementById('showOriginalBtn');
7377
const showModifiedBtn = document.getElementById('showModifiedBtn');
7478

79+
// Font size control
80+
const fontSizeSlider = document.getElementById('fontSizeSlider');
81+
const fontSizeValue = document.getElementById('fontSizeValue');
82+
7583
uploadZone.addEventListener('click', () => fileInput.click());
7684

7785
uploadZone.addEventListener('dragover', (e) => {
@@ -127,6 +135,13 @@ <h3>Insert Line Breaks</h3>
127135
addBreaksBtn.disabled = false;
128136
}
129137

138+
// Font size slider handler
139+
fontSizeSlider.addEventListener('input', () => {
140+
const size = fontSizeSlider.value + 'px';
141+
fontSizeValue.textContent = size;
142+
displayText.style.fontSize = size;
143+
});
144+
130145
reverseWordsBtn.addEventListener('click', () => {
131146
const words = currentText.split(/\s+/);
132147
currentText = words.reverse().join(' ');

0 commit comments

Comments
 (0)