163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591

Как сделать на чистом JS

01.09.2023, 09:28. Показов 2335. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть как бы "рыба" проекта. Он будет конечно другим, но суть примерно похожая
Кликните здесь для просмотра всего текста

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>как сделать тёмную тему на сайте</title>
    <!--https://htmlacademy.ru/blog/css/dark-mode?utm_source=tg&utm_medium=social&utm_campaign=ab_dark-mode_30082023
        
        <script src="js"></script>
    -->   
    <link rel="stylesheet" href="css/test_css.css">
    <link rel="stylesheet" href="css/ChangeBodyDark_Light.css">
    <link rel="stylesheet" href="css/Button01.css"> <!--стиль кнопок здесь не важен, поэтому их CSS не приведен--> 
</head>
<body>
    <h1>Как переключение темы на сайте</h1>
    <h2>Редакция HTML Academy</h2>
 
    <button class="btn-Light" id='themeToggleLight'>Переключить яркость</button>
    <button class="btn-Color" id='themeToggleColor'>Переключить цвет</button>
    <h1>Текст ни о чем</h1>
    <p>Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет выполнять важные задания по разработке форм развития. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности обеспечивает широкому кругу (специалистов) участие в формировании новых предложений.
        Товарищи! дальнейшее развитие различных форм деятельности играет важную роль в формировании существенных финансовых и административных условий. Равным образом рамки и место обучения кадров требуют от нас анализа направлений прогрессивного развития. Не следует, однако забывать, что реализация намеченных плановых заданий позволяет оценить значение позиций, занимаемых участниками в отношении поставленных задач. Разнообразный и богатый опыт начало повседневной работы по формированию позиции способствует подготовки и реализации соответствующий условий активизации</p>
    <ul>
        <li>Элемент списка 1</li>
        <li>Элемент списка 2</li>
        <li>Элемент списка 3</li>
    </ul>
    <div class='boxed-text'>
        Взросление - это когда понимаешь, что родители не идеальные, а мудрость - что ты не идеальный.<br>
        Собрался еврейский конгресс с повесткой дня: «Почему евреи отвечают вопросом на вопрос?»...<br>Конгресс вынес резолюцию: «Ну и что?»
    </div>
   
    <script src="js/ChangeBodyDark_Light.js"></script>
 </body>
</html>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
body {
    font-family: Arial, sans-serif;
    transition: background-color 1.1s ease;
}
body.light-theme {
    background-color: rgb(242, 242, 242);
    color: rgba(5, 14, 90, 0.7);
}
body.dark-theme {
    background-color: rgb(47, 47, 47, 0.5);
    color: rgb(198, 250, 11);
}
.boxed-text {
    display:block;
    margin:auto;
    position: absolute;
    border: 8px solid currentColor;
    width: 60%;
    padding: 15px;
    margin-top: 20px;
    text-align: center;
    left: 20%;
    align-items: center;
    justify-content: center;
}
 
body.Green-theme {
    background-color: rgb(41, 114, 12, 0.5);
    color: rgba(16, 13, 216, 0.7);
}
body.Red-theme {
    background-color: rgba(170, 5, 5, 0.5);
    color: rgb(10, 255, 72);
}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
document.getElementById('themeToggleLight').addEventListener('click', function() {
    const currentTheme = document.body.className;
    if (currentTheme === 'light-theme') {
        document.body.className = 'dark-theme';
    } else {
        document.body.className = 'light-theme';
    }
});
 
document.getElementById('themeToggleColor').addEventListener('click', function() {
    const currentTheme = document.body.className;
    if (currentTheme === 'Green-theme') {
        document.body.className = 'Red-theme';
    } else {
        document.body.className = 'Green-theme';
    }
});

Вопрос первый.
Всё работает в шаблоне. Для этого примера кнопки изменяют яркость или цвет страницы. Все JS отрабатывают по клику
Но есть задача, которая может расти по количеству кнопок и конечно разному выполнению функционала. Где разводить и множить разные ID с одинаковой задачей в Js как-то не нравится.
Сделал подобное в Bootstrap. По нему уже был вопрос и всё решено. Но Bootstrap как и jQuery могут не подойти, т.к. у них свои шаблоны, а переписать bootstrap так себе затея. Которая может перейти в вопрос №2.
Какое решение сделать или какую теорию копать, чтобы понять как на чистом JS сделать компактный и универсальный код для выполнения различных ID или классов в HTML. Если примером из двух HTML - JS из приведенных выше.
Т.е. чтобы не выбирать document.getElementById('свой заявленный ID в Html), а использовать какой-то общий для всех кнопок, спанов и т.д.

Вопрос второй. Чем открывать Bootstrap, jQuery, чтобы там не читалась не читаемая мешанина из кода. Использовать BootStrap Studio или расширение в VsCode. Что оптимальнее по опыту.
Использовать два инструмента для одной задачи пока не очень нравится.
Может есть какое-то более удобное расширение в VsCode, которое опробовано и успешно помогает?
Зачем это надо, чтобы не использовать эти фреймворки как черные ящики. Есть проекты со старыми версиями Bootstrap, jQuery. Там какие-то 3.3.0 и ниже, которые можно взять с каких-то левых сайтов, а не основного репозитория. К тому же лучше использовать с апдейтами. Но подключить к старой верстке не получается по известной причине. Другие ID, названия классов.
Надо как-то по приемлемому виду в них разобраться. Что тут может помочь? Перечитывать документацию и сравнивать для разных версий? Ну как-то так себе идея.

Да. ВСЕХ с Днем Знаний!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2023, 09:28
Ответы с готовыми решениями:

Как сделать кастомный scrollbar на чистом JS
Как сделать кастомный scrollbar на чистом JS. Раскажите как скрыть scrollbar по дефолту в браузере и как создать свой не теряя...

Как сделать на чистом JS из кода JQ toggleClass?
Всем привет! Пробовал разными способами, но именно для body class lock не пойму как сделать. Суть в том чтобы при открытии мобильного...

Как на чистом Qt сделать анимацию
Итак без QML и QGraphicsScene хочу сделать анимацию внутри какого-то виджета. Подскажите что почитать и куда кокнретно копать ? Анимировать...

42
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,914
04.09.2023, 11:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
SASS тут откуда взялся
мне вот тоже, кстате интересно - что ТС курит?
0
Молодой техлид)
Эксперт JSЭксперт HTML/CSS
 Аватар для mr_dramm
1818 / 1056 / 329
Регистрация: 17.07.2021
Сообщений: 2,147
Записей в блоге: 14
04.09.2023, 11:13
Привет всем!

