Демонстрация: Comment-01
Відгуки
Лариса
Роками страждала від болю в колінах. Жоден препарат не допомагав до кінця. Але після початку прийому Суглобол, я вперше за довгий час змогла вільно ходити без болю. Це справжнє диво!
Валентина Кривошапко
Суглобол
дійсно ефективний! Артрит мучив мене багато років, але після курсу я відчула значне покращення. Вже не боюся активних прогулянок з онуками)
Олег
Скільки я не пробував різних засобів, біль у плечах не відступав. Але цей новий препарат зробив те, що інші не змогли. Рекомендую.
Вікторія Бабенко
Я довго сумнівалася, чи варто спробувати щось нове, але цей препарат перевершив усі мої очікування! Після першого тижня прийому припухлість на руках почала спадати а головне – повністю зник біль, який мучив мене роками.
Галина Шевчук
Велике дякую Фонду Петра Порошенка за все що робиться для людей! Сьогодні замовила препарат, але вже вірю в те, що він допоможе.
Максим Рудько
Ніколи не залишаю відгуків, але про Суглобол не міг не сказати. Я завжди любив свою роботу. Я столяр.. Але з роками біль у руках став настільки сильним, що я почав сумніватися, чи зможу продовжувати. Лікарі розводили руками і мене реально накривав відчай. Аж поки я не почув про Суглобол. Для мене також важливим був натуральний склад, бо зараз усюди одна хімоза яка тільки вбиває. Десь через 2 тижні я зрозумів, що вперше за багато років не відчуваю тягнучого болю в руках. Я знову міг працювати. Не знаю як кому, але для мене це фантастика!!
Оксана Василенко
Суглобол вразив мене як фахівця своєю унікальною формулою, яка не має аналогів на ринку. Як лікар-ревматолог, я дуже задоволена результатами його застосування і впевнена, що він стане відмінним вибором для відновлення суглобів моїх пацієнтів.
Валерій
Купив Суглобол своєму батьку, бо через постійний біль в колінах йому було дуже важко ходити. Пройшов місяць і вже бігає як молодий – всі в приємному шоці!
Ганна Миколаївна
Я пенсіонерка і грошей не вистачає на дорогі препарати, які тільки й пропонують в аптеці.. Дякую ЄС за можливість повернутися до нормального життя не за всі гроші світу!
Code: 👇
<!-- HTML -->
<div class="seventh__container">
<div class="title border">
<div class="bigger-title"><span>Відгуки</span></div>
</div><!-- FORM START -->
<form action="#" class="intlTelInput border" id="commentForm" method="post">
<div class="form__item">
<div class="file">
<div class="file__item"><label class="form__avatar" for="formImage" id="formAvatar"></label>
<input accept=".jpg, .png, .gif" class="file__input" id="formImage" name="image" type="file"> <label class="file-label" for="formImage">Завантажити</label></div>
</div>
</div>
<div class="form__inputs"><input id="inputCommentName" placeholder="Ваше Ім'я" type="text" value="">
<textarea cols="20" id="inputCommentText" name="" placeholder="Ваш коментар..." rows="5"></textarea>
<button id="commentPush" type="submit">Опублікувати</button>
</div>
</form>
<!-- FORM END -->
<div data-comments="" id="comments">
<div id="commentPushBlock"></div>
<div class="comment"><span class="text1 lt21">Лариса</span> <span class="text2"></span>
<div class="text3"><img alt="img" src="img/ava1.webp">
<div class="comment-wrapper">
<div class="txtCom lt22">Роками страждала від болю в колінах. Жоден препарат не допомагав до кінця. Але після початку прийому Суглобол, я вперше за довгий час змогла вільно ходити без болю. Це справжнє диво!
<img src="img/_com1.webp" alt="">
</div>
<div class="comment-action">
<div class="comment-like"><a href="#"><img alt="like icon" src="../../img/elements/comments/comment-1/like.svg"></a></div>
<div class="comment-date">
<script type="text/javascript">d = new Date();
p = new Date(d.getTime() - 0 * 86400000);
monthA = '.01,02,03,04,05,06,07,08,09,10,11,12'.split(',');
document.write(p.getDate() - 0 + '.' + monthA[p.getMonth()] + '.' + p.getFullYear());</script>
</div>
</div>
</div>
</div>
</div>
<div class="comment"><span class="text1 lt21">Валентина Кривошапко</span> <span class="text2"></span>
<div class="text3"><img alt="img" src="img/ava2.webp">
<div class="comment-wrapper">
<div class="txtCom lt22"><a href="#">Суглобол</a>
дійсно ефективний! Артрит мучив мене багато років, але після курсу я відчула значне покращення. Вже не боюся активних прогулянок з онуками)
</div>
<div class="comment-action">
<div class="comment-like"><a href="#"><img alt="like icon" src="../../img/elements/comments/comment-1/like.svg"></a></div>
<div class="comment-date">
<script type="text/javascript">d = new Date();
p = new Date(d.getTime() - 0 * 86400000);
monthA = '.01,02,03,04,05,06,07,08,09,10,11,12'.split(',');
document.write(p.getDate() - 0 + '.' + monthA[p.getMonth()] + '.' + p.getFullYear());</script>
</div>
</div>
</div>
</div>
</div>
<div class="comment"><span class="text1 lt21">Олег</span> <span class="text2"></span>
<div class="text3"><img alt="img" src="img/ava3.webp">
<div class="comment-wrapper">
<div class="txtCom lt22">Скільки я не пробував різних засобів, біль у плечах не відступав. Але цей новий препарат зробив те, що інші не змогли. Рекомендую.
<img src="img/_com2.webp" alt="">
</div>
<div class="comment-action">
<div class="comment-like"><a href="#"><img alt="like icon" src="../../img/elements/comments/comment-1/like.svg"></a></div>
<div class="comment-date">
<script type="text/javascript">d = new Date();
p = new Date(d.getTime() - 1 * 86400000);
monthA = '.01,02,03,04,05,06,07,08,09,10,11,12'.split(',');
document.write(p.getDate() - 0 + '.' + monthA[p.getMonth()] + '.' + p.getFullYear());</script>
</div>
</div>
</div>
</div>
</div>
<div class="comment"><span class="text1 lt21">Вікторія Бабенко</span> <span class="text2"></span>
<div class="text3"><img alt="img" src="img/ava4.webp">
<div class="comment-wrapper">
<div class="txtCom lt22">Я довго сумнівалася, чи варто спробувати щось нове, але цей препарат перевершив усі мої очікування! Після першого тижня прийому припухлість на руках почала спадати а головне – повністю зник біль, який мучив мене роками.
</div>
<div class="comment-action">
<div class="comment-like"><a href="#"><img alt="like icon" src="../../img/elements/comments/comment-1/like.svg"></a></div>
<div class="comment-date">
<script type="text/javascript">d = new Date();
p = new Date(d.getTime() - 1 * 86400000);
monthA = '.01,02,03,04,05,06,07,08,09,10,11,12'.split(',');
document.write(p.getDate() - 0 + '.' + monthA[p.getMonth()] + '.' + p.getFullYear());</script>
</div>
</div>
</div>
</div>
</div>
<div class="comment"><span class="text1 lt21">Галина Шевчук</span> <span class="text2"></span>
<div class="text3"><img alt="img" src="img/ava5.webp">
<div class="comment-wrapper">
<div class="txtCom lt22">Велике дякую Фонду Петра Порошенка за все що робиться для людей! Сьогодні замовила препарат, але вже вірю в те, що він допоможе.
</div>
<div class="comment-action">
<div class="comment-like"><a href="#"><img alt="like icon" src="../../img/elements/comments/comment-1/like.svg"></a></div>
<div class="comment-date">
<script type="text/javascript">d = new Date();
p = new Date(d.getTime() - 1 * 86400000);
monthA = '.01,02,03,04,05,06,07,08,09,10,11,12'.split(',');
document.write(p.getDate() - 0 + '.' + monthA[p.getMonth()] + '.' + p.getFullYear());</script>
</div>
</div>
</div>
</div>
</div>
<div class="comment"><span class="text1 lt21">Максим Рудько</span> <span class="text2"></span>
<div class="text3"><img alt="img" src="img/ava6.webp">
<div class="comment-wrapper">
<div class="txtCom lt22">Ніколи не залишаю відгуків, але про Суглобол не міг не сказати. Я завжди любив свою роботу. Я столяр.. Але з роками біль у руках став настільки сильним, що я почав сумніватися, чи зможу продовжувати. Лікарі розводили руками і мене реально накривав відчай. Аж поки я не почув про Суглобол. Для мене також важливим був натуральний склад, бо зараз усюди одна хімоза яка тільки вбиває. Десь через 2 тижні я зрозумів, що вперше за багато років не відчуваю тягнучого болю в руках. Я знову міг працювати. Не знаю як кому, але для мене це фантастика!!
</div>
<div class="comment-action">
<div class="comment-like"><a href="#"><img alt="like icon" src="../../img/elements/comments/comment-1/like.svg"></a></div>
<div class="comment-date">
<script type="text/javascript">d = new Date();
p = new Date(d.getTime() - 2 * 86400000);
monthA = '.01,02,03,04,05,06,07,08,09,10,11,12'.split(',');
document.write(p.getDate() - 0 + '.' + monthA[p.getMonth()] + '.' + p.getFullYear());</script>
</div>
</div>
</div>
</div>
</div>
<div class="comment">
<span class="text1 lt21">Оксана Василенко</span>
<span class="text2"></span>
<div class="text3"><img alt="img" src="img/ava7.webp">
<div class="comment-wrapper">
<div class="txtCom lt22"> Суглобол вразив мене як фахівця своєю унікальною формулою, яка не має аналогів на ринку. Як лікар-ревматолог, я дуже задоволена результатами його застосування і впевнена, що він стане відмінним вибором для відновлення суглобів моїх пацієнтів.
</div>
<div class="comment-action">
<div class="comment-like">
<a href="#">
<img src="../../img/elements/comments/comment-1/like.svg" alt="like icon">
</a>
</div>
<div class="comment-date">
<script type="text/javascript">d = new Date();
p = new Date(d.getTime() - 2 * 86400000);
monthA = '.01,02,03,04,05,06,07,08,09,10,11,12'.split(',');
document.write(p.getDate() - 0 + '.' + monthA[p.getMonth()] + '.' + p.getFullYear());</script>
</div>
</div>
</div>
</div>
</div>
<div class="comment">
<span class="text1 lt21">Валерій</span>
<span class="text2"></span>
<div class="text3"><img alt="img" src="img/ava8.webp">
<div class="comment-wrapper">
<div class="txtCom lt22">Купив Суглобол своєму батьку, бо через постійний біль в колінах йому було дуже важко ходити. Пройшов місяць і вже бігає як молодий – всі в приємному шоці!
</div>
<div class="comment-action">
<div class="comment-like">
<a href="#">
<img src="../../img/elements/comments/comment-1/like.svg" alt="like icon">
</a>
</div>
<div class="comment-date">
<script type="text/javascript">d = new Date();
p = new Date(d.getTime() - 2 * 86400000);
monthA = '.01,02,03,04,05,06,07,08,09,10,11,12'.split(',');
document.write(p.getDate() - 0 + '.' + monthA[p.getMonth()] + '.' + p.getFullYear());</script>
</div>
</div>
</div>
</div>
</div>
<div class="comment">
<span class="text1 lt21">Ганна Миколаївна</span>
<span class="text2"></span>
<div class="text3"><img alt="img" src="img/ava9.webp">
<div class="comment-wrapper">
<div class="txtCom lt22">Я пенсіонерка і грошей не вистачає на дорогі препарати, які тільки й пропонують в аптеці.. Дякую ЄС за можливість повернутися до нормального життя не за всі гроші світу!
</div>
<div class="comment-action">
<div class="comment-like">
<a href="#">
<img src="../../img/elements/comments/comment-1/like.svg" alt="like icon">
</a>
</div>
<div class="comment-date">
<script type="text/javascript">d = new Date();
p = new Date(d.getTime() - 2 * 86400000);
monthA = '.01,02,03,04,05,06,07,08,09,10,11,12'.split(',');
document.write(p.getDate() - 0 + '.' + monthA[p.getMonth()] + '.' + p.getFullYear());</script>
</div>
</div>
</div>
</div>
</div>
</div>
<button class="title border" data-load-comment="">Завантажити ще...</button>
</div>
<!-- CSS -->
picture {
display: flex;
justify-content: center;
align-items: center;
}
b,
.bold {
font-weight: 700;
}
i,
.italic {
font-style: italic;
}
.decor {
color: #fff000;
}
#comments [href="#toform"] {
color: #212a98;
font-weight: 700;
cursor: pointer;
}
.image img {
width: 100%;
}
ol.list {
list-style: decimal;
}
ul.list {
list-style: disc;
}
ul.list,
ol.list {
list-style-position: inside;
display: grid;
row-gap: 10px;
}
.comment {
display: grid;
margin-bottom: 20px;
}
.text3 {
margin-top: 8px;
display: flex;
-moz-column-gap: 10px;
column-gap: 10px;
}
.text3 > img {
flex: 0 0 80px;
border-radius: 10px;
width: 80px;
height: 80px;
border: 2px solid #fff000;
}
#commentForm {
display: flex;
flex-direction: row;
align-items: flex-start;
justify-content: start;
margin-top: 20px;
max-width: 800px;
margin: 20px 0;
padding: 20px 10px;
/* border: 1px solid #ccc; */
}
#commentForm .form__item {
/* width: 100%; */
color: snow;
border-radius: 50%;
}
#commentForm .form__avatar {
position: relative;
display: flex;
background-color: #fff;
background: url("../../../img/elements/comments/comment-1/userpic.webp") no-repeat center center/cover;
width: 100%;
height: 90px;
/* border-radius: 50%; */
overflow: hidden;
border-radius: 10px;
}
#commentForm .form__avatar img {
width: 100%;
max-width: 100%;
}
#commentForm .form__avatar::before {
position: absolute;
content: "Фото";
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(0, 0, 0, 0.3);
font-size: 12px;
}
#commentForm .form__avatar--loaded::before {
display: none;
}
#commentForm label {
color: #fff;
}
#commentForm .file-label {
display: inline-block;
width: 86%;
color: #000;
font-size: 12px;
padding: 2px 10px;
border: 1px solid #000;
border-radius: 4px;
text-align: center;
margin-top: 5px;
background: linear-gradient(to bottom, #fff, #ccc);
}
#inputCommentName {
margin-bottom: 10px;
}
#commentForm input,
#commentForm textarea {
width: 100%;
padding: 12px 20px;
box-sizing: border-box;
border: 1px solid #ccc;
background-color: #f8f8f8;
resize: none;
}
#commentForm input:focus,
#commentForm textarea:focus {
outline: none;
}
#commentForm .form__inputs {
position: relative;
width: 100%;
margin-right: 50px;
}
#commentPush {
display: inline-block;
/*background-color: transparent;*/
border: none;
background-color: #212a98;
color: #fff;
font-weight: bold;
padding: 10px 25px;
text-decoration: none;
margin: 5px 0px 0px 0px;
border-radius: 5px;
cursor: pointer;
transition: all 0.2s ease;
}
#commentPush img {
width: 30px;
}
#commentPush:hover {
background-color: #212a98;
color: #fff;
}
.form__label {
font-size: 12px;
}
.file {
width: 100%;
max-width: 90px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.file__item {
position: relative;
}
.file__input {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
font-size: 0;
cursor: pointer;
}
.file__button {
display: inline-flex;
min-height: 40px;
justify-content: center;
align-items: center;
background-color: #bf0909;
color: whitesmoke;
border-radius: 5px;
padding: 0px 20px;
}
.file__preview {
display: inline-block;
max-width: 100px;
padding: 10px 0px 0px 0px;
}
.file__preview img {
max-width: 100%;
}
.error {
outline: 3px solid #a12000;
}
/*style comment*/
.item {
width: 100%;
display: flex;
flex-direction: row;
margin: 0 0 20px 0;
}
.component_ava {
background-size: 100% 100%;
-webkit-background-size: 100% 100%;
width: 36px;
height: 36px;
min-width: 36px;
min-height: 36px;
overflow: hidden;
border-radius: 100%;
margin: 0 10px 0 0;
}
.component_info {
width: 100%;
display: flex;
flex-direction: row;
align-items: flex-end;
margin: 0 0 5px 0;
}
.component_info_inner {
background-color: #ebedf0;
border-radius: 18px;
display: inline-block;
line-height: 16px;
margin-top: 0;
min-width: 0;
overflow: hidden;
padding: 6px 12px 7px 12px;
}
.component_name {
color: #000;
font-weight: 600;
font-size: 12px;
margin: 0 0 3px 3px;
text-decoration: none;
}
.component_licked {
position: relative;
bottom: 3px;
left: 0;
display: flex;
}
.component_body {
width: 100%;
}
.component_voir {
color: #000;
font-weight: 600;
font-size: 12px;
margin: 7px 0 0 12px;
}
.component_reposy {
color: #929292;
font-weight: 600;
font-size: 12px;
margin: 6px 0 0 12px;
display: flex;
flex-wrap: wrap;
}
.component_reposy b {
font-weight: 100;
word-spacing: 0 !important;
color: #757575;
}
.component_img {
width: 70%;
border-radius: 18px;
overflow: hidden;
margin: 7px 0 6px 0;
height: auto;
}
.component_img img {
width: 100%;
display: flex;
height: auto;
transition: all 3s ease-in;
}
.component_licked {
background: #fff;
border-radius: 10px;
box-shadow: 1px 1px 3px 0 #dadde1;
color: #909192;
font-size: 11px;
font-weight: normal;
height: 20px;
line-height: 20px;
margin-left: -10px;
padding-right: 4px;
transform: translateY(-6px);
z-index: 5;
}
a {
font-weight: 600;
text-decoration: none;
color: #232323;
}
.icons {
white-space: nowrap;
display: flex;
margin: 0;
}
#commentForm .form__inputs {
padding: 0 0 0 15px;
margin-right: 0;
row-gap: 15px;
}
#commentForm .form__inputs input,
#commentForm .form__inputs textarea,
#commentForm .form__inputs button {
border-radius: 5px;
}
#commentForm .form__inputs textarea {
color: #000;
}
#commentForm .form__inputs textarea::-moz-placeholder {
opacity: 0.5;
}
#commentForm .form__inputs textarea::placeholder {
opacity: 0.5;
}
.comment-wrapper {
width: 100%;
align-self: flex-end;
display: grid;
row-gap: 10px;
position: relative;
padding-bottom: 4px;
}
s .comment-wrapper:after {
content: "";
position: absolute;
top: 100%;
left: 0;
width: 100%;
height: 1px;
border-radius: 10px;
background: #fff000;
}
.comment-wrapper img {
width: 20px;
height: 20px;
border-radius: 0;
pointer-events: none;
}
.comment-action {
display: flex;
align-items: center;
-moz-column-gap: 15px;
column-gap: 15px;
justify-self: end;
}
.decor {
color: #fff000;
}
b,
.bold {
font-weight: 700;
}
.bigger {
font-size: 1.3em;
}
.bigger-title {
font-size: 1.5em;
}
.title {
font-family: "Rubik";
font-weight: 700;
font-size: 1.3em;
text-transform: uppercase;
text-align: center;
}
.title span {
color: #212a98;
}
.name {
font-size: 1.2em;
}
.hero {
background-color: #000;
}
.hero__bg {
position: relative;
margin-left: auto;
margin-right: auto;
}
.hero__bg img {
width: 100%;
}
.hero__text {
padding: 20px;
position: absolute;
left: 0;
width: 100%;
color: #fff;
text-align: center;
font-size: 1.1em;
text-transform: uppercase;
}
section.bg-star {
background: url("../img/bg.webp") 0 0/cover no-repeat;
}
.border {
border: 2px solid #fff000;
padding: 10px;
border-radius: 3px;
color: #212a98;
}
.center {
text-align: center;
}
.upper {
text-transform: uppercase;
}
[class*=__container] {
display: grid;
row-gap: 25px;
}
.text p:not(:last-child) {
margin-bottom: 15px;
}
.text span {
color: #fff000;
}
.first {
margin-top: -120px;
}
.image {
border: 1px solid #fff000;
position: relative;
border-radius: 3px;
max-width: 450px;
margin-left: auto;
margin-right: auto;
}
.grey-bg {
position: relative;
padding-top: 60px;
padding-bottom: 60px;
background-color: rgba(255, 255, 255, 0.1);
}
.grey-bg:before,
.grey-bg:after {
color: #fff000;
font-size: 5em;
position: absolute;
font-family: "Rubik";
padding: 5px;
display: flex;
justify-content: center;
align-items: center;
line-height: 1;
}
.grey-bg:before {
content: "“";
top: 0;
left: 10px;
}
.grey-bg:after {
content: "”";
bottom: -35px;
right: 10px;
}
.offer {
margin-left: auto;
margin-right: auto;
}
.offer img {
max-width: 100%;
filter: drop-shadow(0 0 15px #fff000);
}
.form {
margin-left: auto;
margin-right: auto;
}
.form__title {
padding-top: 10px;
font-style: italic;
}
.form__inputs {
display: grid;
row-gap: 25px;
padding: 20px;
}
.form__inputs input {
color: #000;
border-radius: 5px;
padding: 10px 5px;
display: block;
width: 100%;
background-color: #fff;
text-align: center;
}
.form__inputs input::-moz-placeholder {
text-transform: uppercase;
opacity: 0.5;
font-size: 0.9em;
}
.form__inputs input::placeholder {
text-transform: uppercase;
opacity: 0.5;
font-size: 0.9em;
}
.form__inputs input:last-child {
text-transform: uppercase;
}
.form__submit {
margin-top: 20px;
/* max-width: 70%; */
margin-left: auto;
margin-right: auto;
}
.form__submit input {
display: block;
width: 100%;
background-color: #fff;
color: #000;
border-radius: 5px;
text-transform: uppercase;
font-weight: 700;
padding: 5px;
}
.list {
list-style: none !important;
}
.list li {
display: flex;
align-items: center;
-moz-column-gap: 12px;
column-gap: 12px;
text-transform: uppercase;
font-weight: 700;
text-align: center;
position: relative;
font-size: 1.2em;
}
.list li p {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.list li:before {
content: "";
flex: 0 0 30px;
background: #fff000;
display: block;
width: 30px;
height: 30px;
border-radius: 50%;
}
.list li:not(:last-child) {
margin-bottom: 20px;
}
a[href="#scroll-to-form"] {
font-weight: 700;
font-size: 1.1em;
color: #ffdd00;
}
.txtCom img {
width: 100%;
height: auto;
}
@media (min-width: 400px) {
.form {
max-width: 70%;
}
.form__title {
font-size: 1.8em;
}
}
@media (min-width: 450px) {
.hero__bg {
max-width: 350px;
}
.hero__text {
bottom: 100px;
}
.txtCom img {
width: 50%;
}
}
@media (min-width: 451px) {
.offer {
max-width: 400px;
}
}
@media (min-width: 769px) {
[class*=__container],
.header__container {
max-width: 800px;
margin-left: auto;
margin-right: auto;
}
.header__body {
align-items: center;
}
.header-action__wrapper {
flex: 1 1 auto;
max-width: -moz-max-content;
max-width: max-content;
position: relative;
z-index: 2;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: flex-end;
-moz-column-gap: 15px;
column-gap: 15px;
}
.header-action li:hover a:after {
width: 100%;
}
.header-action li a {
display: block;
position: relative;
}
.header-action li a:after {
content: "";
position: absolute;
bottom: 5px;
left: 0;
width: 0;
height: 1px;
background: #000;
transition: all 0.3s ease;
}
.burger {
display: none;
}
.image {
margin-left: auto;
margin-right: auto;
}
.image_50 {
max-width: 50%;
}
.image_60 {
max-width: 60%;
}
.image_70 {
max-width: 70%;
}
.image_80 {
max-width: 80%;
}
.image_90 {
max-width: 90%;
}
.image_100 {
max-width: 100%;
}
.form {
max-width: 40%;
}
.list {
justify-items: center;
}
}
@media (max-width: 768px) {
.header-action {
position: fixed;
top: 0;
left: 100%;
width: 100%;
background-color: rgba(211, 211, 211, 0.5);
background-color: #000;
overflow-y: auto;
}
.header-action__wrapper {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
row-gap: 15px;
padding: 20px 20px 30px 20px;
transition: all 0.5s ease;
overflow-y: auto;
height: 100%;
}
.header-action.active {
left: 0;
}
}
@media (max-width: 480px) {
#commentForm {
justify-content: center;
padding: 10px;
}
#commentForm .form__avatar::before {
font-size: 10px;
}
#commentForm input,
#commentForm textarea {
border-width: 1px;
padding: 10px 45px 10px 15px;
font-size: 14px;
}
#commentPush {
font-size: 14px;
}
#commentForm .form__inputs {
margin: 0;
}
}
@media (max-width: 450px) {
.offer {
max-width: 60%;
}
}
@media (max-width: 400px) {
.hero__text {
bottom: 20%;
}
}
@media (max-width: 399px) {
.form__title {
font-size: 1.3em;
}
}
@media (min-width: 401px) and (max-width: 449px) {
.hero__text {
bottom: 25%;
}
}
<!-- JS -->
let commentParent = document.querySelector(`[data-comments]`);
let comments = Array.from(commentParent.children).filter(el => el.id !== 'commentPushBlock');
const INITIAL_COMMENTS_COUNT = 4;
let counter = -1;
comments.forEach((el) => {
el.style.display = "none";
});
for (let i = 0; i < INITIAL_COMMENTS_COUNT && i < comments.length; i++) {
comments[i].style.display = "grid";
counter = i;
}
document
.querySelector(`[data-load-comment]`)
.addEventListener("click", loadComment);
function loadComment() {
if (comments.length - 1 > counter) {
counter++;
comments[counter].style.display = "grid";
if (comments.length - 1 === counter) {
this.style.pointerEvents = "none";
}
} else {
this.style.pointerEvents = "none";
}
}
class Comment {
constructor(commentForm, inputCommentName, inputCommentText, formImage, formAvatar, commentPushBlock) {
this.commentForm = document.querySelector(commentForm);
this.inputCommentName = document.querySelector(inputCommentName);
this.inputCommentText = document.querySelector(inputCommentText);
this.formImage = document.querySelector(formImage);
this.formAvatar = document.querySelector(formAvatar);
this.commentPushBlock = document.querySelector(commentPushBlock);
this.commArrAll = [];
this.formImageUrl = null;
this.formImageChange();
this.pushComBlock();
this.domOnloader();
}
uploadFile(file) {
if (!["image/jpeg", "image/png", "image/gif"].includes(file.type)) {
alert("Дозволені лише зображення (JPG, PNG, GIF).");
this.formImage.value = "";
return;
}
// Перевірка розміру файлу (<1 Мб)
if (file.size > 1 * 1024 * 1024) {
alert("Розмір файлу не повинен перевищувати 1 МБ.");
return;
}
const reader = new FileReader();
reader.onload = (e) => {
this.formAvatar.innerHTML = `
`;
this.formAvatar.classList.add("form__avatar--loaded");
this.formImageUrl = e.target.result;
};
reader.onerror = function (e) {
alert("Помилка при читанні файлу.");
};
reader.readAsDataURL(file);
}
formImageChange() {
this.formImage.addEventListener("change", () => {
if (this.formImage.files.length > 0) {
this.uploadFile(this.formImage.files[0]);
}
});
}
pushComm() {
let urlAvatar = "";
// Використовуємо завантажений URL, або дефолтний
if (this.formImageUrl) {
urlAvatar = this.formImageUrl;
} else {
urlAvatar = "../../img/elements/comments/comment-1/userpic.webp"; // Шлях до дефолтної картинки
}
const d = new Date();
const p = new Date(d.getTime() - 0 * 86400000);
const monthA = "01,02,03,04,05,06,07,08,09,10,11,12".split(",");
const dateNow = p.getDate() + "." + monthA[p.getMonth()] + "." + p.getFullYear();
// HTML-шаблон нового коментаря
const comment = `<div class="comment">
<span class="text1 lt21">${this.inputCommentName.value}</span>
<span class="text2"></span>
<div class="text3">
<img alt="img" src="${urlAvatar}">
<div class="comment-wrapper">
<div class="txtCom lt22">${this.inputCommentText.value.replace(/\n/g, '<br>')}</div>
<div class="comment-action">
<div class="comment-like">
<a href="#">
<img src="../../img/elements/comments/comment-1/like.svg" alt="like icon">
</a>
</div>
<div class="comment-date">${dateNow}</div>
</div>
</div>
</div>
</div>`;
this.commArrAll.unshift(comment);
this.commentPushBlock.innerHTML = this.commArrAll.join("");
localStorage.setItem("commArr", JSON.stringify(this.commArrAll));
// Очищення форми
this.removeInputClass();
this.formAvatar.innerHTML = "";
this.formAvatar.classList.remove("form__avatar--loaded");
this.formImage.value = "";
this.formImageUrl = null;
}
removeInputClass() {
if (this.inputCommentName) {
this.inputCommentName.value = "";
this.inputCommentName.classList.remove("error");
}
this.inputCommentText.value = "";
this.inputCommentText.classList.remove("error");
}
pushComBlock() {
this.commentForm.addEventListener("submit", (e) => {
e.preventDefault();
let isNameValid = this.inputCommentName ? !!this.inputCommentName.value : true;
let isTextValid = !!this.inputCommentText.value;
if (isNameValid && isTextValid) {
return this.pushComm();
} else {
if (this.inputCommentName && !this.inputCommentName.value) {
this.inputCommentName.classList.add("error");
} else if (this.inputCommentName) {
this.inputCommentName.classList.remove("error");
}
if (!this.inputCommentText.value) {
this.inputCommentText.classList.add("error");
} else {
this.inputCommentText.classList.remove("error");
}
}
});
}
domOnloader() {
document.addEventListener("DOMContentLoaded", () => {
let commArr = localStorage.getItem("commArr");
if (commArr) {
this.commArrAll = JSON.parse(commArr);
this.commentPushBlock.innerHTML = this.commArrAll.join("");
}
});
}
}
let comment = new Comment(
"#commentForm",
"#inputCommentName",
"#inputCommentText",
"#formImage",
"#formAvatar",
"#commentPushBlock"
);