Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для Mailo
178 / 226 / 31
Регистрация: 18.02.2010
Сообщений: 2,313

Несколько модалок на js

03.12.2024, 12:04. Показов 4183. Ответов 66
Метки нет (Все метки)

Заюзал вот этот скрипт для модалок

JavaScript
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
//modal window
function Modal(e){
    this.modal = document.querySelector('.modal');
    this.overlay = document.querySelector('.overlay');
    this.close_btn = document.querySelector('.close_btn');
    let popup = this;   
 
    this.open = function(){
        popup.overlay.classList.add('m_open');
        popup.modal.classList.add('m_open');
    }
 
    this.close = function(){
        popup.overlay.classList.remove('m_open');
        popup.modal.classList.remove('m_open');
    }
 
    this.overlay.onclick = popup.close;
    this.close_btn.onclick = popup.close;
}
 
let pop = new Modal();
 
document.querySelector('.m_btn').onclick = function(e){
    pop.open();
    e.preventDefault();
}
Но он вроде как на одну модалку только, а у меня на сайте их несколько, немного дополнил его, что бы сработала вторая + ещё одна кнопочка закрытия была

JavaScript
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
//modal window 2x
function Modal(e){
  this.modal = document.querySelector('.m_login');
  this.modal2 = document.querySelector('.m_application');
  this.overlay = document.querySelector('.overlay');
  this.close_btn = document.querySelector('.close_btn');
  this.close_btn2 = document.querySelector('.cb2');
  this.close_btn3 = document.querySelector('.ma_close');
  let popup = this; 
  this.open = function(){
    popup.overlay.classList.add('m_open');
    popup.modal.classList.add('m_open');
  }
  this.open2 = function(){
    popup.overlay.classList.add('m_open');
    popup.modal2.classList.add('m_open');
  }
  this.close = function(){
    popup.overlay.classList.remove('m_open');
    popup.modal.classList.remove('m_open');
    popup.modal2.classList.remove('m_open');
  }
  this.overlay.onclick = popup.close;
  this.close_btn.onclick = popup.close;
  this.close_btn2.onclick = popup.close;
  this.close_btn3.onclick = popup.close;
}
 
let pop = new Modal();
document.querySelector('.m_btn_1').onclick = function(e){
  pop.open();
  e.preventDefault();
}
 
let pop2 = new Modal();
  document.querySelector('.m_btn_2').onclick = function(e){
  pop2.open2();
  e.preventDefault();
}
Собственно вопрос, на сколько я криво его доработал и можно ли как то укоротить? Сложность в том, что если окон дофига будет, то портянка ещё та получится + бывает к примеру 5 кнопок, что бы открыть одну и ту же модалку ну и чуть меньше, несколько, что бы закрыть одну и ту же.
И на каждую писать типа такой комбинации

JavaScript
1
2
this.close_btn3 = document.querySelector('.ma_close');
this.close_btn3.onclick = popup.close;
В общем нужна оптимизация для нескольких окон и нескольких кнопок, для одного и того же окна.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<!-- modals -->
 
<div class="overlay"></div>
 
<div class="modal m_login">
  <span class="close_btn"></span>
</div>
 
<div class="modal m_application">
  <span class="close_btn cb2"></span>
</div>
<!-- end of modals -->
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.12.2024, 12:04
Ответы с готовыми решениями:

Не отображается крестик у модалок в сафари
Хотя область в том месте кликабельная и по клику как и надо происходит закрытие модального окна , просто не отображается крестик, я как...

Блокировка прокрутки body для модалок
Доброго времени суток! Кто может помочь в чем проблема? Есть сайд, но когда он активен нужно что сам контент под ним был 'fixed. ...

Построить ε-НКА, допускающий язык, состоящий из цепочек, имеющих ноль или несколько а, ноль или несколько b, ноль или несколько с.
Построить ε-НКА, допускающий язык, состоящий из цепочек, имеющих ноль или несколько а, ноль или несколько b, ноль или несколько с.