Я думаю тут вопрос темизации. смотри демку

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<!DOCTYPE html>
<html>
 
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <style>
    * {
        padding: 0;
        margin: 0;
        box-sizing: border-box;
    }
 
    :root {
        --ON: initial;
        --OFF: ;
    }
 
    .theme-default,
    .theme-light {
        --light: var(--ON);
        --dark: var(--OFF);
    }
 
    .theme-dark {
        --light: var(--OFF);
        --dark: var(--ON);
    }
 
    @media (prefers-color-scheme: dark) {
        .theme-default {
            --light: var(--OFF);
            --dark: var(--ON);
        }
    }
 
    :root {
        /* Define each variable in their light and dark mode */
        --text: var(--light, black) var(--dark, white);
        --bg: var(--light, orchid) var(--dark, rebeccapurple);
        --accent: var(--light, #6d386b) var(--dark, #b399cc);
        --link: var(--light, navy) var(--dark, gold);
    }
 
    body {
        color: var(--text, black);
        background: var(--bg, white);
    }
 
    /* Presentation */
    body {
        display: grid;
        place-items: center;
        min-height: 100vh;
    }
 
    main {
        text-align: center;
    }
 
    button {
        width: 100%;
    }
 
    p {
        padding: 1em;
        border: 0.5em solid var(--accent, #808080);
    }
 
    a:-webkit-any-link {
        color: var(--link, blue);
    }
 
    a:-moz-any-link {
        color: var(--link, blue);
    }
 
    a:any-link {
        color: var(--link, blue);
    }
    </style>
</head>
 
<body>
 
    <body>
        <main>
            <button>Toggle!</button>
            <p>Current mode is: <output>dark</output></p>
        </main>
        <script>
        var darkMode = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches);
        var toggle = function() {
 
 
            if (darkMode) {
                document.querySelector('html').classList.add('theme-light');
                document.querySelector('html').classList.remove('theme-dark');
            } else {
                document.querySelector('html').classList.remove('theme-light');
                document.querySelector('html').classList.add('theme-dark');
            }
 
            darkMode = !darkMode;
 
            document.querySelector('output').innerText = darkMode ? 'dark' : 'light';
        }
 
        document.querySelector('button').addEventListener('click', toggle);
        toggle()
        </script>
    </body>
</body>
 
</html>
1
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
04.09.2023, 11:13
pincet, да тут похоже смесь непонимания многих вещей и неумения внятно выразить мысль

Всё, что я понял из слов ТСа - ему хочется какой-то лаконичный способ работы с DOM. Но дальше уже пошёл поток сознания.
1
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,914
04.09.2023, 11:53
Цитата Сообщение от mr_dramm Посмотреть сообщение
document.querySelector('html').classList .add('theme-light');
                document.querySelector('html').classList .remove('theme-dark');
а чего бы replace не применить?
1
Молодой техлид)
Эксперт JSЭксперт HTML/CSS
 Аватар для mr_dramm
1818 / 1056 / 329
Регистрация: 17.07.2021
Сообщений: 2,147
Записей в блоге: 14
04.09.2023, 12:42
Цитата Сообщение от pincet Посмотреть сообщение
а чего бы replace не применить?
даю устное разрешение на применение replace, если нужно заверенное лично с подтверждением прав на исправление кода пиши в личку =)
1
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
04.09.2023, 20:16  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Ну так оно есть - тонны boilerplate
похоже имеется ввиду Boilerplate +

как раз с месяц начал VueJS - ReactJS. Это точно в помощь к теории и разбор примеров. Спасибо!
Но это о другом, хотя и полезный ресурс.
Цитата Сообщение от Usaga Посмотреть сообщение
Посмотри на примеры работы с Knockout, React, Angular, что угодно.
Angular позже. Пока есть отличные материалы+практика по VueJS - ReactJS
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
04.09.2023, 20:23  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Что за "один общий JavaScript"? Какой name.js?
наверное здесь уместно что-то из примера. Как говорится лучше раз увидеть. Он таки есть в наборе. Хотя и сделан давно под рыбу и другую задачу
Здесь 7 кнопок с разным функционалом на чистом JS+CSS без фреймворков с минимум document.ХХХХ. Кнопки активируются через <a href="#openModal-....">
Текст ни о чем. Для теста заказчик просил уйти от Lorem ipsum ....

Под этот комплект путевой песочницы не нашел. Пользовался https://codesandbox.io/ ... http://codly.ru/editor/
но что-то там не завелось. Может есть другая песочница, где проще и точно заведется, завтра скину, чтобы брать в превью

Смысл здесь один общий в 11-12 строк ModalWindow44.js на 7 кнопок с разным функционалом
Нечто подобное надо б повторить для другого примера с ID - Class
Миниатюры
Как сделать на чистом JS  
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
04.09.2023, 20:25  [ТС]
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
    <!--https://javascript.ru/forum/misc/80721-vozmozhno-li-posledovatelno-otkryvat-raznye-modalnye-okna-klikom-po-odnojj-ssylke.html
      button a href
    -->
    <link rel="stylesheet" href="css/test_css.css">
    <link rel="stylesheet" href="css/ModalWindow44.css">
                   </head>
                <body>
 
    <h1>модальные окна</h1>
    <h2>Курсы javascript</h2>
    <button class="custom-btn btn-10"><a href="#openModal-1">Анекдоты</a></button> 
   <button class="custom-btn btn-6"><a href="#openModal-2">Текст ни о чем №1</a></button> 
 
    <button class="custom-btn btn-15"><a href="#openModal-3">Текст ни о чем №2</a></button>
    
    <button class="custom-btn btn-7"><a href="#openModal-4">Растения знают как и куда расти</a></button>
    <button class="custom-btn btn-17" style="--color:#1e9bff;"><a href="#openModal-5"> <span></span>
      <span></span>
      <span></span>
      <span></span>Золото</a></button>
    <button class="custom-btn btn-16" style="--color: rgba(30, 3, 92, 0.6); 
    background-color: var(--c);"><a href="#openModal-6"><span class='glowing-txt'>А<span class='faulty-letter'>Т</span>ОМЫ</span></a></button>
 
    <button class="custom-btn btn-5" style="--c: rgb(77, 51, 160);"><a href="#openModal-7"><span class='glowing-txt'>В <span class='faulty-letter'>И Д </span>Е О</span></a></button>
 
    <!-- первое окно -->
        <div id="openModal-1" class="modal">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <h3 class="modal-title">Анекдоты</h3>
                <a href="#close" title="Close" class="close">×</a>
              </div>
              <div class="modal-body">
               <p>Нам не в чем каяться, и потому нам нет прощения.</p>
                <p>Взросление - это когда понимаешь, что родители не идеальные, а мудрость - что ты не идеальный.</p>
                <p>Собрался еврейский конгресс с повесткой дня: «Почему евреи отвечают вопросом на вопрос?»....Конгресс вынес резолюцию: «Ну и что?»</p>
                <p>Психоаналитик - это человек, который за ваши деньги даст вам советы,
                  которые вы другим уже давали бесплатно.</p>
              </div>
            </div>
          </div>
        </div>
    <!-- второе окно -->
        <div id="openModal-2" class="modal">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <h3 class="modal-title">Текст №1</h3>
                <a href="#close" title="Close" class="close">×</a>
              </div>
              <div class="modal-body">
               <p>Значимость этих проблем настолько очевидна, что сложившаяся структура организации позволяет выполнять важные задания по разработке форм развития. Не следует, однако забывать, что начало повседневной работы по формированию позиции обеспечивает широкому кругу (специалистов) участие в формировании соответствующий условий активизации. Равным образом дальнейшее развитие различных форм деятельности требуют от нас анализа существенных финансовых и административных условий. Таким образом начало повседневной работы по формированию позиции обеспечивает широкому кругу (специалистов) участие в формировании систем массового участия. Идейные соображения высшего порядка, а также постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации соответствующий условий активизации. Не следует, однако забывать, что реализация намеченных плановых заданий в значительной степени обуславливает создание дальнейших направлений развития.</p>
              </div>
            </div>
          </div>
        </div>
    <!-- третье окно -->
        <div id="openModal-3" class="modal">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <h3 class="modal-title">Текст №2</h3>
                <a href="#close" title="Close" class="close">×</a>
              </div>
              <div class="modal-body">
                <p>Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет выполнять важные задания по разработке форм развития. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности обеспечивает широкому кругу (специалистов) участие в формировании новых предложений.
                  </p>
                  <p>
                    Товарищи! дальнейшее развитие различных форм деятельности играет важную роль в формировании существенных финансовых и административных условий. Равным образом рамки и место обучения кадров требуют от нас анализа направлений прогрессивного развития. Не следует, однако забывать, что реализация намеченных плановых заданий позволяет оценить значение позиций, занимаемых участниками в отношении поставленных задач. Разнообразный и богатый опыт начало повседневной работы по формированию позиции способствует подготовки и реализации соответствующий условий активизации
                  </p>
