19.06.2020, 15:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Сергей Ракипов
|
показывался блок kartinkaPriNavedenii
|
Какой именно или все? Ну поступать также как и в ранее показанном коде.
PS. Если это решаемо средствами CSS, то используйте его, не нужно грузить JS этим.
|
|
19.06.2020, 16:15
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
Сообщение от laimas
|
Какой именно или все? Ну поступать также как и в ранее показанном коде.
|
Я пробую но не получается, какие то ошибки
<div class="shriht">
<a href="12_pt_serif_open_sans/" target="_blank" class="navedenie">PT Serif & Open Sans</a>
<div class="kartinka_pri_navedenii">
<img src="kartinka/12.png" alt="">
</div>
</div>
<div class="shriht">
<a href="13_pt_sans_pt_serif/" target="_blank" class="navedenie">PT sans & PT serif</a>
<div class="kartinka_pri_navedenii">
<img src="kartinka/13.png" alt="">
</div>
</div>
|
|
19.06.2020, 16:37
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
let navedenie = document.querySelectorAll(".navedenie"); - это коллекция элементов, let kartinkaPriNavedenii = document.querySelectorAll(".kartinka_pri_navedenii "); - это тоже коллекция элементов. При этом, как выясняется, каждый элемент коллекции kartinkaPriNavedenii является дочерним элементом соответствующего элемента коллекции navedenie. Как понять чего вам хочется, если это две коллекции? Если управлять только своим дочерним элементом, то зачем вы получаете коллекцию kartinkaPriNavedenii?
Кстати, kartinkaPriNavedenii - это может и говорит вам о чем-то, но все-таки, такие ребусы читать не из приятного.
И зачем так, ради "потренироваться" или же так и будет работать. Если последнее, то решать это посредством JS крайне плохая практика.
|
|
19.06.2020, 16:58
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
laimas,
Я пока учусь в свободное время, честно не очень получается.
|
|
19.06.2020, 17:03
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
Я сделал себе вот такую подсказку
https://rakipov.ru/shrift/
И мне нужно что бы это работало вот так, но для всех блоков, а не для одного.
const navedenie = document.querySelectorAll(".navedenie");
const kartinkaPriNavedenii = document.querySelector(".kartinka_pri_navedenii");
function priNavedenii_1() {
let navedenie = document.querySelectorAll(".navedenie");
let test = navedenie.getBoundingClientRect();
console.log(test.top);
function priNavedenii_2() {
if (test.top >= 387) {
kartinkaPriNavedenii.style.visibility = "visible";
kartinkaPriNavedenii.style.top = "-387" + "px";
} else if (test.top >= 0) {
kartinkaPriNavedenii.style.visibility = "visible";
kartinkaPriNavedenii.style.top = "0" + "px";
}
}
navedenie.addEventListener("mouseover", priNavedenii_2);
}
window.addEventListener('mousemove', priNavedenii_1);
function priNavedenii_3(){
kartinkaPriNavedenii.style.visibility = "hidden";
}
navedenie.addEventListener("mouseout", priNavedenii_3);
|
|
20.06.2020, 07:20
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
Сообщение от laimas
|
Можете "соединить" два значения в одно, страшного не будет. А вообще, параметр, это формальный параметр, передаваемое снаружи в функцию входное значение. А аргумент, фактическая переменная, значение которой используется как входное при вызове функции. Причем эту трактовку не обязательно вы встретите во всех языках.
https://developer.mozilla.org/ru/doc...uide/Functions
|
Сегодня прочитал, что к аргументу, нужно относится как переменной, это так или я поплыл не туда.
|
|
20.06.2020, 08:38
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Сообщение от Сергей Ракипов
|
для всех блоков,
|
<script>
document.addEventListener( "DOMContentLoaded" , function() {
let div = document.querySelector('.kolonki');
let changeTop = {
handleEvent(event) {
const target = event.target.closest('.shriht');
if (!target) return;
let rect = target.getBoundingClientRect();
let divPicture = target.querySelector('.kartinka_pri_navedenii');
let Height = divPicture.offsetHeight;
let h = rect.top + Height > innerHeight ? innerHeight - (rect.top + Height + 10) : 0;
divPicture.style.setProperty('top', `${h}px`)
}};
div.addEventListener('mouseenter', changeTop, true);
});
</script>
|
|
20.06.2020, 09:15
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Сергей Ракипов
|
к аргументу, нужно относится как переменной
|
Все проще будет, если от естественного. Функции передаются параметры, которые описаны, причем в языках типизированных указаны и типы параметров, и возвращаемый функцией тип. Например функция:
int function_name(int a, int b) в Си - передаваемые в функцию параметры, это integer и функция возвращает integer. В РНР тип возвращаемый функцией описывается в конце после двоеточия, например function_name(array $a) : number. Если передаваемый параметр не будет соответствовать типу, то это вызовет ошибку.
Вызывая функцию вы передаете ей параметры - function_name(23, 99). Функция принимает эти параметры, которые являются ее аргументами:
function_name(a, b) {
a и b - аргументы функции
}
PS. Строго говоря, аргументы функции нельзя назвать переменными, значение их зависит от переданных в функцию параметров, это да.
Последний раз редактировалось laimas, 20.06.2020 в 09:26.
|
|
20.06.2020, 10:17
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
рони,
Как всегда спасибо, очень приятно знать что есть такие люди как вы
|
|
20.06.2020, 10:19
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
laimas,
Буду еще разбираться, и я кроме верстки не чего не знаю JS это для меня первый язык
|
|
|
|