66
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
09.12.2024, 13:23
была задача с несколькими окнами popup.
Причем, с масштабированием до любого количества.
1. Use Bootstrap’s JavaScript modal plugin
2. JQuery здесь просто в поисковую строку что надо и ответ почти готов. Разумеется с допиливанием. Ну а куда без него
3. ванильном CSS. Или так говорят про JS? Но не суть. Здесь главное использовать линк + идентификатор <a href="#....">. Которые можно множить по любому требованию.
Понятно, используя JS будет много чего в дополнение. Если оно требуется.
Простое модальное окно на CSS без JS - правое окно просмотра лучше расширить, т.к. не сделано адаптивные штучки.
Кликните здесь для просмотра всего текста

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
<!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>Простое модальное окно на CSS</title>
        <!---
          https://codepen.io/vavik96/pen/VPOVKe
           <script src="js/ModalWindow30.js"></script>      
                        -->
<link rel="stylesheet" href="styles.css">      
<link rel="stylesheet" href="modal.css">
<link rel="stylesheet" href="pictr_move.css">                   
</head>
<body>
    <h1>Простое модальное окно на CSS без JS</h1>
 
            <!-- cсылка на модальное окно -->
 <a href="#ModalOpenK" title="">Открыть окно КИА</a>
 <!-- само модальное окно -->
  <div id="ModalOpenK" class="Window">
            <div>
  <a href="#close" title="Закрыть" class="close">X</a>
  <p>Kia Optima<br>Представляет собой седан с кузовом-купе от южнокорейского автопроизводителя Kia, ориентированный на средний класс. Модельный ряд основан на той же платформе, что и Hyundai Sonata, и является преемником модели Kia Clarus.</p>
  <img src="https://a.d-cd.net/1b2d45es-1920.jpg" height="650" alt="KiaOptima" /> 
            </div>
  </div> 
  <br>
  <a href="#ModalOpenL" title="">Открыть окно Лада</a>
   <!-- само модальное окно -->
  <div id="ModalOpenL" class="Window">
    <div>
<a href="#close" title="Закрыть" class="close">X</a>
<p>Лада Веста<br>LADA Vesta седан вместителен и удобен, особое внимание уделено акустическому комфорту. Седан отлично приспособлена для сложных климатических и дорожных условий. ... Новая LADA Vesta седан. Поколение, которое всё меняет. от 1 239 900 ₽.</p>
<img src="https://kolesa-uploads.ru/-/f28d5ec3-2443-4e49-90b2-a51d6a0c15de/f82a25d649000ddc88347361aa5daf82.jpg" height="650" alt="Lada" /> 
    </div>
</div> 
  <br>
<a href="#ModalOpenJ" title="">Открыть окно  Geely Tugella</a>
 <!-- само модальное окно -->
<div id="ModalOpenJ" class="Window">
  <div>
<a href="#close" title="Закрыть" class="close">X</a>
<p>Geely Tugella<br>Geely Tugella в комплектации Flagship — в новом кузове цена составляет 3 899 990 - 4 329 990 рублей. Кроссовер мощностью 238 л.с.</p>
<img src="https://a.d-cd.net/K1mZr3RTr1NjR9kIq0sbuWJ97gM-960.jpg" /> 
  </div>
</div> 
  <!--  width="2400" height="450" alt="Geely Tugella" width="300"  width="300"-->
 
        </body>