<img src="img/Дворец Советов.jpg" alt="Могли построить" width="250" height="300">              
              </div>
            </div>
          </div>
        </div>
 
        <!-- четвертое окно -->
        <div id="openModal-4" class="modal">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <h3 class="modal-title">Как прорастающие семена растений знают, где - верх, а где - низ и в какую сторону расти?</h3>
                <a href="#close" title="Close" class="close">×</a>
              </div>
              <div class="modal-body">
                <p>Этот, казалось бы детский вопрос, очень интересен. Ведь посаженное в землю семечко однозначно не вырастет корнями вверх. Как же семя, находясь в темной земле прорастает навстречу солнцу?
                  Оказывается, в живых клетках растения присутствуют так называемые крахмальные зерна - статолиты, плотность которых выше, чем у клеточной цитоплазмы. Поэтому статолиты оседают вниз под действием силы тяжести и создают механическое напряжение в опутывающей их сети нитей из белка актина. Этот процесс запускает цепь специфических биохимических реакций, которые изменяют распределение в теле растения различных гормонов (в том числе, ауксина),  который и определяют конкретное направление деления клеток.
                  Интересно, что если поместить проросшее семечко в клиностат (устройство, медленно вращающее его в вертикальной плоскости, чтобы верх и низ все время менялись местами), то его корешок и зачаток стебля продолжают расти в направлении, выбранном до начала вращения. А вот в невесомости корни растения будут расти в случайном направлении, а стебель — в направлении  источника света.</p>
      <img src="img/Знают как расти.jpeg" alt="Как расти" width="400" height="300">                  
              </div>
            </div>
          </div>
        </div>
 
        <!-- пятое окно -->
        <div id="openModal-5" class="modal">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <h3 class="modal-title">Золото Текст №5</h3>
                <a href="#close" title="Close" class="close">×</a>
              </div>
              <div class="modal-body">
                <p> 
                  <b>Правда ли, что можно «сделать» золото?</b>
                  <br>
                  Оказывается, извечная мечта алхимиков о превращении неблагородных металлов в золото вполне осуществима! Правда, под силу это лишь ядерной химии.
                  Известно, что в ядерном реакторе одни элементы превращаются в другие, например уран — в плутоний, сера — в хлор, железо — в никель. В нем же можно «изготовить» и искусственное золото. Такой синтетический «драгметалл» был получен еще в 1947 году американскими физиками, в доказательство чему все 35 мкг золота, добытого из 100 мг ртути, сегодня можно увидеть в Чикагском музее науки и промышленности. Наиболее доступный способ изготовления искусственного золота — радиоактивный распад некоторых изотопов соседних элементов (ртути и платины). Хотя превращать в золото платину очень невыгодно, так как последняя дороже золота.
                  Один из способов создания золота в ядерном реакторе - это облучение ртути-196 изотопа нейтронами. Ртути-196 является стабильным изотопом ртути, но в результате захвата нейтрона он может превратиться в ртуть-197, которая затем распадается, образуя золото-197. Этот процесс называется "активацией ртути". Однако процесс активации в ядерном реакторе является чрезвычайно дорогостоящим и трудоемким процессом, дающие весьма незначительное количество «благородного металла», поэтому создание золота в ядерном реакторе не используется в промышленности.
                  До сих пор золото добывается из недр планеты, используя различные технологии добычи, такие как горное дело, гидравлическая добыча и т.д.</p>
        <img src="img/Золото.jpg" alt="Золото" width="400" height="300">                 
              </div>
            </div>
          </div>
        </div>
 
          <!-- шестое окно -->
          <div id="openModal-6" class="modal">
            <div class="modal-dialog">
              <div class="modal-content">
                <div class="modal-header">
                  <h3 class="modal-title">Сколько лет могут существовать атомы? Текст №5</h3>
                  <a href="#close" title="Close" class="close">×</a>
                </div>
                <div class="modal-body">
                  <p>Задумывались ли вы о "жизненном цикле" атомов? Как долго они могут существовать?
                    По-разному, но стабильные — больше 10^34 лет! Некоторые радиоактивные изотопы распадаются за доли секунды. Другие живут миллиарды лет.
                    Рекорд среди них принадлежит теллуру-128 с периодом полураспада 2^1024 лет. Это в 160 трлн раз больше возраста Вселенной. Однако и стабильные изотопы, которые не подвержены радиоактивному распаду, по-видимому, тоже не вечны. Связано это с тем, что сами кварки, из которых состоят протоны и нейтроны, должны, хоть и крайне редко, распадаться, превращаясь в лептоны (электроны или нейтрино). Физики называют это нарушением закона сохранения барионного числа, то есть суммарного количества кварков и (со знаком минус) антикварков.
                    Как показал физик Cахаров, без этого нарушения не объяснить, почему в нашей Вселенной есть только обычная материя, но почти нет антивещества. По разным теоретическим оценкам, среднее время жизни протона, то есть ядра атома водорода, составляет от 10^28 до 10^36 лет.
                    Наиболее стабильные атомы - это атомы с наиболее высокими значениями ядерной стабильности, которая определяется соотношением числа нейтронов к числу протонов в ядре. Атомы с более равными значениями числа протонов и нейтронов в ядре обычно являются более стабильными.
                    Конечно, это не относится к радиоактивным атомам, которые могут распадаться на более легкие атомы в результате испускания радиоактивного излучения. Время распада радиоактивных атомов может сильно варьироваться в зависимости от их типа. Например, время полураспада углерода-14 составляет около 5730 лет, в то время как время полураспада урана-238 составляет около 4,5 миллиарда лет.
                    Атомы, как уже упоминалось, могут существовать в различных формах в течение очень длительного времени. В общем, атомы могут существовать бесконечно долго, если они не подвергаются каким-либо разрушительным процессам.</p>
                  <img src="img/Атомы.jpeg" alt="Атомы" width="400" height="300">                    
                </div>
              </div>
            </div>
          </div>
 
           <!-- седьмое окно -->
           <div id="openModal-7" class="modal">
            <div class="modal-dialog">
              <div class="modal-content">
                <div class="modal-header">
                  <h3 class="modal-title">Джун на работе</h3>
                  <a href="#close" title="Close" class="close">×</a>
                </div>
                <div class="modal-body">
                  <iframe width="960" height="815" src="img/Я_умею_только_фильмы_с_торрентов_качать.mp4" title="video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>                                    
                </div>
              </div>
            </div>
          </div>
 
    <script src="js/ModalWindow44.js"></script>
</body>
</html>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
document.addEventListener("DOMContentLoaded", function() {
    var scrollbar = document.body.clientWidth - window.innerWidth + 'px';
    console.log(scrollbar);
    document.querySelector('[href="#openModal"]').addEventListener('click ', function() {
        document.body.style.overflow = 'hidden';
        document.querySelector('#openModal').style.marginLeft = scrollbar;
    });
    document.querySelector('[href="#close"]').addEventListener('click', function() {
        document.body.style.overflow = 'visible';
        document.querySelector('#openModal').style.marginLeft = '0px';
    });
});
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
04.09.2023, 20:34  [ТС]
по причине ответа с форума:
Вы ввели слишком длинный текст (34085 символов). Пожалуйста, сократите его до 25000 символов. CSS отдельной страницей. Честно не хотел накидывать лишнее. Но с песочницами не получилось, здесь всё вместе не берет

CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
/* свойства модального окна по умолчанию */
.modal {
    position: fixed;
    /* фиксированное положение */
    width: 100cv;
    /* height: 100ch; */
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(103, 189, 4, 0.5);
    /* цвет фона */
    z-index: 1050;
    opacity: 0;
    /* по умолчанию модальное окно прозрачно */
    -webkit-transition: opacity 400ms ease-in;
    -moz-transition: opacity 400ms ease-in;
    transition: opacity 400ms ease-in;
    /* анимация перехода */
    pointer-events: none;
    /* элемент невидим для событий мыши */
  }
 
  /* при отображении модального окно */
  .modal:target {
    opacity: 1;
    pointer-events: auto;
    overflow-y: auto;
  }
 
  /* ширина модального окна и его отступы от экрана */
  .modal-dialog {
    position: relative;
    width: auto;
    margin: 10px;
  }
 
  @media (min-width: 576px) {
    .modal-dialog {
      max-width: 500px;
      margin: 30px auto;
    }
  }
 
  /* свойства для блока, содержащего контент модального окна */
  .modal-content {
    position: relative;
    width: 800px;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;
    background-color: #41eaf0;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
    border: 1px solid rgba(13, 11, 167, 0.2);
    border-radius: .3rem;
    outline: 0;
  }
 
  @media (min-width: 768px) {
    .modal-content {
      -webkit-box-shadow: 0 5px 15px rgba(200, 235, 6, 0.5);
      box-shadow: 0 5px 15px rgba(28, 119, 0, 0.5);
    }
  }
 
  /* свойства для заголовка модального окна */
  .modal-header {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
    -ms-flex-pack: justify;
    justify-content: space-between;
    padding: 15px;
    border-bottom: 1px solid #024a6e;
  }
 
  .modal-title {
    margin-top: 0;
    margin-bottom: 0;
    line-height: 1.5;
    font-size: 1.25rem;
    font-weight: 500;
  }
 
  /* свойства для кнопки "Закрыть" */
  .close {
    float: right;
    font-family: sans-serif;
    font-size: 84px;
    font-weight: 700;
    line-height: 1;
    color: #a10202;
    text-shadow: 0 3px 0 #e7eb03;
    text-decoration: none;
  }
 
  /* свойства для кнопки "Закрыть" при нахождении её в фокусе или наведении */
  .close:focus,
  .close:hover {
    color: #f4f804;
    text-decoration: none;
    cursor: pointer;
    opacity: 1.75;
  }
 
  /* свойства для блока, содержащего основное содержимое окна */
  .modal-body {
    position: relative;
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 auto;
    -ms-flex: 1 1 auto;
    flex: 1 1 auto;
    padding: 15px;
    overflow: auto;
  }
 
  .custom-btn {
    width: 130px;
    height: 40px;
    color: #fff;
    border-radius: 5px;
    padding: 10px 25px;
    font-family: 'Lato', sans-serif;
    font-weight: 500;
    font-size: 27px;
    background: transparent;
    cursor: pointer;
    transition: all 0.3s ease;
    position: relative;
    display: inline-block;
     box-shadow:inset 2px 2px 2px 0px rgba(255,255,255,.5),
     7px 7px 20px 0px rgba(0,0,0,.1),
     4px 4px 5px 0px rgba(0,0,0,.1);
    outline: none;
  }
 
  .btn-5 {
    display:block;
    width: 380px;
    height: 80px;
    border-radius: 1vh;    
    margin: .5em 43em;
  }
 
  .btn-6 {
    display:block;
    color: chartreuse;
    width: 380px;
    height: 80px;
    border-radius: 3vh;
    margin: 2.8em 13em;
  }
  
.btn-15 {
    display:block;
    width: 380px;
    height: 80px;
    border-radius: 3vh;    
    margin: 1em 16em;
  }
  
 .btn-7 {
    display:block;
    color: #381c9e;
    width: 380px;
    height: 80px;
    border-radius: 3vh;
    margin: 1.5em 21em;
  }
 
 .btn-10 {
    display:block;
    width: 380px;
    height: 80px;
    border-radius: 3vh;
    margin: .1em 3em;
  }
 
  .btn-17 {
    display:block;
    width: 380px;
    height: 80px;
    border-radius: 3vh;
    margin: 2.0em 31em;
  }
 
  .btn-16 {
    display:block;
    border-radius: 3vh;
    margin: 2.1em 38em;
  }
 
  /* btn-5 */
  .btn-5 {
    --c:  #039e3e; /* the color*/
    
    box-shadow: 0 0 0 .1em inset var(--c); 
    --_g: linear-gradient(var(--c) 0 0) no-repeat;
    background: 
      var(--_g) calc(var(--_p,0%) - 100%) 0%,
      var(--_g) calc(200% - var(--_p,0%)) 0%,
      var(--_g) calc(var(--_p,0%) - 100%) 100%,
      var(--_g) calc(200% - var(--_p,0%)) 100%;
    background-size: 50.5% calc(var(--_p,0%)/2 + .5%);
    outline-offset: .1em;
    transition: background-size .4s, background-position 0s .4s;
  }
  .btn-5:hover {
    --_p: 100%;
    transition: background-position .4s, background-size 0s;
  }
  .btn-5:active {
    box-shadow: 0 0 9e9q inset rgba(79, 28, 197, 0.6); 
    background-color: var(--c);
    color: #219903;
  }
  
  .btn-5:hover .glowing-txt {
            animation: none;
          }
          
          .btn-5:hover .faulty-letter {
            animation: none;
            text-shadow: none;
            opacity: 1;
          }
          
          .btn-5:hover:before {
            filter: blur(1.5em);
            opacity: 1;
          }
          
          .btn-5:hover:after {
            opacity: 1;
          }
 
  /* btn-6 */
  .btn-6 {
    background: rgb(247,150,192);
  background: radial-gradient(circle, rgba(247,150,192,1) 0%, rgba(118,174,241,1) 100%);
    line-height: 42px;
    padding: 0;
    border: none;
  }
  .btn-6 span {
    position: relative;
    width: 100%;
    height: 100%;
  }
  .btn-6:before,
  .btn-6:after {
    position: absolute;
    content: "";
    height: 0%;
    width: 1px;
   box-shadow:
     -1px -1px 20px 0px rgba(255,255,255,1),
     -4px -4px 5px 0px rgba(255,255,255,1),
     7px 7px 20px 0px rgba(0,0,0,.4),
     4px 4px 5px 0px rgba(0,0,0,.3);
  }
  .btn-6:before {
    right: 0;
    top: 0;
    transition: all 500ms ease;
  }
  .btn-6:after {
    left: 0;
    bottom: 0;
    transition: all 500ms ease;
  }
  .btn-6:hover{
    background: transparent;
    color: #76aef1;
    box-shadow: none;
  }
  .btn-6:hover:before {
    transition: all 500ms ease;
    height: 100%;
  }
  .btn-6:hover:after {
    transition: all 500ms ease;
    height: 100%;
  }
  .btn-6 span:before,
  .btn-6 span:after {
    position: absolute;
    content: "";
    box-shadow:
     -1px -1px 20px 0px rgba(255,255,255,1),
     -4px -4px 5px 0px rgba(255,255,255,1),
     7px 7px 20px 0px rgba(0,0,0,.4),
     4px 4px 5px 0px rgba(0,0,0,.3);
  }
  .btn-6 span:before {
    left: 0;
    top: 0;
    width: 0%;
    height: .5px;
    transition: all 500ms ease;
  }
  .btn-6 span:after {
    right: 0;
    bottom: 0;
    width: 0%;
    height: .5px;
    transition: all 500ms ease;
  }
  .btn-6 span:hover:before {
    width: 100%;
  }
  .btn-6 span:hover:after {
    width: 100%;
  }
/* btn-7 */
  .btn-7 {
    background: linear-gradient(0deg, rgb(7, 218, 60) 0%, rgb(1, 95, 21) 100%);
      line-height: 42px;
      padding: 0;
      border: none;
    }
    .btn-7 span {
      position: relative;
      display: block;
      width: 100%;
      height: 100%;
    }
    .btn-7:before,
    .btn-7:after {
      position: absolute;
      content: "";
      right: 0;
      bottom: 0;
      background: rgba(251,75,2,1);
      box-shadow:
       -7px -7px 20px 0px rgba(255,255,255,.9),
       -4px -4px 5px 0px rgba(255,255,255,.9),
       7px 7px 20px 0px rgba(0,0,0,.2),
       4px 4px 5px 0px rgba(0,0,0,.3);
      transition: all 0.3s ease;
    }
    .btn-7:before{
       height: 0%;
       width: 2px;
    }
    .btn-7:after {
      width: 0%;
      height: 2px;
    }
    .btn-7:hover{
      background: transparent;
    }
    .btn-7:hover:before {
      height: 100%;
    }
    .btn-7:hover:after {
      width: 100%;
    }
    .btn-7 span:before,
    .btn-7 span:after {
      position: absolute;
      content: "";
      left: 0;
      top: 0;
      background: rgba(251,75,2,1);
      box-shadow:
       -7px -7px 20px 0px rgba(255,255,255,.9),
       -4px -4px 5px 0px rgba(255,255,255,.9),
       7px 7px 20px 0px rgba(0,0,0,.2),
       4px 4px 5px 0px rgba(0,0,0,.3);
      transition: all 0.3s ease;
    }
    .btn-7 span:before {
      width: 2px;
      height: 0%;
    }
    .btn-7 span:after {
      height: 2px;
      width: 0%;
    }
    .btn-7 span:hover:before {
      height: 100%;
    }
    .btn-7 span:hover:after {
      width: 100%;
    }
 
    /* btn-10 */
    .btn-10 {
        color: #ffe601;
        background: rgb(22,9,240);
      background: linear-gradient(0deg, rgba(22,9,240,1) 0%, rgba(49,110,244,1) 100%);
        border: none;
        transition: all 0.3s ease;
        overflow: hidden;
      }
      .btn-10:after {
        position: absolute;
        content: "";
        top: 0;
        left: 0;
        z-index: -1;
        width: 100%;
        height: 100%;
        transition: all 0.3s ease;
        -webkit-transform: scale(.1);
        transform: scale(.1);
      }
      .btn-10:hover {
        color: #a30180;
        border: none;
        background: transparent;
      }
      .btn-10:hover:after {
        color: #e7eb03;
      background: linear-gradient(0deg, rgb(2, 60, 251) 0%,  rgb(238, 203, 6)100%);
        -webkit-transform: scale(1);
        transform: scale(1);
      }
 
      .btn-15 {
        background: #b621fe;
        border: none;
        z-index: 1;
      }
      .btn-15:after {
        position: absolute;
        content: "";
        width: 0;
        height: 100%;
        top: 0;
        right: 0;
        z-index: -1;
        background-color: #9186b6;
        border-radius: 25px;
        box-shadow:inset 2px 2px 2px 0px rgba(255,255,255,.5),
         7px 7px 20px 0px rgba(0,0,0,.1),
         4px 4px 5px 0px rgba(0,0,0,.1);
        transition: all 0.3s ease;
      }
      .btn-15:hover {
      }
      .btn-15:hover:after {
        left: 0;
        width: 100%;
      }
      .btn-15:active {
        top: 2px;
      }
/*       btn-17 */
      /* .btn-17 {
        background: linear-gradient(0deg, rgba(255,151,0,1) 0%, rgba(251,75,2,1) 100%);
          line-height: 42px;
          padding: 0;
          border: none;
        }
        .btn-17 span {
          position: relative;
          display: block;
          width: 100%;
          height: 100%;
        }
        .btn-17:before,
        .btn-17:after {
          position: absolute;
          content: "";
          right: 0;
          bottom: 0;
          background: rgba(251,75,2,1);
          box-shadow:
           -7px -7px 20px 0px rgba(255,255,255,.9),
           -4px -4px 5px 0px rgba(255,255,255,.9),
           7px 7px 20px 0px rgba(0,0,0,.2),
           4px 4px 5px 0px rgba(0,0,0,.3);
          transition: all 0.3s ease;
        }
        .btn-17:before{
           height: 0%;
           width: 2px;
        }
        .btn-17:after {
          width: 0%;
          height: 2px;
        }
        .btn-17:hover{
          color: rgba(251,75,2,1);
          background: transparent;
        }
        .btn-17:hover:before {
          height: 100%;
        }
        .btn-17:hover:after {
          width: 100%;
        }
        .btn-17 span:before,
        .btn-17 span:after {
          position: absolute;
          content: "";
          left: 0;
          top: 0;
          background: rgba(251,75,2,1);
          box-shadow:
           -7px -7px 20px 0px rgba(255,255,255,.9),
           -4px -4px 5px 0px rgba(255,255,255,.9),
           7px 7px 20px 0px rgba(0,0,0,.2),
           4px 4px 5px 0px rgba(0,0,0,.3);
          transition: all 0.3s ease;
        }
        .btn-17 span:before {
          width: 2px;
          height: 0%;
        }
        .btn-17 span:after {
          height: 2px;
          width: 0%;
        }
        .btn-17 span:hover:before {
          height: 100%;
        }
        .btn-17 span:hover:after {
          width: 100%;
        } */
 
        .btn-17 {
          /* margin: 0;
          padding: 0; */
          box-sizing: border-box;
          display: flex;
          justify-content: center;
          align-items: center;
          flex-wrap: wrap;
          gap: 120px;
          background: #FFD700;
          position: relative;
          padding: 16px 30px;
          font-size: 1.5rem;
          color: var(--color);
          border: 2px solid rgba(3, 58, 161, 0.5);
          border-radius: 20px;
          text-shadow: 0 0 15px var(--color);
          text-decoration: none;
          text-transform: uppercase;
          letter-spacing: 0.1rem;
          transition: 0.5s;
          z-index: 1;
        }
 
 
.btn-17:hover {
  color: #058d0c;
  border: 2px solid rgba(139, 163, 1, 0);
  box-shadow: 0 0 0px var(--color);
}
 
.btn-17::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--color);
  z-index: -1;
  transform: scale(0);
  transition: 0.5s;
}
 
.btn-17:hover::before {
  transform: scale(1);
  transition-delay: 0.5s;
  box-shadow: 0 0 10px var(--color),
    0 0 30px var(--color),
    0 0 60px var(--color);
}
 
.btn-17 span {
  position: absolute;
  background: var(--color);
  pointer-events: none;
  border-radius: 2px;
  box-shadow: 0 0 10px var(--color),
    0 0 20px var(--color),
    0 0 30px var(--color),
    0 0 50px var(--color),
    0 0 100px var(--color);
  transition: 0.5s ease-in-out;
  transition-delay: 0.25s;
}
 
.btn-17:hover span {
  opacity: 0;
  transition-delay: 0s;
}
 
.btn-17 span:nth-child(1),
.btn-17 span:nth-child(3) {
  width: 40px;
  height: 4px;
}
 
.btn-17:hover span:nth-child(1),
.btn-17:hover span:nth-child(3) {
  transform: translateX(0);
}
 
.btn-17 span:nth-child(2),
.btn-17 span:nth-child(4) {
  width: 4px;
  height: 40px;
}
 
.btn-17:hover span:nth-child(1),
.btn-17:hover span:nth-child(3) {
  transform: translateY(0);
}
 
.btn-17 span:nth-child(1) {
  top: calc(50% - 2px);
  left: -50px;
  transform-origin: left;
}
 
.btn-17:hover span:nth-child(1) {
  left: 50%;
}
 
.btn-17 span:nth-child(3) {
  top: calc(50% - 2px);
  right: -50px;
  transform-origin: right;
}
 
.btn-17:hover span:nth-child(3) {
  right: 50%;
}
 
.btn-17 span:nth-child(2) {
  left: calc(50% - 2px);
  top: -50px;
  transform-origin: top;
}
 
.btn-17:hover span:nth-child(2) {
  top: 50%;
}
 
.btn-17 span:nth-child(4) {
  left: calc(50% - 2px);
  bottom: -50px;
  transform-origin: bottom;
}
 
.btn-17:hover span:nth-child(4 ) {
  bottom: 50%;
}
 
        /* btn-16 https://codepen.io/Ks145/pen/MWGxbYr */
        .btn-16 {
          --glow-color: hsl(250, 23%, 60%);
 
         width: 380px;
         height: 80px;
          /* height: 100%;
          width: auto; */
          overflow: hidden;
        }
 
        .btn-16::before,::after {
  box-sizing: border-box;
}
 
        .btn-16 {
          position: relative;
          color: var(--glow-color);
          cursor: pointer;
          padding: 0.35em 1em;
          border: 0.15em solid var(--glow-color);
          border-radius: 0.75em;
          background: none;
          perspective: 2em;
          font-family: "Raleway", sans-serif;
          font-size: 1.3em;
          font-weight: 900;
          letter-spacing: 1em;
        
          -webkit-box-shadow: inset 0px 0px 0.5em 0px var(--glow-color),
            0px 0px 0.5em 0px var(--glow-color);
          -moz-box-shadow: inset 0px 0px 0.5em 0px var(--glow-color),
            0px 0px 0.5em 0px var(--glow-color);
          box-shadow: inset 0px 0px 0.5em 0px var(--glow-color),
            0px 0px 0.5em 0px var(--glow-color);
          animation: border-flicker 2s linear infinite;
        }
        .glowing-txt {
          float: left;
          margin: 5%;
          margin-left: 3.8em;
          -webkit-text-shadow: 0 0 0.125em hsla(0, 31%, 54%, 0.3),
            0 0 0.45em var(--glow-color);
          -moz-text-shadow: 0 0 0.125em hsla(59, 98%, 39%, 0.3),
            0 0 0.45em var(--glow-color);
          text-shadow: 0 0 0.125em hsla(59, 96%, 28%, 0.3), 0 0 0.45em var(--glow-color);
          animation: text-flicker 3s linear infinite;
        }
        
        .faulty-letter {
          opacity: 0.5;
          animation: faulty-flicker 3s linear infinite;
        }
        
        .btn-16::before {
          content: "";
          position: absolute;
          top: 0;
          bottom: 0;
          left: 0;
          right: 0;
          opacity: 0.7;
          filter: blur(1em);
          transform: translateY(120%) rotateX(95deg) scale(1, 0.35);
          background: var(--glow-color);
          pointer-events: none;
        }
        
        .btn-16::after {
          content: "";
          position: absolute;
          top: 0;
          left: 0;
          right: 0;
          bottom: 0;
          opacity: 0;
          z-index: -1;
          background-color: var(--glow-color);
          box-shadow: 0 0 2em 0.2em var(--glow-color);
          transition: opacity 100ms linear;
        }
        
        .btn-16:hover {
          /* color: rgba(5, 189, 29, 0.8); */
          text-shadow: none;
          animation: none;
        }
        
        .btn-16:hover .glowing-txt {
          animation: none;
        }
        
        .btn-16:hover .faulty-letter {
          animation: none;
          text-shadow: none;
          opacity: 1;
        }
        
        .btn-16:hover:before {
          filter: blur(1.5em);
          opacity: 1;
        }
        
        .btn-16:hover:after {
          opacity: 1;
        }
        
        @keyframes faulty-flicker {
          0% {
            opacity: 0.1;
          }
          2% {
            opacity: 0.1;
          }
          4% {
            opacity: 0.5;
          }
          19% {
            opacity: 0.5;
          }
          21% {
            opacity: 0.1;
          }
          23% {
            opacity: 1;
          }
          80% {
            opacity: 0.5;
          }
          83% {
            opacity: 0.4;
          }
        
          87% {
            opacity: 1;
          }
        }
        
        @keyframes text-flicker {
          0% {
            opacity: 0.1;
          }
        
          2% {
            opacity: 1;
          }
        
          8% {
            opacity: 0.1;
          }
        
          9% {
            opacity: 1;
          }
        
          12% {
            opacity: 0.1;
          }
          20% {
            opacity: 1;
          }
          25% {
            opacity: 0.3;
          }
          30% {
            opacity: 1;
          }
        
          70% {
            opacity: 0.7;
          }
          72% {
            opacity: 0.2;
          }
        
          77% {
            opacity: 0.9;
          }
          100% {
            opacity: 0.9;
          }
        }
        
        @keyframes border-flicker {
          0% {
            opacity: 0.1;
          }
          2% {
            opacity: 1;
          }
          4% {
            opacity: 0.1;
          }
        
          8% {
            opacity: 1;
          }
          70% {
            opacity: 0.7;
          }
          100% {
            opacity: 1;
          }
        }
        
        @media only screen and (max-width: 600px) {
          .btn-16{
            font-size: 1em;
          }
        }
Добавлено через 3 минуты
test_css.css здесь он лишь для фона и подчеркивания h1. Остальное для других страниц
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/* Создано средствами разработчика F12 Ie10. Это может не быть точным представлением файла исходного источника */
body {
    font-family: Times New Roman,Arial,Helvetica,Sans-Serif;
    font-size: 15pt;
    background-color: rgb(240, 230, 140);}
h1{
    color:rgb(1, 1, 124);
    text-align: center;
 
    }
h2{
    color:darkseagreen;
    text-align: right;
 
    }
h3{   font-size: 30px;   color:darkgreen;   }   /**/
img{align:"center"}
h1 {text-decoration: none}
h1 {
    background: linear-gradient(to right, transparent, transparent),
    linear-gradient(to right, #ff0000, #fff200, #1e9600);
    background-size: 100% 3px, 0 3px;
    background-position: 100% 100%, 0 100%;
    background-repeat: no-repeat;
    transition: background-size 400ms;
}
a {
    /* float: right; */
    display: block;
    text-align: right;
}
p{
    font-family:Times New Roman;
    font-size:23px;
    background-color:#CCCCCC;
    color:#330099;
    background-position:center;
    text-align:center;
    border: 3px;
    border-bottom-style:solid;
    text-decoration: blink;/**/
}
 
h1:hover {
         background-size: 0 11px, 100% 11px; 
    }
 
/* Кнопка выпадающего списка */
.dropbtn {
  background-color: #3498DB;
  color: darkseagreen;
  padding: 11px;
  font-size: 11px;
  border: none;
  cursor: pointer;
}
img {
-webkit-box-reflect: below 1px;}
 
/* Кнопка выпадающего меню при наведении и фокусировке */
.dropbtn {
    background-color: #a5e79f;
    color: rgb(43, 59, 201);
    padding: 11px;
    font-size: 31px;
    border: none;
    cursor: pointer;
}
 
.dropdown {
    position: relative;
    display: inline-block;
}
 
.dropdown-content {
    display: none;
    position: absolute;
    left: 0px;
    background-color: #af9f9f;
    width: auto;
    min-width: 40em;
    box-shadow: 0px 8px 16px 0px rgba(20, 2, 61, 0.2);
    z-index: 1;
}
 
.dropdown-content a {
    color: rgb(50, 0, 131);
    padding: 5px 33px;
    /* width: 50em; */
    text-decoration: none;
    display: block;
}
 
.dropdown-content a:hover {background-color: #e4f312}
 
.dropdown:hover .dropdown-content {
    display: block;
}
 
.dropdown:hover .dropbtn {
    background-color: #a4e639;
}
.neon-textABlok {
    text-align: right;
    color: #0f0;
   text-shadow: 7px 7px 3px #2400ff,
                         -7px -7px 70px #7e2bd9;
                -webkit-text-stroke:  2px #fc78ff;
                -webkit-text-fill-color: transparent;
                letter-spacing: 5px;  /**/
                }
 
.neon-textAcam{
                text-align: left;
                font-family: sans-serif;
   font-size: 50px;
   color: #fff;
  text-shadow:
        0 0 7px #000,
        0 0 10px #000,
        0 0 21px #0f0,
        0 0 42px #0f0,
        0 0 82px #0fa,
        0 0 92px #0fa,
        0 0 102px #0fa,
        0 0 121px #0fa,
        0 0 151px #0fa,
        0 0 171px #0fa;
                }
Добавлено через 3 минуты
Цитата Сообщение от pincet Посмотреть сообщение
а чего бы replace не применить?
можно уточнить, как и где с наброском в примере?
Интересная идея
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
05.09.2023, 09:58  [ТС]
закинул в эту песочницу с небольшими переделками по внешним линкам и фону.

Добавлено через 5 минут
Цитата Сообщение от pincet Посмотреть сообщение
а чего бы replace не применить?
имеется ввиду Метод replace()
если это так, как бы зачем.
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,914
05.09.2023, 11:06
Цитата Сообщение от Segera Посмотреть сообщение
имеется ввиду Метод replace()
если это так, как бы зачем.
Element: classList property

Не по теме:


мда, воистину инженер хаотически неграмотный

0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
05.09.2023, 14:17  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
инженер хаотически неграмотный
даже не собираюсь оправдываться.
Иначе, чтобы тут делал.
Идея замены каких-то элементов через JS интересная. Надо б по тестить.
Но это тоже самое, но чуть меньшее, чем просто множить по примеру в первом посте. Там также можно закидывать разные
document.getElementById('много разных ID). ... удивляясь как много однотипных блоков в JS файле.
Также увеличивая количество строк к коде и конечно снижая его эффективность.
У меня кстати, более содержательный линк, чем с MDN. Хотя б по спец.шаблонам $...
Пока код не особо ванильный.
0
05.09.2023, 14:37

Не по теме:


У меня кстати, более содержательный линк, чем с MDN. Хотя б по спец.шаблонам $...
искренне рад за тебя )))))
пилите, Шура, они золотые (с)

0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
06.09.2023, 06:58  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
пилите, Шура, они золотые (с)
Это закос под Паниковского. Интересно вспомнить источник.
"Шура, вы знаете кем был до революции Паниковский ... "
Прошу пардону за литературный оффтоп. Просто ответка эксперту.

На самом деле всё не так плохо с ванильным JS, который обрабатывает разные разные ID или классы. Надо просто добавить или перевести их в категорию href. Это направление понятно и работает наверное с полгода-год. Здесь пояснения не требуются.
Была идея другого направления не привлекая фреймворки. Вот как бы всё, что можно узнать в этой теме.
Из чего может состоять идея? Например, как выглядит document.querySelector универсальный для разных ID.
Ну если идея не выполнима и золотая рыбка всё вернет к знакомому корыту, ничего страшного. Нормальный рабочий момент. В откате на исходную.
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
06.09.2023, 08:34
Цитата Сообщение от Segera Посмотреть сообщение
Была идея другого направления не привлекая фреймворки.
Любая идея отходящая от ванильного JS - путь или к привлечению стороннего фреймворка, или к написанию собственного.

Если не хочешь брать сторонний, то хотя бы посмотри как ими пользуются, что они дают. А потом реализуй похожее поведение. А то я смотрю, что ты не только не знаешь как реализовывать, ты ещё и не знаешь что ты хочешь и как оно должно вообще работать.

А это уже какие-то метания в пустой комнате. С одной стороны ты не знает, что хочешь, с другой - хз как это неизвестно что реализовывать. Я вот не знаю как тебе в такой ситуации помочь. Ведь просто пойти и посмотреть как сделано у других и выбрать похожий путь ты тоже не хочешь.
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
06.09.2023, 13:16  [ТС]
Цитата Сообщение от mr_dramm Посмотреть сообщение
Я думаю тут вопрос темизации. смотри демку
немного не так.
Можешь 5-7 кнопок с этим JS, чтобы одна меняла, вторая лишь черный-белый фон, 3-5-7 модальные окна с тесктом чтение, следующее ввод, последнее открывает видео и картинку для демонстрации.
Нет. Даже если просто добавить в <button ID='green'>Toggle!</button>
JS:
document.querySelector('output').innerTe xt = darkMode ? 'dark' : 'light'; 'green' ...
Хотя идея с тернарным оператором интересная. Попробую покрутить.

Может пример не особо нужный и конечно кто-то подобное захочет.
Но здесь речь лишь о различном функционале при минимальном коде в JS. Чес-но слово, наверное в пятый или который раз одно и тоже объясняю. Понимаю, всё читать не всем охота. Ну пусть на второй странице будут пояснение, о чем тут вообще говорят.

Наверное кроме некоторых слов от пинцета. Но если интересно, не курящий и другим не советую.

Цитата Сообщение от Usaga Посмотреть сообщение
Любая идея отходящая от ванильного JS
по моим понятиям недоджуна, это код без использования сторонних фреймворков и плагинов. Назовите как больше нравится.

Еще раз, пример в начале топика от 01.09.2023, 09:28 надо изменить, чтобы не множить document.getElementById('...ID'). Пример в №28 или из песочницы есть и работает
что-то долго открывается. Может чей-то сервак перегружен. Сейчас открывался почти минуту. Но может проблема у моего провайдера.

Добавлено через 12 минут
коррект, т.к. нет возможности изменить
Нет. Даже если просто добавить в <button green='green'>Toggle!</button>
JS:
document.querySelector('output').innerTe xt = darkMode ? 'dark' : 'light'; 'green' ...
или другой по ID, class и т.д.
0
06.09.2023, 14:40

Не по теме:


уже жду с нетерпением SegeraJS
чесслово
хотя видно впору уже упоминать г-на Крылова с пирогами и сапогами

0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
06.09.2023, 18:50  [ТС]

Не по теме:

уважаемые эксперты, может свои литературные познания куда-то определите в другой форум или хотя бы ветку.
В разговоры или флейм например.


Пинцет, хочешь поумничать - велкам в код
0
06.09.2023, 19:01

Не по теме:

Цитата Сообщение от Segera Посмотреть сообщение
Пинцет, хочешь поумничать - велкам в код
мне своего хватает)
но коль скоро ты рили не можешь понять ответы - флаг тебе в руки и попутного ветра

0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
06.09.2023, 19:04  [ТС]
пинцету персональное спасибо. Ответ зачтен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.09.2023, 19:04

Как сделать ЧПУ на чистом рнр сайте
Здравствуйте. Я создал сайт, а теперь задумался о том что надо сделать читабельные урлы. Подскажите как это сделать. Вот такие у меня...

Как сделать ЧПУ на чистом рнр сайте
Есть сайт на php, адресс имеет след.: xxxxx.ru/view_beauty.php?id=2 как сделать что бы получить: xxxxx.ru/view_beauty прошу помощи.

Как сделать запрос в запросе на чистом Rails?
У меня есть запрос в котором я поменял переменные потому что главные названия я не могу выставлять в публичный доступ SELECT * FROM...

Как сделать анимацию двух объектов на чистом javascript?
помогите создать анимацию, чтобы один объект ехал влево и при встрече с другим другой объект ехал вниз

Как сделать чтобы 2 формы работали независимо друг от друга на чистом JS
&lt;section&gt; &lt;div class=&quot;container&quot;&gt; &lt;div class=&quot;form&quot;&gt; &lt;div class=&quot;select-param&quot;&gt; &lt;p...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru