1 #permalink HOME - sekcja główna strony
Cała strona główna prezentuję się tak, jak na załączonym obrazku. Zawiera ona nagłówek, sekcję z ofertą, sekcję z galerią, sekcję z opisem i sekcję z informacjami. Rodzieliłem ją na poszczególne sekcje, aby łatwiej było zdefiniować style dla poszczególnych elementów.
Search for a City:
Temperature:
Humidity:
Wind Speed:
UV Index:
5-Day Forecast:
Temp:
Humidity:
Temp:
Humidity:
Temp:
Humidity:
Temp:
Humidity:
Temp:
Humidity:
.
.
LOREM IPSUM
VIEW DETAILS
LOREM IPSUM
VIEW DETAILSLorem ipsum
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac felis mi. Nulla urna risus, malesuada nec blandit at, dictum a est. Integer pulvinar dui elit, vitae vehicula est tempor venenatis. Proin pulvinar pulvinar enim, et vestibulum leo. Vivamus placerat, magna non commodo suscipit, sapien lorem finibus dui, nec interdum lectus ante dictum mi.
Lorem Ipsum
$50.00 $200.00
Lorem ipsum dolor sit amet, consectetur adipiscing elit, et do eiusmod tempor incididunt ut labore et dolore magna aliqua.
VIEW DETAILS
Lorem
Lorem
Lorem
Lorem
Lorem
Lorem
.
SPECIAL OFFER
UPTO 70% OFF
Upgrade your footwear collection with our 70% off special deal! LOREM IPSUM!
VIEW ALL
FREE SHIPING
All Lorem ipsum $150
QUICK PAYMENT
100% Lorem ipsum
FREE RETURNS
Lorem ipsum 30 days
Markup
<main>
<div class="blur-background"></div>
<div id="container" class="container">
<div class="clock-div">
<div class="clock-container">
<div class="clock">
<div class="needle hour"></div>
<div class="needle minute"></div>
<div class="needle second"></div>
<div class="center-point"></div>
</div>
<div class="time"></div>
<div class="date"></div>
</div>
</div>
<p class="message pb-4">
O której godzinie chcesz się ze mną spotkać?
</p>
<div class="inline-flex text-lg border rounded-md shadow-lg p-5">
<select name="" id="select-hour" class="px-2 outline-none appearance-none bg-transparent">
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select>
<span class="px-2">:</span>
<select name="" id="input-minutes" class="px-2 outline-none appearance-none bg-transparent">
<option value="00">00</option>
<option value="30">30</option>
</select>
</div>
<button id="button" class="button">Potwierdź godzinę !</button>
</div>
<div id="content" class="content hidden">
<p id="message" class="message"></p>
</div>
<div class="containerApi">
<div class="row">
<div class="szukaj">
<div class="col">
<!-- Formularz do wyszukiwania miasta -->
<h4 class="City"><strong>Search for a City:</strong></h4>
<div class="input-group">
<input type="text" class="form-control" id="search-city" placeholder="Enter the city" aria-label="City Search" aria-describedby="search-button">
<div class="input-group-append">
<button class="btn btn-primary" id="search-button">🔍</button>
</div>
</div>
<button class="btn-mt-2" type="button" id="clear-history">Clear History</button>
<ul class="list-group mt-2" id="search-history">
</ul>
</div>
<div class="row">
<div class="col-row" id="current-weather">
<h3 class="city-name" id="current-city"></h3>
<p>Temperature: <span class="current" id="temperature"></span></p>
<p>Humidity: <span class="current" id="humidity"></span></p>
<p>Wind Speed: <span class="current" id="wind-speed"></span></p>
<p>UV Index: <span class="current" id="uv-index"></span></p>
</div>
</div>
</div>
<!-- Wiersz do wyświetlania przyszłych danych -->
<div class="col-smain" id="future-weather">
<h3>5-Day Forecast:</h3>
<div class="row1">
<div class="col-sm">
<p id="fDate0"></p>
<p id="fImg0"></p>
<p>Temp: <span id="fTemp0"></span></p>
<p>Humidity: <span id="fHumidity0"></span></p>
</div>
<div class="col-sm">
<p id="fDate1"></p>
<p id="fImg1"></p>
<p>Temp: <span id="fTemp1"></span></p>
<p>Humidity: <span id="fHumidity1"></span></p>
</div>
<div class="col-sm">
<p id="fDate2"></p>
<p id="fImg2"></p>
<p>Temp: <span id="fTemp2"></span></p>
<p>Humidity: <span id="fHumidity2"></span></p>
</div>
<div class="col-sm">
<p id="fDate3"></p>
<p id="fImg3"></p>
<p>Temp: <span id="fTemp3"></span></p>
<p>Humidity: <span id="fHumidity3"></span></p>
</div>
<div class="col-sm">
<p id="fDate4"></p>
<p id="fImg4"></p>
<p>Temp: <span id="fTemp4"></span></p>
<p>Humidity: <span id="fHumidity4"></span></p>
</div>
</div>
</div>
</div>
</div>
<section class="photoFirst">
<h2 style="display:none;">.</h2>
<img id="photos1" src="img/mainPage4.webp" alt="Lorem ipsum 1" loading="lazy" width="300" height="300">
<img id="photos2" src="img/mainPage5.webp" alt="Lorem ipsum 2" loading="lazy" width="300" height="300">
<img id="photos3" src="img/mainPage6.webp" alt="Lorem ipsum 3" loading="lazy" width="300" height="300">
</section>
<input type="checkbox" id="toggleImages">
<label for="toggleImages" id="showMoreButton" class="buttonFoto">LOAD MORE PHOTO</label>
<div class="photoSecond">
<div class="animation">
<img class="glasses" src="https://kibbles.klausapp.com/assets/img/loader/glasses-regular.svg" alt="oksy1" width="140" height="140">
<img class="logoCat" src="https://kibbles.klausapp.com/assets/img/loader/main.svg" alt="cot1" width="140" height="140">
</div>
<div class="animation">
<img class="glasses" src="https://kibbles.klausapp.com/assets/img/loader/glasses-deal-with-it.svg" alt="oksy2" width="140" height="140">
<img class="logoCat" src="https://kibbles.klausapp.com/assets/img/loader/main.svg" alt="cot2" width="140" height="140">
</div>
<div class="animation">
<img class="glasses" src="https://kibbles.klausapp.com/assets/img/loader/glasses-hearts.svg" alt="oksy3" width="140" height="140">
<img class="logoCat" src="https://kibbles.klausapp.com/assets/img/loader/main.svg" alt="cot3" width="140" height="140">
</div>
</div>
<section class="photoSecond">
<h2 style="display:none;">.</h2>
<img class="photosX" src="img/mainPage1.webp" alt="Lorem ipsum 4" loading="lazy" width="300" height="300">
<img class="photosX" src="img/mainPage2.webp" alt="Lorem ipsum 5" loading="lazy" width="300" height="300">
<img class="photosX" src="img/mainPage3.webp" alt="Lorem ipsum 6" loading="lazy" width="300" height="300">
</section>
<label for="toggleImages" id="showLessButton" class="buttonFoto">LOAD LESS PHOTO</label>
<div class="product-grid">
<div class="product-item" style="background-color: #eae9e7;">
<div class="product-image">
<img src="img/gallery1.webp" alt="Gallery 1" loading="lazy" width="300" height="300">
</div>
<div class="product-content">
<h3>LOREM IPSUM</h3>
<a href="./gallery.html" class="details-button">VIEW DETAILS</a>
</div>
</div>
<div id="drugie" class="product-item" style="background-color: #eae9e7">
<div class="product-image">
<img src="img/gallery2.webp" alt="Gallery 2" loading="lazy" width="300" height="300">
</div>
<div class="product-content">
<h3>LOREM IPSUM</h3>
<a href="./gallery.html" class="details-button">VIEW DETAILS</a>
</div>
</div>
</div>
<section class="section">
<h2 class="section__heading">Lorem ipsum</h2>
<div class="about-us__textbox">
<p class="about-us__text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
ac felis mi. Nulla urna risus, malesuada nec blandit at, dictum a
est. Integer pulvinar dui elit, vitae vehicula est tempor venenatis.
Proin pulvinar pulvinar enim, et vestibulum leo. Vivamus placerat,
magna non commodo suscipit, sapien lorem finibus dui, nec interdum
lectus ante dictum mi.
</p>
<label for="modalCheck" class="button">Lorem ipsum!</label>
<input type="checkbox" id="modalCheck" style="display: none">
<div class="modal">
<div class="modal-content">
<p>Tak dobrze trafiłeś! To lorem ipsum!</p>
</div>
</div>
</div>
<div class="product-item4">
<img src="img/item1.webp" alt="Item" loading="lazy" width="1200" height="700">
<div class="info-box">
<h2>Lorem Ipsum</h2>
<p class="price2">$50.00 <span class="old-price">$200.00</span></p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, et do
eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<a href="./services.html" class="details-button2">VIEW DETAILS</a>
</div>
</div>
<div class="slider">
<div class="slides">
<div id="slide-1" class="slide">
<img src="img/mainPage1.webp" alt="Lorem ipsum 1v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-2" class="slide">
<img src="img/mainPage2.webp" alt="Lorem ipsum 2v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-3" class="slide">
<img src="img/mainPage10.webp" alt="Lorem ipsum 3v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-4" class="slide">
<img src="img/mainPage11.webp" alt="Lorem ipsum 4v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-5" class="slide">
<img src="img/mainPage14.webp" alt="Lorem ipsum 5v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-6" class="slide">
<img src="img/mainPage13.webp" alt="Lorem ipsum 6v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-7" class="slide">
<img src="img/mainPage12.webp" alt="Lorem ipsum 7v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-8" class="slide">
<img src="img/mainPage8.webp" alt="Lorem ipsum 8v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-9" class="slide">
<img src="img/mainPage9.webp" alt="Lorem ipsum 9v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
</div>
</div>
<div class="slider-controls">
<input type="radio" id="slide-radio-1v2" name="slide" class="slider-radio">
<label for="slide-radio-1v2" class="slider-label" onclick="window.location.href='#slide-1';"></label>
<input type="radio" id="slide-radio-2v2" name="slide" class="slider-radio">
<label for="slide-radio-2v2" class="slider-label" onclick="window.location.href='#slide-2';"></label>
<input type="radio" id="slide-radio-3v2" name="slide" class="slider-radio">
<label for="slide-radio-3v2" class="slider-label" onclick="window.location.href='#slide-3';"></label>
<input type="radio" id="slide-radio-4v2" name="slide" class="slider-radio">
<label for="slide-radio-4v2" class="slider-label" onclick="window.location.href='#slide-4';"></label>
<input type="radio" id="slide-radio-5v2" name="slide" class="slider-radio" checked>
<label for="slide-radio-5v2" class="slider-label" onclick="window.location.href='#slide-5';"></label>
<input type="radio" id="slide-radio-6v2" name="slide" class="slider-radio">
<label for="slide-radio-6v2" class="slider-label" onclick="window.location.href='#slide-6';"></label>
<input type="radio" id="slide-radio-7v2" name="slide" class="slider-radio">
<label for="slide-radio-7v2" class="slider-label" onclick="window.location.href='#slide-7';"></label>
<input type="radio" id="slide-radio-8v2" name="slide" class="slider-radio">
<label for="slide-radio-8v2" class="slider-label" onclick="window.location.href='#slide-8';"></label>
<input type="radio" id="slide-radio-9v2" name="slide" class="slider-radio">
<label for="slide-radio-9v2" class="slider-label" onclick="window.location.href='#slide-9';"></label>
</div>
</section>
<div class="product-grid1">
<div class="product-item1">
<img src="img/gallery9.webp" alt="LoremIpsum" loading="lazy" width="200" height="200">
<div class="overlay">
<div class="text">
<h3>Lorem</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
</p>
<a href="./product.html" class="details-button-x">VIEW ALL</a>
</div>
</div>
</div>
<div class="product-item1">
<img src="img/gallery12.webp" alt="Loremer" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja1" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja2" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja3" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja4" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja5" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/gallery11.webp" alt="Loremer2" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja6" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja7" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja8" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja9" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja10" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/gallery10.webp" alt="Loremer3" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja11" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja12" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja13" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja14" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja15" loading="lazy" width="30" height="30">
</span>
</div>
</div>
</div>
<div class="product-grid2">
<div class="product-item1">
<img src="img/abootUs4.webp" alt="Loremer4" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja16" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja17" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja18" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja19" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja20" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/abootUs3.webp" alt="Loremer5" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja21" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja22" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja23" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja24" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja25" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/abootUs2.webp" alt="Loremer6" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja26" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja27" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja28" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja29" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja30" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/abootUs1.webp" alt="Loremer7" loading="lazy" width="200" height="200">
<div class="overlay">
<div class="text">
<h3>Lorem</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
</p>
<a href="./product.html" class="details-button-x">VIEW ALL</a>
</div>
</div>
</div>
</div>
<section class="collection">
<div class="collection__men">
<h3 class="collection__heading">Product 1 Collection</h3>
<div class="collection__shadow">
<img src="img/product1.webp" alt="product 1" class="collection__img" loading="lazy" width="150" height="150">
</div>
<a class="collection__btn" href="./product.html">explore more</a>
</div>
<div class="collection__women">
<h3 class="collection__heading">Product 2 Collection</h3>
<div class="collection__shadow">
<img src="img/product7.webp" alt="product 2" class="collection__img" loading="lazy" width="150" height="150">
</div>
<a class="collection__btn" href="./product.html">explore more</a>
</div>
<div class="collection__kids">
<h3 class="collection__heading">Product 3 Collection</h3>
<div class="collection__shadow">
<img src="img/product3.webp" alt="product 3" class="collection__img" loading="lazy" width="150" height="150">
</div>
<a class="collection__btn" href="./product.html">explore more</a>
</div>
</section>
<section class="offer">
<h2 style="display:none;">.</h2>
<div class="offer__body">
<img src="img/logo1transparent.webp" alt="LOGOv2" class="offer__img" loading="lazy" width="300" height="300">
<div class="offer__content container">
<p class="offer__heading">SPECIAL OFFER</p>
<p class="offer__title">UPTO 70% OFF</p>
<p class="offer__text">
Upgrade your footwear collection with our 70% off special deal!
LOREM IPSUM!
</p>
<a href="./product.html" class="details-button">VIEW ALL</a>
</div>
</div>
</section>
<section class="service">
<div class="service__content container">
<div class="service__box">
<img src="img/pay1.webp" alt="pay1" loading="lazy" width="150" height="150">
<div class="service__text">
<h4 class="service__title">FREE SHIPING</h4>
<p class="service__describe">All Lorem ipsum $150</p>
</div>
</div>
<div class="service__box">
<img src="img/pay2.webp" alt="pay2" loading="lazy" width="150" height="150">
<div class="service__text">
<h4 class="service__title">QUICK PAYMENT</h4>
<p class="service__describe">100% Lorem ipsum </p>
</div>
</div>
<div class="service__box">
<img src="img/pay1.webp" alt="pay3" loading="lazy" width="150" height="150">
<div class="service__text">
<h4 class="service__title">FREE RETURNS</h4>
<p class="service__describe">Lorem ipsum 30 days</p>
</div>
</div>
</div>
</section>
<div class="load-more-container">
<a href="./gallery.html" class="load-more-btn">LOAD MORE PRODUCTS</a>
</div>
<div class="newsletter-signup-section">
<div class="newsletter-signup-container">
<div class="newsletter-content">
<h2 class="newsletter-title">SIGN UP FOR THE NEWSLETTER</h2>
<p class="newsletter-description">Subscribe for the latest stories and promotions</p>
</div>
<form class="newsletter-form">
<input type="email" class="newsletter-input" placeholder="Enter your email address" required>
<button type="submit" class="newsletter-submit-btn">
<img src="img/phone.svg" alt="Send" loading="lazy" width="30" height="30">
</button>
</form>
</div>
</div>
</main>
styleIndex.css, line 93
1.1 #permalink HOME CLOCK - sekcja zegara
-
blur-background: Ten element tworzy rozmyte tło strony z użyciem obrazu tła.
-
container, .container: To jest główny kontener strony, w którym znajduje się zegar i formularz.
-
clock-div: Kontener dla zegara.
-
clock-container: Kontener dla samego zegara.
-
clock: To jest miejsce, gdzie wyświetlany jest zegar analogowy.
-
needle hour, needle minute, needle second: Są to wskazówki godzinowa, minutowa i sekundowa zegara.
-
center-point: To jest centralny punkt zegara.
-
time: W tym elemencie wyświetlana jest aktualna godzina.
-
date: W tym elemencie wyświetlana jest aktualna data.
-
message pb-4: To jest akapit tekstu, który informuje użytkownika, aby wybrał godzinę spotkania.
-
inline-flex text-lg border rounded-md shadow-lg p-5: To jest kontener dla formularza wyboru godziny spotkania.
-
select-hour, input-minutes: To są rozwijane listy do wyboru godziny i minut.
-
button: To jest przycisk do potwierdzenia wybranej godziny spotkania.
-
Skrypt JavaScript znajdujący się na końcu pliku obsługuje działanie strony. Po wybraniu godziny i kliknięciu przycisku "Potwierdź godzinę !", wyświetla się wiadomość potwierdzająca wybraną godzinę.
-
Stylowanie strony jest zawarte w kodzie CSS. Obejmuje ono m.in. ustawienie tła strony, kolorystykę, wygląd zegara oraz formularza.
Markup
Ten kod tworzy interaktywną stronę internetową z zegarem i możliwością wyboru godziny spotkania. Po wyborze godziny, użytkownik otrzymuje potwierdzenie i może ponownie wybrać godzinę.
<div class="blur-background"></div>
<div id="container" class="container">
<div class="clock-div">
<div class="clock-container">
<div class="clock">
<div class="needle hour"></div>
<div class="needle minute"></div>
<div class="needle second"></div>
<div class="center-point"></div>
</div>
<div class="time"></div>
<div class="date"></div>
</div>
</div>
<p class="message pb-4">
O której godzinie chcesz się ze mną spotkać?
</p>
<div class="inline-flex text-lg border rounded-md shadow-lg p-5">
<select name="" id="select-hour" class="px-2 outline-none appearance-none bg-transparent">
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select>
<span class="px-2">:</span>
<select name="" id="input-minutes" class="px-2 outline-none appearance-none bg-transparent">
<option value="00">00</option>
<option value="30">30</option>
</select>
</div>
<button id="button" class="button">Potwierdź godzinę !</button>
</div>
<div id="content" class="content hidden">
<p id="message" class="message"></p>
</div>
<script>
let container = document.getElementById("container"),
content = document.getElementById("content"),
message = document.getElementById("message"),
button = document.getElementById("button");
button.addEventListener("click", function () {
let input_hour = document.getElementById("select-hour").value;
let input_minutes = document.getElementById("input-minutes").value;
message.innerHTML = `Chcę się spotkać o <b>${input_hour}:${input_minutes}</b> <br> (uzgodnione z kim trzeba) <br> zapraszam przed tą godziną <br> Dawid Olko:)`;
content.style.display = "flex";
content.style.justifyContent = "center";
container.style.display = "none";
setTimeout(function () {
content.style.display = "none";
container.style.display = "flex";
}, 2000);
});
const hourElement = document.querySelector(".hour");
const minuteElement = document.querySelector(".minute");
const secondElement = document.querySelector(".second");
const timeElement = document.querySelector(".time");
const dateElement = document.querySelector(".date");
const toggle = document.querySelector(".toggle");
const days = [
"Niedziela",
"Poniedziałek",
"Wtorek",
"Środa",
"Czwartek",
"Piątek",
"Sobota",
];
const months = [
"Sty",
"Lut",
"Mar",
"Kwi",
"Maj",
"Cze",
"Lip",
"Sie",
"Wrz",
"Paz",
"Lis",
"Gru",
];
toggle.addEventListener("click", (e) => {
const html = document.querySelector("html");
if (html.classList.contains("dark")) {
html.classList.remove("dark");
e.target.innerHTML = "Dark mode";
} else {
html.classList.add("dark");
e.target.innerHTML = "Bright mode";
}
});
const scale = (num, in_min, in_max, out_min, out_max) => {
return ((num - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min;
};
const setTime = () => {
const time = new Date();
const date = time.getDate();
const month = time.getMonth();
const day = time.getDay();
const hours = time.getHours();
const minutes = time.getMinutes();
const seconds = time.getSeconds();
const ampm = "";
hourElement.style.transform = `translate(-50%, -100%) rotate(${scale(
hours + minutes / 60, 0, 12, 0, 360
)}deg)`;
minuteElement.style.transform = `translate(-50%, -100%) rotate(${scale(
minutes, 0, 60, 0, 360
)}deg)`;
secondElement.style.transform = `translate(-50%, -100%) rotate(${scale(
seconds, 0, 60, 0, 360
)}deg)`;
timeElement.innerHTML = `${hours < 10 ? `0${hours}` : hours}:${
minutes < 10 ? `0${minutes}` : minutes
} ${ampm}`;
dateElement.innerHTML = `${days[day]}, <span class="circle">${date}</span> ${months[month]} `;
};
setTime();
setInterval(setTime, 1000);
</script>
styleIndex.css, line 1077
1.2 #permalink HOME API - sekcja pogodowa
Kod HTML:
-
containerApi: Główny kontener strony, który jest wyśrodkowany na stronie i ma szerokość 80% szerokości okna przeglądarki.
-
szukaj: Kontener zawierający elementy związane z wyszukiwaniem miasta. Wykorzystuje flexbox do wyśrodkowania zawartości.
-
col: Kontener kategorii "Search for a City". Jest to kolumna o szerokości 50% szerokości swojego rodzica, zawiera nagłówek, pole do wprowadzania nazwy miasta, przycisk do wyszukiwania, oraz przycisk "Clear History" i listę historii wyszukiwań.
-
col-sm: Kontener dla pojedynczej prognozy pogody w sekcji "5-Day Forecast". Ma szerokość 200px i zawiera datę, obrazek pogodowy, temperaturę i wilgotność.
-
row: Kontener dla wiersza z danymi dotyczącymi aktualnej pogody (np., temperatura, wilgotność, itp.).
-
col-row: Kontener dla aktualnych danych pogodowych. Jest wykorzystywany na szerokość 100% i zawiera dane takie jak nazwa miasta, temperatura, wilgotność, prędkość wiatru i wskaźnik UV.
-
row1: Kontener dla prognozy pogody na 5 dni. Składa się z pięciu kolumn o równej szerokości.
Kod CSS:
-
containerApi: Styl dla głównego kontenera strony. Ma szerokość 80%, jest wyśrodkowany na stronie i posiada marginesy po lewej i prawej stronie.
-
szukaj: Styl dla kontenera "szukaj". Wykorzystuje flexbox do wyśrodkowania zawartości, szerokość wynosi 100%.
-
col: Styl dla kategorii "Search for a City". Ma szerokość 50%, jest wyśrodkowany, posiada tło koloru rgba(233, 236, 239, 0.5), padding, oraz marginesy.
-
col-sm: Styl dla kontenera prognozy pogody na 1 dzień. Ma szerokość 200px, marginesy i padding.
-
row: Styl dla kontenera wiersza z danymi dotyczącymi aktualnej pogody. Ma wyśrodkowaną zawartość, marginesy i tło koloru rgba(233, 236, 239, 0.5).
-
col-row: Styl dla kontenera z aktualnymi danymi pogodowymi. Ma szerokość 100% i tło koloru rgba(233, 236, 239, 0.5).
-
row1: Styl dla kontenera prognozy pogody na 5 dni. Jest to flexbox, który zajmuje 100% szerokości dostępnej przestrzeni.
-
search-city: Styl dla pola tekstowego do wprowadzania nazwy miasta. Ma zaokrąglone rogi, obramowanie i wysokość 35px.
-
City: Styl dla nagłówka "Search for a City". Marginesy, rozmiar czcionki, itp.
-
btn-primary: Styl dla przycisku "🔍" do wyszukiwania. Zaokrąglone rogi, kolor tła i tekst na przycisku.
-
btn-mt-2: Styl dla przycisku "Clear History". Marginesy, tło, kolor tekstu.
-
list-group: Styl dla listy historii wyszukiwań. Padding i stylizacja wyglądu listy.
-
list-group li: Styl dla elementów listy historii wyszukiwań. Marginesy, tło i obramowanie.
-
current-weather i future-weather: Styl dla kontenerów aktualnej pogody i prognozy pogody na 5 dni. Tło, zaokrąglone rogi, padding, marginesy.
-
city-name: Styl dla nazwy miasta w aktualnej pogodzie. Rozmiar czcionki i kolor.
-
current: Styl dla aktualnych danych pogodowych (np. temperatura, wilgotność, itp.). Pogrubiony tekst.
-
col-sm img: Styl dla obrazków pogodowych w prognozie pogody na 5 dni. Marginesy i tło.
-
Media queries: W kodzie znajdują się także media queries, które dostosowują wygląd strony w zależności od szerokości ekranu. Są one odpowiedzialne za reakcję strony na różne rozmiary urządzeń, zmieniając układ elementów, kolory tła, itp.
Search for a City:
Temperature:
Humidity:
Wind Speed:
UV Index:
5-Day Forecast:
Temp:
Humidity:
Temp:
Humidity:
Temp:
Humidity:
Temp:
Humidity:
Temp:
Humidity:
Markup
<div class="containerApi">
<div class="row">
<div class="szukaj">
<div class="col">
<h4 class="City"><strong>Search for a City:</strong></h4>
<div class="input-group">
<input type="text" class="form-control" id="search-city" placeholder="Enter the city" aria-label="City Search" aria-describedby="search-button">
<div class="input-group-append">
<button class="btn btn-primary" id="search-button">🔍</button>
</div>
</div>
<button class="btn-mt-2" type="button" id="clear-history">Clear History</button>
<ul class="list-group mt-2" id="search-history">
</ul>
</div>
<div class="row">
<div class="col-row" id="current-weather">
<h3 class="city-name" id="current-city"></h3>
<p>Temperature: <span class="current" id="temperature"></span></p>
<p>Humidity: <span class="current" id="humidity"></span></p>
<p>Wind Speed: <span class="current" id="wind-speed"></span></p>
<p>UV Index: <span class="current" id="uv-index"></span></p>
</div>
</div>
</div>
<div class="col-smain" id="future-weather">
<h3>5-Day Forecast:</h3>
<div class="row1">
<div class="col-sm">
<p id="fDate0"></p>
<p id="fImg0"></p>
<p>Temp: <span id="fTemp0"></span></p>
<p>Humidity: <span id="fHumidity0"></span></p>
</div>
<div class="col-sm">
<p id="fDate1"></p>
<p id="fImg1"></p>
<p>Temp: <span id="fTemp1"></span></p>
<p>Humidity: <span id="fHumidity1"></span></p>
</div>
<div class="col-sm">
<p id="fDate2"></p>
<p id="fImg2"></p>
<p>Temp: <span id="fTemp2"></span></p>
<p>Humidity: <span id="fHumidity2"></span></p>
</div>
<div class="col-sm">
<p id="fDate3"></p>
<p id="fImg3"></p>
<p>Temp: <span id="fTemp3"></span></p>
<p>Humidity: <span id="fHumidity3"></span></p>
</div>
<div class="col-sm">
<p id="fDate4"></p>
<p id="fImg4"></p>
<p>Temp: <span id="fTemp4"></span></p>
<p>Humidity: <span id="fHumidity4"></span></p>
</div>
</div>
</div>
</div>
</div>
<script>
var city = "";
var searchCity = document.getElementById("search-city");
var searchButton = document.getElementById("search-button");
var clearButton = document.getElementById("clear-history");
var currentCity = document.getElementById("current-city");
var currentTemperature = document.getElementById("temperature");
var currentHumidity = document.getElementById("humidity");
var currentWSpeed = document.getElementById("wind-speed");
var currentUvindex = document.getElementById("uv-index");
var sCity = [];
function find(c) {
for (var i = 0; i < sCity.length; i++) {
if (c.toUpperCase() === sCity[i]) {
return -1;
}
}
return 1;
}
var APIKey = "a0aca8a89948154a4182dcecc780b513";
function displayWeather(event) {
event.preventDefault();
if (searchCity.value.trim() !== "") {
city = searchCity.value.trim();
currentWeather(city);
}
}
function currentWeather(city) {
var queryURL =
"https://api.openweathermap.org/data/2.5/weather?q=" +
city +
"&APPID=" +
APIKey;
var xhr = new XMLHttpRequest();
xhr.open("GET", queryURL, true);
xhr.onload = function () {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
var weatherIcon = response.weather[0].icon;
var iconURL = "https://openweathermap.org/img/wn/" + weatherIcon + "@2x.png";
var date = new Date(response.dt * 1000).toLocaleDateString();
currentCity.innerHTML = response.name + " (" + date + ") " + "<img src=" + iconURL + ">";
var tempF = (response.main.temp - 273.15);
currentTemperature.innerHTML = tempF.toFixed(2) + "℃";
currentHumidity.innerHTML = response.main.humidity + "%";
var ws = response.wind.speed;
var windSmph = (ws * 2.237).toFixed(1);
currentWSpeed.innerHTML = windSmph + "MPH";
UVIndex(response.coord.lon, response.coord.lat);
forecast(response.id);
sCity = JSON.parse(localStorage.getItem("cityname")) || [];
if (find(city) > 0) {
sCity.push(city.toUpperCase());
localStorage.setItem("cityname", JSON.stringify(sCity));
addToList(city);
}
} else {
console.log("Błąd: " + xhr.status);
}
};
xhr.send();
}
function UVIndex(ln, lt) {
var uvqURL = "https://api.openweathermap.org/data/2.5/uvi?appid=" + APIKey + "&lat=" + lt + "&lon=" + ln;
var xhr = new XMLHttpRequest();
xhr.open("GET", uvqURL, true);
xhr.onload = function () {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
currentUvindex.innerHTML = response.value;
} else {
console.log("Błąd: " + xhr.status);
}
};
xhr.send();
}
function forecast(cityid) {
var dayover = false;
var queryForcastURL = "https://api.openweathermap.org/data/2.5/forecast?id=" + cityid + "&appid=" + APIKey;
var xhr = new XMLHttpRequest();
xhr.open("GET", queryForcastURL, true);
xhr.onload = function () {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
for (var i = 0; i < 5; i++) {
var date = new Date(response.list[((i + 1) * 8) - 1].dt * 1000).toLocaleDateString();
var iconCode = response.list[((i + 1) * 8) - 1].weather[0].icon;
var iconURL = "https://openweathermap.org/img/wn/" + iconCode + ".png";
var tempK = response.list[((i + 1) * 8) - 1].main.temp;
var tempF = ((tempK - 273.5)).toFixed(2);
var humidity = response.list[((i + 1) * 8) - 1].main.humidity;
document.getElementById("fDate" + i).innerHTML = date;
document.getElementById("fImg" + i).innerHTML = "<img src=" + iconURL + ">";
document.getElementById("fTemp" + i).innerHTML = tempF + "℃";
document.getElementById("fHumidity" + i).innerHTML = humidity + "%";
}
} else {
console.log("Błąd: " + xhr.status);
}
};
xhr.send();
}
function addToList(c) {
var listEl = document.createElement("li");
listEl.textContent = c.toUpperCase();
listEl.className = "list-group-item";
listEl.dataset.value = c.toUpperCase();
document.querySelector(".list-group").appendChild(listEl);
}
function invokePastSearch(event) {
var liEl = event.target;
if (liEl.matches("li")) {
city = liEl.textContent.trim();
currentWeather(city);
}
}
function loadLastCity() {
document.querySelector("ul").innerHTML = "";
var sCity = JSON.parse(localStorage.getItem("cityname"));
if (sCity !== null) {
for (var i = 0; i < sCity.length; i++) {
addToList(sCity[i]);
}
city = sCity[i - 1];
currentWeather(city);
}
}
function clearHistory(event) {
event.preventDefault();
sCity = [];
localStorage.removeItem("cityname");
location.reload();
}
searchCity.addEventListener("keydown", function (event) {
if (event.key === "Enter") {
displayWeather(event);
}
});
function displayWeather(event) {
if (event) {
event.preventDefault();
}
if (searchCity.value.trim() !== "") {
city = searchCity.value.trim();
currentWeather(city);
}
}
searchButton.addEventListener("click", displayWeather);
document.addEventListener("click", invokePastSearch);
window.addEventListener("load", loadLastCity);
clearButton.addEventListener("click", clearHistory);
</script>
styleIndex.css, line 1418
1.3 #permalink HOME GALLERY - sekcja galerii
Oto przerobiony opis bez znaczników i z pogrubionymi nazwami klas, id i atrybutami:
Kod HTML:
-
photoFirst: Jest to sekcja zawierająca zdjęcia. Klasa "photoFirst" może być wykorzystywana do określania stylu dla tej sekcji.
-
h2: Jest to nagłówek drugiego poziomu, który jest ukryty (display:none;) i prawdopodobnie jest używany do celów związanych z dostępnością lub stylizacją strony.
-
photos1, photos2, photos3: Są to trzy obrazy z różnymi identyfikatorami (id) oraz atrybutami src, alt, loading, width i height. Identyfikatory mogą być wykorzystywane do manipulacji tymi elementami za pomocą CSS lub JavaScript.
-
toggleImages: Jest to pole wyboru typu "checkbox" z identyfikatorem "toggleImages".
-
showMoreButton: Jest to etykieta powiązana z polem wyboru o identyfikatorze "toggleImages". Ma również klasę "buttonFoto" i zawiera tekst "LOAD MORE PHOTO".
-
photoSecond: Jest to kolejna sekcja zawierająca obrazy. Klasa "photoSecond" może być wykorzystywana do określenia stylu dla tej sekcji.
-
Wewnątrz "photoSecond" znajdują się trzy grupy obrazów wewnątrz
<div class="animation">, z różnymi identyfikatorami i atrybutami alt, width i height. -
photoSecond: Jest to kolejna sekcja o klasie "photoSecond".
-
showLessButton: Jest to druga etykieta powiązana z polem wyboru o identyfikatorze "toggleImages". Ma również klasę "buttonFoto" i zawiera tekst "LOAD LESS PHOTO".
Kod CSS:
-
Styl dla elementu
mainzawiera definicje flex, szerokość i inne właściwości. -
Styl dla elementu o identyfikatorze "hamburger" ukrywa ten element.
-
Styl dla elementu
inputo identyfikatorze "toggle" ukrywa to pole wyboru. -
Styl dla elementu o klasie "cart-icon" definiuje kursor, wyśrodkowanie i inne właściwości.
-
Styl dla elementu o identyfikatorze "cartCount" definiuje wygląd licznika koszyka.
-
Styl dla elementu o klasie "section" definiuje maksymalną szerokość i margines.
-
Styl dla elementów
<img>w sekcjach "photoFirst" i "photoSecond" definiuje szerokość i wysokość. -
Styl dla etykiet o klasie "button" definiuje różne właściwości, takie jak kolor, rozmiar, podkreślenie, margines itp.
-
Styl dla etykiet o klasie "buttonFoto" definiuje wygląd przycisków na stronie.
-
Styl dla elementu o identyfikatorze "toggleImages" definiuje jego wygląd oraz ukrywanie.
-
Styl dla elementu o identyfikatorze "showMoreButton" ukrywa ten element, gdy pole wyboru jest zaznaczone.
-
Styl dla elementu o identyfikatorze "showLessButton" ukrywa ten element, gdy pole wyboru nie jest zaznaczone.
-
Styl dla elementów o klasie "photoSecond" definiuje różne właściwości, takie jak margines, wyświetlanie itp.
-
Styl dla elementów o identyfikatorach "photos1", "photos2", "photos3" i "photosX" definiuje animacje podczas najechania myszką.
-
Styl dla elementu o klasie "logoCat" definiuje animację na nieskończoność.
-
Styl dla elementu o klasie "animation" definiuje różne właściwości, takie jak pozycja, wyśrodkowanie itp.
-
Styl dla elementów o klasie "glasses" definiuje różne właściwości, takie jak pozycja, przejście itp. Są także zdefiniowane opóźnienia animacji dla niektórych elementów.
-
Zdefiniowane są również reguły dla mediów, które dostosowują wygląd strony w zależności od szerokości ekranu.
.
.
Markup
<section class="photoFirst">
<h2 style="display:none;">.</h2>
<img id="photos1" src="img/mainPage4.webp" alt="Lorem ipsum 1" loading="lazy" width="300" height="300">
<img id="photos2" src="img/mainPage5.webp" alt="Lorem ipsum 2" loading="lazy" width="300" height="300">
<img id="photos3" src="img/mainPage6.webp" alt="Lorem ipsum 3" loading="lazy" width="300" height="300">
</section>
<input type="checkbox" id="toggleImages">
<label for="toggleImages" id="showMoreButton" class="buttonFoto">LOAD MORE PHOTO</label>
<div class="photoSecond">
<div class="animation">
<img class="glasses" src="https://kibbles.klausapp.com/assets/img/loader/glasses-regular.svg" alt="oksy1" width="140" height="140">
<img class="logoCat" src="https://kibbles.klausapp.com/assets/img/loader/main.svg" alt="cot1" width="140" height="140">
</div>
<div class="animation">
<img class="glasses" src="https://kibbles.klausapp.com/assets/img/loader/glasses-deal-with-it.svg" alt="oksy2" width="140" height="140">
<img class="logoCat" src="https://kibbles.klausapp.com/assets/img/loader/main.svg" alt="cot2" width="140" height="140">
</div>
<div class="animation">
<img class="glasses" src="https://kibbles.klausapp.com/assets/img/loader/glasses-hearts.svg" alt="oksy3" width="140" height="140">
<img class="logoCat" src="https://kibbles.klausapp.com/assets/img/loader/main.svg" alt="cot3" width="140" height="140">
</div>
</div>
<section class="photoSecond">
<h2 style="display:none;">.</h2>
<img class="photosX" src="img/mainPage1.webp" alt="Lorem ipsum 4" loading="lazy" width="300" height="300">
<img class="photosX" src="img/mainPage2.webp" alt="Lorem ipsum 5" loading="lazy" width="300" height="300">
<img class="photosX" src="img/mainPage3.webp" alt="Lorem ipsum 6" loading="lazy" width="300" height="300">
</section>
<label for="toggleImages" id="showLessButton" class="buttonFoto">LOAD LESS PHOTO</label>
styleIndex.css, line 1902
1.4 #permalink HOME DETAILS - sekcja detali
-
product-grid: Styl dla kontenera zawierającego produkty. Ustawia margines po lewej stronie, ustawia go jako flex container z możliwością zawijania elementów i określa odstęp między nimi.
-
product-image img: Styl dla obrazów produktów, ogranicza ich szerokość na 300 pikseli.
-
product-item: Styl dla pojedynczego elementu produktu. Ustawia jego szerokość na podstawie obliczeń, wyśrodkowuje elementy, określa tło, marginesy i obramowanie.
-
product-item img: Styl dla obrazów wewnątrz elementu produktu. Określa marginesy, maksymalną szerokość na 100% i wysokość na 300 pikseli.
-
product-description: Styl dla opisu produktu, określa wewnętrzny padding.
-
product-content: Styl dla zawartości produktu. Ustawia jego szerokość na podstawie obliczeń, lewy padding i wyrównuje tekst do lewej.
-
product-content h3: Styl dla nagłówka h3 wewnątrz zawartości produktu, określa margines po prawej stronie.
-
details-button: Styl dla przycisków "Details". Określa margines po prawej stronie, szerokość, wyśrodkowanie, kolor i inne właściwości. Podczas najechania myszką zmienia kolor tła, tekst i podkreślenie oraz kształt kursora na wskaźnik.
-
section__heading, about-us__text, about-us__img: Stylizacja nagłówka sekcji, tekstu i obrazków w różnych sekcjach. Włącza animację "transform: scale(1.1)" podczas najechania myszką.
-
section__heading: Dodatkowe style dla nagłówka sekcji, takie jak rozmiar czcionki, kolor i marginesy. Podczas najechania myszką zmienia rozmiar przy pomocy animacji.
-
about-us__textbox: Style dla kontenera tekstu w sekcji "About Us". Określa szerokość i marginesy.
-
about-us__text: Styl dla tekstu w sekcji "About Us" i animacja "transform: scale(1.2)" podczas najechania myszką.
-
about-us__link: Styl dla odnośników w sekcji "About Us". Określa kolor i animację "transform: scale(1.2)" podczas najechania myszką.
-
about-us__box: Styl dla kontenera zawierającego elementy sekcji "About Us". Określa wygląd i marginesy oraz animację "transform: scale(0.8)" podczas najechania myszką.
-
about-us__img: Styl dla obrazków w sekcji "About Us". Określa szerokość, maksymalną szerokość, elastyczność, zaokrąglenie narożników i marginesy.
-
modal: Stylizacja modala (okna modalnego) do wyświetlania treści na stronie. Określa jego wygląd, pozycję i tło.
-
modal-content: Styl dla zawartości modala. Określa tło, marginesy i obramowanie.
-
close: Styl dla przycisku zamykania modala. Określa kolor, rozmiar czcionki i wygląd podczas najechania myszką.
-
#modalCheck:checked ~ .modal: Stylizacja modala w zależności od zaznaczenia checkboxa o id "modalCheck". Wyświetla modal i ustawia animację "fadeOut" na 3 sekundy.
-
product-item4 img: Stylizacja obrazków w określonym elemencie o klasie "product-item4". Dodaje margines od góry.
-
product-item4: Stylizacja konkretnego elementu o klasie "product-item4". Ustawia pozycję jako relatywną, szerokość i wysokość jako automatyczne oraz wyśrodkowuje go na stronie.
-
info-box: Stylizacja okna informacyjnego (info-box) z danymi. Określa pozycję, tło, padding i cień.
-
info-box h2: Stylizacja nagłówka w oknie informacyjnym. Określa margines na dole.
-
price2: Stylizacja ceny w oknie informacyjnym. Określa wagę tekstu i margines na dole.
-
old-price: Stylizacja przekreślonej starej ceny w oknie informacyjnym. Określa dekorację tekstu, wagę i margines po lewej stronie.
LOREM IPSUM
VIEW DETAILS
LOREM IPSUM
VIEW DETAILSLorem ipsum
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac felis mi. Nulla urna risus, malesuada nec blandit at, dictum a est. Integer pulvinar dui elit, vitae vehicula est tempor venenatis. Proin pulvinar pulvinar enim, et vestibulum leo. Vivamus placerat, magna non commodo suscipit, sapien lorem finibus dui, nec interdum lectus ante dictum mi.
Lorem Ipsum
$50.00 $200.00
Lorem ipsum dolor sit amet, consectetur adipiscing elit, et do eiusmod tempor incididunt ut labore et dolore magna aliqua.
VIEW DETAILSMarkup
26. **details-button2**: Stylizacja przycisku "Details" w oknie informacyjnym. Określa kolor tekstu, obramowanie, padding i margines na górze. Podczas najechania myszką zmienia kolor tła i kolor tekstu.
<div class="product-grid">
<div class="product-item" style="background-color: #eae9e7;">
<div class="product-image">
<img src="img/gallery1.webp" alt="Gallery 1" loading="lazy" width="300" height="300">
</div>
<div class="product-content">
<h3>LOREM IPSUM</h3>
<a href="./gallery.html" class="details-button">VIEW DETAILS</a>
</div>
</div>
<div id="drugie" class="product-item" style="background-color: #eae9e7">
<div class="product-image">
<img src="img/gallery2.webp" alt="Gallery 2" loading="lazy" width="300" height="300">
</div>
<div class="product-content">
<h3>LOREM IPSUM</h3>
<a href="./gallery.html" class="details-button">VIEW DETAILS</a>
</div>
</div>
</div>
<section class="section">
<h2 class="section__heading">Lorem ipsum</h2>
<div class="about-us__textbox">
<p class="about-us__text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
ac felis mi. Nulla urna risus, malesuada nec blandit at, dictum a
est. Integer pulvinar dui elit, vitae vehicula est tempor venenatis.
Proin pulvinar pulvinar enim, et vestibulum leo. Vivamus placerat,
magna non commodo suscipit, sapien lorem finibus dui, nec interdum
lectus ante dictum mi.
</p>
<label for="modalCheck" class="button">Lorem ipsum!</label>
<input type="checkbox" id="modalCheck" style="display: none">
<div class="modal">
<div class="modal-content">
<p>Tak dobrze trafiłeś! To lorem ipsum!</p>
</div>
</div>
</div>
<div class="product-item4">
<img src="img/item1.webp" alt="Item" loading="lazy" width="1200" height="700">
<div class="info-box">
<h2>Lorem Ipsum</h2>
<p class="price2">$50.00 <span class="old-price">$200.00</span></p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, et do
eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<a href="./services.html" class="details-button2">VIEW DETAILS</a>
</div>
</div>
styleIndex.css, line 2242
1.5 #permalink HOME SLIDER - sekcja slider
-
slides img: Stylizacja obrazków w elemencie o klasie "slides". Określa szerokość na 260 pikseli i wysokość na 400 pikseli.
-
slides img:hover: Stylizacja obrazków w elemencie o klasie "slides" podczas najechania myszką. Dodaje animację o nazwie "pulse" trwającą 2 sekundy, która jest powtarzana nieskończoną ilość razy.
-
slides img:hover ~ .slide-description: Stylizacja elementu o klasie "slide-description" podczas najechania myszką na obrazki w elemencie o klasie "slides". Dodaje animację o nazwie "pulse" trwającą 2 sekundy, która jest powtarzana nieskończoną ilość razy.
-
slider-controls: Stylizacja kontrolek slidera. Ustawia wyśrodkowanie elementów, margines na górze i na dole oraz wysokość na 10 pikseli.
-
slider-radio: Stylizacja elementów radio (przycisków wyboru) slidera. Ukrywa te elementy.
-
slider-label: Stylizacja etykiet przycisków wyboru slidera. Określa kolor tekstu, podkreślenie oraz efekt transformacji podczas najechania myszką.
-
slider-label: Dodatkowe style dla etykiet przycisków wyboru slidera. Określa szerokość, wysokość, zaokrąglenie narożników, tło, marginesy oraz kursor myszki.
-
slider-radio:checked + .slider-label: Stylizacja etykiet przycisków wyboru slidera, które są zaznaczone. Zmienia tło etykiety na kolor czarny.
-
slider-controls > a:hover, .slider-controls > a:focus, .slider-nav > div:target: Stylizacja nawigacji slidera podczas najechania myszką lub skupienia oraz podczas aktywacji danego slajdu. Zmienia tło na kolor czarny.
-
slider: Stylizacja kontenera slidera. Określa, że ma być to flex container, zajmujący całą dostępną szerokość i wyśrodkowany tekst.
-
slides: Stylizacja kontenera slajdów wewnątrz slidera. Określa, że ma być to flex container, umożliwiający przewijanie w poziomie i zawijający elementy. Ustawia szerokość na 100% widoku i ukrywa poziome przewijanie.
-
slide: Stylizacja pojedynczego slajdu w sliderze. Określa, że slajd powinien być wyśrodkowany, ma elastyczną szerokość, marginesy, tło, cień i inne właściwości.
-
slides i slide: Duplikacja stylizacji dla kontenera slajdów i pojedynczego slajdu. Istnieje błąd w kodzie, który powoduje duplikację tych stylów.
Markup
Podsumowując, powyższe style są używane do stworzenia efektu slidera ze slajdami, gdzie obrazki i ich opisy zmieniają się podczas najechania myszką lub wyboru przycisków. Dodatkowo, style definiują kontrole slidera i jego wygląd ogólny.
<div class="slider">
<div class="slides">
<div id="slide-1" class="slide">
<img src="img/mainPage1.webp" alt="Lorem ipsum 1v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-2" class="slide">
<img src="img/mainPage2.webp" alt="Lorem ipsum 2v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-3" class="slide">
<img src="img/mainPage10.webp" alt="Lorem ipsum 3v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-4" class="slide">
<img src="img/mainPage11.webp" alt="Lorem ipsum 4v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-5" class="slide">
<img src="img/mainPage14.webp" alt="Lorem ipsum 5v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-6" class="slide">
<img src="img/mainPage13.webp" alt="Lorem ipsum 6v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-7" class="slide">
<img src="img/mainPage12.webp" alt="Lorem ipsum 7v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-8" class="slide">
<img src="img/mainPage8.webp" alt="Lorem ipsum 8v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
<div id="slide-9" class="slide">
<img src="img/mainPage9.webp" alt="Lorem ipsum 9v2" loading="lazy" width="260" height="400">
<div class="slide-description">
<p class="product-name">Lorem Ipsum</p>
<p class="price">10$</p>
</div>
</div>
</div>
</div>
styleIndex.css, line 2527
1.6 #permalink HOME PRODUCTS - sekcja produktów
-
.product-grid: Kontener produktów z odstępem 15 pikseli po lewej stronie. Elementy wewnątrz są układane w układzie flex, owijane i oddzielane odstępem 20 pikseli.
-
.product-image img: Szerokość obrazków produktów ograniczona do 300 pikseli.
-
.product-item: Element pojedynczego produktu z elastycznym flex-basis obliczanym na 50% szerokości, marginesem 20 pikseli z prawej strony, tłem o kolorze var(--white-color), marginesami 10 pikseli po lewej i prawej stronie, cieniem i obramowaniem.
-
.product-item img: Obrazki wewnątrz elementów produktów z marginesem 10 pikseli, szerokością maksymalną 100% i wysokością 300 pikseli.
-
.product-description: Treść opisu produktu z wewnętrznym marginesem o wysokości 10 pikseli.
-
.product-content: Zawartość produktu z elastycznym flex-basis na 50%, lewym wewnętrznym marginesem 20 pikseli i wyrównaniem do lewej strony.
-
.product-content h3: Nagłówek elementu produktu z marginesem 5 pikseli po prawej stronie.
-
.details-button: Przycisk "Details" z marginesem 5 pikseli po prawej stronie, szerokością 200 pikseli, wyśrodkowany, z różnymi stylami, takimi jak obramowanie, tło i kolor tekstu. Po najechaniu kursorem zmienia się tło, kolor tekstu i tekst jest podkreślany.
-
.section__heading, .about-us__text, .about-us__img: Elementy z animacją transformacji (skalowania) po najechaniu kursorem.
-
.section__heading: Nagłówek sekcji z określonym rozmiarem czcionki, kolorem, marginesami i animacją transformacji.
-
.about-us__textbox: Kontener dla tekstu z maksymalną szerokością 80vw i marginesami po lewej i prawej stronie.
-
.about-us__text: Tekst z właściwościami takimi jak justyfikacja, waga czcionki, rozmiar, linia, kolor i animacja transformacji.
-
.about-us__link: Linki w tekście ze stylem koloru i animacją transformacji.
-
.about-us__box: Kontener dla sekcji "O nas" z różnymi stylami i animacją transformacji.
-
.about-us__img: Obrazki w sekcji "O nas" z określonymi właściwościami, takimi jak szerokość, maksymalna szerokość, elastyczność i zaokrąglenie rogów.
-
.modal: Okno modalne ukrywane domyślnie, pozycja stała, z indeksem z przodu i tłem o kolorze rgba.
-
.modal-content: Zawartość okna modalnego z określonym tłem, marginesami, obramowaniem i szerokością.
-
.close: Przycisk zamykania okna modalnego z określonym kolorem, rozmiarem i grubością czcionki.
-
#modalCheck:checked ~ .modal: Wyświetla okno modalne i stosuje animację po zaznaczeniu odpowiedniego elementu formularza.
-
.product-item4: Elementy produktów o klasie "product-item4" z różnymi właściwościami, takimi jak pozycja, szerokość, wysokość i marginesy.
-
.product-item4 img: Obrazki wewnątrz elementów produktów o klasie "product-item4" z określonymi właściwościami.
-
.info-box: Skrzynka z informacjami o produkcie z różnymi właściwościami, takimi jak pozycja, szerokość, tło i cień.
-
.info-box h2: Nagłówek skrzynki z informacjami z marginesem dolnym.
-
.price2, .old-price: Ceny produktów z określonymi stylami, takimi jak grubość czcionki i dekoracje tekstowe.
-
.details-button2: Przyciski "Details" w innej sekcji z różnymi stylami, takimi jak tło i kolor tekstu.
Media Queries:
Kod zawiera także media queries, które dostosow
ują układ strony dla ekranów o szerokości poniżej 768px i 650px. Dla mniejszych ekranów, elementy są dostosowywane, marginesy, szerokości i inne właściwości są modyfikowane, aby strona była responsywna.
Struktura HTML:
Kod HTML zawiera sekcje z elementami o klasach "product-grid1" i "product-grid2", które reprezentują różne produkty z obrazkami, nagłówkami i cenami.
Lorem
Lorem
Lorem
Lorem
Lorem
Lorem
Markup
Ogólnie rzecz biorąc, ten kod HTML i CSS jest używany do wyświetlania produktów na stronie internetowej w formie siatki, z odpowiednimi stylami i animacjami. Jest również odpowiednio dostosowany do różnych rozmiarów ekranów dzięki media queries.
<div class="product-grid1">
<div class="product-item1">
<img src="img/gallery9.webp" alt="LoremIpsum" loading="lazy" width="200" height="200">
<div class="overlay">
<div class="text">
<h3>Lorem</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
</p>
<a href="./product.html" class="details-button-x">VIEW ALL</a>
</div>
</div>
</div>
<div class="product-item1">
<img src="img/gallery12.webp" alt="Loremer" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja1" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja2" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja3" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja4" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja5" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/gallery11.webp" alt="Loremer2" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja6" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja7" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja8" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja9" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja10" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/gallery10.webp" alt="Loremer3" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja11" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja12" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja13" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja14" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja15" loading="lazy" width="30" height="30">
</span>
</div>
</div>
</div>
<div class="product-grid2">
<div class="product-item1">
<img src="img/abootUs4.webp" alt="Loremer4" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja16" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja17" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja18" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja19" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja20" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/abootUs3.webp" alt="Loremer5" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja21" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja22" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja23" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja24" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja25" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/abootUs2.webp" alt="Loremer6" loading="lazy" width="200" height="200">
<h3>Lorem</h3>
<div class="price-rating">
<span class="price">30$</span>
<span class="rating"><img src="img/gwiazda_zolta.svg" alt="Promocja26" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja27" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja28" loading="lazy" width="30" height="30">
<img src="img/gwiazda_zolta.svg" alt="Promocja29" loading="lazy" width="30" height="30">
<img src="img/gwiazda_szara.svg" alt="Promocja30" loading="lazy" width="30" height="30">
</span>
</div>
</div>
<div class="product-item1">
<img src="img/abootUs1.webp" alt="Loremer7" loading="lazy" width="200" height="200">
<div class="overlay">
<div class="text">
<h3>Lorem</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
</p>
<a href="./product.html" class="details-button-x">VIEW ALL</a>
</div>
</div>
</div>
</div>
styleIndex.css, line 2768
1.7 #permalink HOME OFERTA/SERWIS - sekcja ofert
-
.offer: Stylizacja sekcji oferty, która określa tło, font oraz marginesy, a także wyśrodkowuje zawartość. Nadmiarowy tekst jest ukrywany.
-
.offer__body: Stylizacja elementu zawierającego treść oferty. Ustawia wygląd elementu, centruje zawartość i ukrywa nadmiarowy tekst.
-
.offer__content: Stylizacja kontenera treści oferty. Określa wygląd fontu, centruje zawartość i ustala odstępy między elementami.
-
.offer__heading: Stylizacja nagłówka oferty. Określa wygląd fontu, rozmiar, wagę, kolor tła i kolor tekstu.
-
.offer__title: Stylizacja tytułu oferty. Określa wygląd fontu, rozmiar, wagę, kolor tła i kolor tekstu.
-
.offer__text: Stylizacja tekstu oferty. Określa maksymalną szerokość, margines na dole, wygląd fontu, kolor tła i kolor tekstu.
-
.offer__btn: Stylizacja przycisku oferty. Definiuje wygląd tła, zaokrąglenie narożników, kolor tekstu i kursor myszki.
-
.offer__img: Stylizacja obrazka w ofercie. Określa szerokość, wysokość, maksymalną szerokość, marginesy, animację oraz punkt transformacji.
-
.service: Stylizacja sekcji usług, która ustala padding i odstępy między elementami.
-
.service__content: Stylizacja zawartości sekcji usług. Wyśrodkowuje zawartość i definiuje odstępy między elementami.
-
.service__box: Stylizacja pojedynczego bloku usługi. Ustawia wygląd fontu, marginesy oraz odstępy między elementami.
-
.service__box img: Stylizacja obrazka w bloku usługi. Określa szerokość i wysokość obrazka.
-
.service__title: Stylizacja tytułu usługi. Określa wygląd fontu.
-
.service__truck: Stylizacja ikony samochodu ciężarowego w usłudze. Ustala margines z prawej strony.
-
.load-more-container: Stylizacja kontenera przycisku "Load More". Określa wygląd oraz marginesy.
-
.load-more-btn: Stylizacja przycisku "Load More". Definiuje wygląd tła, zaokrąglenie narożników, kolor tekstu i efekt transformacji podczas najechania myszką.
-
.newsletter-signup-section: Stylizacja sekcji z formularzem subskrypcji newslettera. Wyśrodkowuje zawartość i ustala marginesy.
-
.newsletter-signup-container: Stylizacja kontenera formularza subskrypcji.
-
.newsletter-content: Stylizacja treści formularza subskrypcji. Ustala wygląd tekstu.
-
.newsletter-title: Stylizacja tytułu formularza subskrypcji. Określa rozmiar czcionki i marginesy.
-
.newsletter-description: Stylizacja opisu formularza subskrypcji. Określa margines na dole.
-
.newsletter-form: Stylizacja formularza subskrypcji. Ustala wygląd i marginesy.
-
.newsletter-input: Stylizacja pola wprowadzania danych w formularzu subskrypcji. Określa padding, szerokość, obramowanie i kolor tła.
-
.newsletter-submit-btn: Stylizacja przycisku wysyłania formularza subskrypcji. Definiuje wygląd tła, obramowanie, kursor myszki i rozmiar obrazka.
-
.load-more-btn:hover: Stylizacja przycisku "Load More" podczas najechania myszką. Zmienia kolor tła i dodaje podkreślenie.
-
.load-more-btn a: Dodatkowe style dla przycisku "Load More". Zmienia kolor tekstu i efekt transformacji podczas najechania myszką.
Podsumowując, powyższe style są używane do stylizacji różnych sekcji na stronie internetowej, takich jak oferta, usługi, przyciski "Load More" oraz formularz subskrypcji newslettera.
.
SPECIAL OFFER
UPTO 70% OFF
Upgrade your footwear collection with our 70% off special deal! LOREM IPSUM!
VIEW ALL
FREE SHIPING
All Lorem ipsum $150
QUICK PAYMENT
100% Lorem ipsum
FREE RETURNS
Lorem ipsum 30 days
Markup
<section class="offer">
<h2 style="display:none;">.</h2>
<div class="offer__body">
<img src="img/logo1transparent.webp" alt="LOGOv2" class="offer__img" loading="lazy" width="300" height="300">
<div class="offer__content container">
<p class="offer__heading">SPECIAL OFFER</p>
<p class="offer__title">UPTO 70% OFF</p>
<p class="offer__text">
Upgrade your footwear collection with our 70% off special deal!
LOREM IPSUM!
</p>
<a href="./product.html" class="details-button">VIEW ALL</a>
</div>
</div>
</section>
<section class="service">
<div class="service__content container">
<div class="service__box">
<img src="img/pay1.webp" alt="pay1" loading="lazy" width="150" height="150">
<div class="service__text">
<h4 class="service__title">FREE SHIPING</h4>
<p class="service__describe">All Lorem ipsum $150</p>
</div>
</div>
<div class="service__box">
<img src="img/pay2.webp" alt="pay2" loading="lazy" width="150" height="150">
<div class="service__text">
<h4 class="service__title">QUICK PAYMENT</h4>
<p class="service__describe">100% Lorem ipsum </p>
</div>
</div>
<div class="service__box">
<img src="img/pay1.webp" alt="pay3" loading="lazy" width="150" height="150">
<div class="service__text">
<h4 class="service__title">FREE RETURNS</h4>
<p class="service__describe">Lorem ipsum 30 days</p>
</div>
</div>
</div>
</section>
<div class="load-more-container">
<a href="./gallery.html" class="load-more-btn">LOAD MORE PRODUCTS</a>
</div>
<div class="newsletter-signup-section">
<div class="newsletter-signup-container">
<div class="newsletter-content">
<h2 class="newsletter-title">SIGN UP FOR THE NEWSLETTER</h2>
<p class="newsletter-description">Subscribe for the latest stories and promotions</p>
</div>
<form class="newsletter-form">
<input type="email" class="newsletter-input" placeholder="Enter your email address" required>
<button type="submit" class="newsletter-submit-btn">
<img src="img/phone.svg" alt="Send" loading="lazy" width="30" height="30">
</button>
</form>
</div>
</div>
styleIndex.css, line 3127