</html>
styles.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
/* Начало стилей  */
img {
  width: 50rem;
  display:block;
  margin:auto;
}
.Window {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0,0,0,0.7);
  z-index: 99999;
  -webkit-transition: opacity 400ms ease-in;
  -moz-transition: opacity 400ms ease-in;
  transition: opacity 400ms ease-in;
  display: none;
  pointer-events: none;
 }
 
 .Window:target {
  display: block;
  pointer-events: auto;
 }
 
 .Window > div {
  width: 80%;
  height: 100%;
  bottom: 100px;
  position: relative;
  margin: 10% auto;
  padding: 20px;
  border-radius: 5px;
  background: #e3eb7d;
  box-shadow: 0px 0px 20px 2px;
 }
 
 .close {
  background: #cc3300;
  color: #e3fc09;
  line-height: 21px;
  position: absolute;
  right: -12px;
  text-align: center;
  top: -10px;
  width: 27px;
  text-decoration: none;
  font-weight: bold;
  border-radius: 15px;    
  -webkit-border-radius: 12px;
  -moz-border-radius: 12px;
  -moz-box-shadow: 1px 1px 3px #000;
  -webkit-box-shadow: 1px 1px 3px #000;
  box-shadow: 1px 1px 3px #000;
 }
 .close:hover { background: #990000; }
 /* Окончание стилей */
modal.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
/* Создано средствами разработчика 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;
    }
 
 
.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;
                }
                .container {
                    height: 1200px;
                }
 
                ::-webkit-scrollbar {
                    width: 21px;
                }
 
                ::-webkit-scrollbar-track {
                    background: #00ee34;
                    box-shadow: 0 0 2px rgba(34, 63, 0, 0.2) inset;
                }
 
                ::-webkit-scrollbar-thumb {
                    background: #a0b4df;
                    border-radius: 8px;
                    border: 3px solid #c3ee04;
                }
 
                ::-webkit-scrollbar-thumb:hover {
                    background: #2d0192;
                }
pictr_move.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
/* https://projects.verou.me/css3patterns/# 
https://developer.mozilla.org/ru/docs/Web/CSS/CSS_images/Using_CSS_gradients
*/
 
img {
position: absolute;
top: 20%; /*  по центру */
left: 20%;
animation-fill-mode: forwards;
animation-play-state: running;
animation-duration: 3s;
animation-name: slidein;
 
}
 
@keyframes slidein {
from {
  margin-left: 100%;
  width: 300%;
}
 
75% {
  margin-left: 15%;
  width: 250%;
}
 
to {
  margin-left: -18%;
  width: 50em;
}
}
 
body {
 height:100svh;
  background: conic-gradient(rgba(0,238,255,1) 19%, blue); 
}
 
/*  */
 
.title_modal {
  color:rgb(1, 1, 90); 
  font-size: 34px;
  position: absolute;
  right: 40%;
  margin-right: -50%;
  transform: translate(-50%, -50%)
 
}
 
.simple-linear {
  height:100svh;
  background: conic-gradient(rgba(0,238,255,1) 19%, blue); 
}


Понятно в более чем, можно сделать по-другому, а где-то уже сделал ( это было весна-лето прошлого года ). Также удалить излишества. Идея была включить ещё больше.
0
 Аватар для Mailo
178 / 226 / 31
Регистрация: 18.02.2010
Сообщений: 2,313
09.12.2024, 13:40  [ТС]
Цитата Сообщение от Segera Посмотреть сообщение
Здесь главное использовать линк + идентификатор <a href="https://www.cyberforum.ru/javascript/#....">
Вот последний заказчик-бэкендер такой способ и за айдишники ругал и за тег a, который по факту никуда не ведёт, мол если он никуда не ведёт то и не надо его юзать, а по мне так удобно, вдруг надо быстро popup на линк поменять, а preventDefault не сложно дописать.
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3961 / 2122 / 833
Регистрация: 13.03.2010
Сообщений: 6,968
09.12.2024, 14:25
Цитата Сообщение от Mailo Посмотреть сообщение
Вот последний заказчик-бэкендер такой способ и за айдишники ругал и за тег a, который по факту никуда не ведёт
Всё правильно делал. Это плохой подход.
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
09.12.2024, 14:33
Цитата Сообщение от gogolik Посмотреть сообщение
Это плохой подход.
это весь довод?
Если линк ведет в пределы самого проекта, в чем проблема?
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3961 / 2122 / 833
Регистрация: 13.03.2010
Сообщений: 6,968
09.12.2024, 15:05
Segera, якорные ссылки должны вести на разделы сайта, а не на модалки. Они для этого и созданы. Вы же не забиваете гвозди микроскопом?
Всю логику модальных окон можно построить на дата-аттрибутах. И тогда не нужно никаких извращений с preventDefault.

Минимальный пример из реальных проектов:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const modalTogglers = document.querySelectorAll('[data-modal]')
if (modalTogglers) {
    modalTogglers.forEach(el => {
        el.addEventListener('click', () => {
            const modalID = el.dataset?.modal
            if (!modalID) return
 
            toggleModal(modalID)
        })
    })
}
 
const toggleModal = id => {
    const modal = document.getElementById(id)
    if (modal) {
        modal.classList.toggle('opened')
    }
}
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
09.12.2024, 16:01
Цитата Сообщение от gogolik Посмотреть сообщение
Всю логику модальных окон можно построить на дата-аттрибутах.
если использовать JS, логичнее использовать фреймворки. Об этом п.п. 1, 2. А не создавать индустрию велосипедостроения.
Впрочем, может быть исключение. Если это хорошо оплачивается, почему нет.
ПС. Потом что значит должны? Это есть в правилах ECMA или других.
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3961 / 2122 / 833
Регистрация: 13.03.2010
Сообщений: 6,968
09.12.2024, 16:28
Цитата Сообщение от Segera Посмотреть сообщение
Это есть в правилах ECMA или других.
Приведите конкретную цитату. В частности, из ECMA, который вы упоминаете.

Я уже молчу про то, что ссылка - это ссылка, а не элемент управления UI.

Цитата Сообщение от Segera Посмотреть сообщение
логичнее использовать фреймворки.
Не логичнее. Зачем мне тащить несколько сот килобайт того же бутстрапа ради модалок, если я могу то же самое написать в 200-300 строчек с учётом всех анимаций и стилей?
1
 Аватар для voraa
1296 / 1281 / 190
Регистрация: 21.01.2024
Сообщений: 5,930
09.12.2024, 16:50
Цитата Сообщение от Segera Посмотреть сообщение
ПС. Потом что значит должны? Это есть в правилах ECMA или других.
Ну сейчас тенденция, что следует использовать элементы html в соответствии с их семантикой. Это связано в первую очередь с использованием программ доступности (экранные читалки, работа исключительно с клавиатуры, а не мышью...) На загнивающем западе, если какой то достаточно значимый сайт (магазин, покупка билетов, правовая информация...) не является доступным для лиц с ограниченными возможностями, то его могут крупно оштрафовать.
Программы чтения с экрана тоже ориентируются на семантический смысл элементов. Для них <a> это переход на другую страницу или другой раздел, а не выполнение какого то действия. Для действий (открыть окно, закрыть окно, послать запрос..) есть <button>, а не <a> или какой то другой кликабельный <div>.
(<div> в принципе тоже можно, задав ему role="button", но при этом надо обеспечить ему фокусировку, что бы на него можно было попасть при работе с клавиатуры, а с <button> это обеспечивается автоматически)

Добавлено через 20 минут
Для простых popup окон (не модальных) можно рассмотреть использование атрибута popover.
https://developer.mozilla.org/... opover_API
Правда, к сожалению, на старых Сафари это не работает.
(По мне, так обновляться надо)
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
09.12.2024, 17:58
Цитата Сообщение от gogolik Посмотреть сообщение
Приведите конкретную цитату. В частности, из ECMA, который вы упоминаете.
у меня было про это:
Цитата Сообщение от gogolik Посмотреть сообщение
якорные ссылки должны вести на разделы сайта, а не на модалки.
это не совсем какие-то придирки к словам. Интересно, откуда это про "должны". Поэтому, единственно что сразу вспомнилось правила ECMA.
Цитата Сообщение от gogolik Посмотреть сообщение
Зачем мне тащить несколько сот килобайт того же бутстрапа ради модалок
зачем тащить, если можно привести линк на ресурс? Впрочем, конечно можно скачать jq.js и вставить в свой бекэнд. В этом случае будет вариант тащить. Бывают ситуации, когда сеть закрыта и это единственный вариант. Едва ли это имелось ввиду.

Как тут всё кошерно. Если сказал HTML, значит не фейшуйно использовать линк кроме перехода на другую страницу.
Как быть тогда, если в CSS забрали анимацию, плавное выход из любой части экрана и т.д., которые раньше работали исключительно из JS. Вроде как не того сорта инструмент.

voraa
макось для нас не так актуальна.
Можно предложить ТС масштабированный вариант https://mdn.github.io/dom-exam... le-manual/
Кликните здесь для просмотра всего текста

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
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Multiple manual popovers example</title>
    <style>
      :popover-open {
        position: absolute;
        inset: unset;
        top: 80px;
      }
 
      #mypopup-1 {
        left: 8px;
      }
 
      #mypopup-2 {
        left: 150px;
      }
    </style>
  </head>
  <body>
    <button popovertarget="mypopup-1" popovertargetaction="show">
      Show popover #1
    </button>
    <button popovertarget="mypopup-1" popovertargetaction="hide">
      Hide popover #1
    </button>
    <hr>
    <button popovertarget="mypopup-2" popovertargetaction="show">
      Show popover #2
    </button>
    <button popovertarget="mypopup-2" popovertargetaction="hide">
      Hide popover #2
    </button>
 
    <div id="mypopup-1" popover="manual">Popover content #1</div>
    <div id="mypopup-2" popover="manual">Popover content #2</div>
  </body>
</html>

Вообще-то, ещё раз уточню. Не против выполнения простых задач сложным путём. Ну или в чем-то сложнее, представленных в п.3. Это может добавить веса проекту и соответственно профиту. От чего мало кто откажется.
0
Заблокирован
09.12.2024, 18:16
Цитата Сообщение от Segera Посмотреть сообщение
зачем тащить, если можно привести линк на ресурс?
Вероятно, кто-то не в курсе, как тормозят загрузку страницы сторонние ресурсы.
0
 Аватар для voraa
1296 / 1281 / 190
Регистрация: 21.01.2024
Сообщений: 5,930
09.12.2024, 19:12
Цитата Сообщение от Segera Посмотреть сообщение
значит не фейшуйно использовать линк кроме перехода на другую страницу.
Или на другую часть документа (по якорю). В любом случае при переходи меняется текущий url, и можно вернуться назад кнопкой Back.
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
09.12.2024, 19:43
Цитата Сообщение от barabar Посмотреть сообщение
Вероятно, кто-то не в курсе, как тормозят загрузку страницы сторонние ресурсы.
похоже, кто ещё больше не курсе, как они тормозят на бекэнде. Если конечно этот вопрос для кого-то хоть как-то актуален.
Цитата Сообщение от voraa Посмотреть сообщение
В любом случае при переходи меняется текущий url, и можно вернуться назад кнопкой Back.
ну это, если очень надо. Например, даже на cyberforum.ru нет стрелки вернуться назад при количестве страниц более одной.
Неужели эта главная особенность ( фишка ) линка <a target="_blank" href="1.html"></a>
Если вы таких строгих правил, какое отношение допустим к кнопке в линке?
HTML5
1
2
3
 <a target="_blank" href="https://ya.ru">
                  <button>Поиск</button>
                  </a>
0
Заблокирован
09.12.2024, 19:50
Цитата Сообщение от Segera Посмотреть сообщение
похоже, кто ещё больше не курсе, как они тормозят на бекэнде. Если конечно этот вопрос для кого-то хоть как-то актуален.
Мне, как владельцу сайта, этот вопрос очень актуален и нет никакой разницы, где именно они тормозят. Важно, что тормозят. Даже то, что браузер после первого посещения всё закэширует и потом тормозов не будет, ни как не влияет на сервис гугла Lighthouse. Отправит сайт в красную зону и Гугл выдачу сайта в поиске понизит.
0
 Аватар для voraa
1296 / 1281 / 190
Регистрация: 21.01.2024
Сообщений: 5,930
09.12.2024, 19:50
Цитата Сообщение от Segera Посмотреть сообщение
Если вы таких строгих правил, какое отношение допустим к кнопке в линке?
Так просто делать нельзя!!!
Content model:
Transparent, but there must be no interactive content descendant, a element descendant, or descendant with the tabindex attribute specified.
https://html.spec.whatwg.org/m... -a-element

Разрешённый контент Логический контент, содержащий либо основной поток (исключая интерактивный контент), либо заголовочный контент.
https://developer.mozilla.org/... /Element/a
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3961 / 2122 / 833
Регистрация: 13.03.2010
Сообщений: 6,968
09.12.2024, 20:15
Цитата Сообщение от Segera Посмотреть сообщение
Интересно, откуда это про "должны".
И вы решили не имея ни малейшего понятия о ECMA приплести его?
Я уже сказал, что как минимум ссылки - это не элемент управления UI.

Цитата Сообщение от Segera Посмотреть сообщение
можно скачать jq.js и вставить в свой бекэнд
Зачем бэкенду jquery? Опять оперируем понятиями, не имея представления о них?
Зачем вообще эта срань любому современному сайту?

Цитата Сообщение от Segera Посмотреть сообщение
Если сказал HTML, значит не фейшуйно использовать линк кроме перехода на другую страницу.
Смотрим в стандарт. Цитирую:
If the a element has an href attribute, then it represents a hyperlink (a hypertext anchor) labeled by its contents.

If the a element has no href attribute, then the element represents a placeholder for where a link might otherwise have been placed, if it had been relevant, consisting of just the element's contents.
Из этого определения следует, что назначение <a> - быть гиперссылкой. Для действий, не связанных с переходами по ссылкам (например, открытия модальных окон), спецификация рекомендует использовать другие элементы, что, соответственно, подразумевает нежелательность превращать <a> в "кнопку действия" с точки зрения семантики и практики.

Цитата Сообщение от Segera Посмотреть сообщение
Как быть тогда, если в CSS забрали анимацию, плавное выход из любой части экрана и т.д., которые раньше работали исключительно из JS. Вроде как не того сорта инструмент.
Этот поток мыслей не понял, сорян.
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
10.12.2024, 07:14
Цитата Сообщение от voraa Посмотреть сообщение
Так просто делать нельзя!!!
понимаю, чем-то всё это напоминает сцену из спектакля Полунина, с понятным названием что можно. В противоположном смысле.
по вашему разъяснению цитата <a> - элемент ссылки
Также он может быть использован (в устаревшем варианте) для создания якоря — это место назначения для гиперссылок внутри страницы: так ссылки не ограничены только в перемещении между страницами.
Т.е. претензия из-за использования чего-то устаревшего от этого года или если точнее This page was last modified on 11 авг. 2024 г.
При этом не надо смущаться другими устаревшими name, shape.
У меня есть одно предубеждение. Это не работает. Если всё работает и простыми методами, предубеждение = 0. Разумеется, отлично понимаю, мнение редакции может не совпадать с мнениями корреспондентов.
Какой тут может быть резюм? Большинстве в теме не будет использовать линк+#(якорь) и крайне негативно относятся, если используют другие. Ну бывает такое. Не фейшуйно. Общество не одобряет.
Если мой заказчик будет того же мнения, разумеется сделаю нужные правки. Пока гуру не мои заказчики, поэтому могу известить, принял к сведению.
Надеюсь, gogolik хотя бы эту простую мысль не определил как поток, а значит понял.
0
 Аватар для voraa
1296 / 1281 / 190
Регистрация: 21.01.2024
Сообщений: 5,930
10.12.2024, 07:44
Цитата Сообщение от Segera Посмотреть сообщение
Большинстве в теме не будет использовать линк+#(якорь) и крайне негативно относятся, если используют другие.
Я только не пойму, с чего вы это взяли. Якорь нормальная вещь (Раньше через <a> вводилась, теперь через id можно), Перемещение к якорю с помощью ссылки - тоже нормально.
Где вы увидели, что кто то что то сказал против якорей.
1
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3961 / 2122 / 833
Регистрация: 13.03.2010
Сообщений: 6,968
10.12.2024, 08:06
Segera, по делу ответить нечего? Или используем ваш классический "уход в тень" после того, как тотально и жидко облажались? Какой-то якорь приплели, каких-то заказчиков, какое-то одобрение общества. Вместо очередного потока сознания могли бы и на мои вполне логичные вопросы ответить.
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 591
10.12.2024, 08:50
Цитата Сообщение от voraa Посмотреть сообщение
Где вы увидели, что кто то что то сказал против якорей.
именно была в этом уверенность. Как минимум с год. С каких пор вполне удовлетворительно работает, без намека на претензии, так незя.
Откуда?
Цитата Сообщение от gogolik Посмотреть сообщение
Это плохой подход.
Цитата Сообщение от gogolik Посмотреть сообщение
якорные ссылки должны вести на разделы сайта, а не на модалки.
вот эту фразу долго мусолил, но оставил на что-то в раздел мне-так-кажется. На раздел сайта или наверное точнее страницы ведет линк с адресом XXX.html, включая пути конечно. Но как может вести куда-то <a href="#ID">, кроме к индентификатору? Или тут надо понимать, если линк, то либо на другой ресурс, либо якорь, но идентификатор ни-ни.
В чем отличие идентификатора от линка? Наверное в узости и ограниченности применения. До понятия якорь, где ограничение больше некуда.
Но ещё раз уважаемые гуру и господа. Или в другом порядке. Всё определяет заказчик. Или тот, у кого это работает.
Где есть один факт. Работает ( хорошо или не очень ) или не работает. По-моему работает без единого вопроса.
В чем может выявиться проблема использования в линке идентификатора? Можно предположить у кого-то диссонанс в виде "А что так можно?!!!" Если начнет читать чужой код. Случай более чем распространенный. Ну или если всем нельзя, значит тут нет шансов.
Малая надежда, не просматриваются любые потоки, чтобы что-то было не понятно.
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3961 / 2122 / 833
Регистрация: 13.03.2010
Сообщений: 6,968
10.12.2024, 09:28
Цитата Сообщение от Segera Посмотреть сообщение
Наверное в узости и ограниченности применения. До понятия якорь, где ограничение больше некуда.
В вашей некомпетентности и незнании простейших понятий. Ну и нежелании пройти по ссылке и прочитать стандарт.

И опять куча пустых слов в сообщении, вместо ответа. Дальнейшие ваши комментарии буду рассматривать как намеренное введение других пользователей в заблуждение. Лучше не говорить ничего, если не разбираешься в сабже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.12.2024, 09:28

Зависимость между двумя ячейками: несколько водителей и несколЬко автомобилей
Подскажите, пожалуйста, как сделать зависимость между двумя ячейками? Например, когда выбираю какую-либо фамилию в ячейке...

Несколько клавиш частично не работают несколько минут после включения пк
Доброго времени суток уважаемые пользователи форума. Имеется бюджетная клавиатура Defender Mayhem Gk-360DL. Имитирует механическую...

Подскажите как преобразовать несколько чисел из одной строки, и несколько int переменных
Доброго времени, ломаю голову над задачей второй день, но что то ускользает от меня. суть задачи: написать функцию, которая принимает в...

Несколько регулярных выражений в параметр или как вырвать сразу несколько слов из контекста
Добрый день. Запутался в регулярных выражениях. Получается достигнуть цели, дублируя кусок кода несколько раз. Вот из такого текста(он...

Как прикрепить несколько картинок на несколько людей в списке БД
У меня есть готовая БД, Нужно сделать чтобы при выборе строки в DBGrid, выходила картинка в DBImage. и так на несколько людей в списке. что...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru