 
			
				19.05.2020, 20:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2010 
					
					
					
						Сообщений: 673
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Границы наведения
			 
			
		
		
		
		Нужно что бы при наведение на слово test выпадал блок и отсталася на месте когда курсор на нем и на зоне которая выпала, пропадал когда курсор ушел.  
В первом случае зона наведения она снизу больше (я понимаю почему из за размера блока) и соответственно срабатывает не так как задумано. 
 
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.block{
	height: 100%;
}
.block_inside1{
	cursor: pointer;
}
.block_inside2{
	position: relative;
	width: 50px;
	transform:translateY(-250px);
	transition: transform .5s;
	z-index: 2;
	background-color: #e2e2e2;
}
</style>
</head>
<body>
<div class="block">
	<div class="block_inside1">test</div>
	<div class="block_inside2">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, maiores!</div>
</div>
<script>
const block = document.querySelector(".block");
const block_inside1 = document.querySelector(".block_inside1");
const block_inside2 = document.querySelector(".block_inside2");
function subHover_1(){
	block.onmouseover = subDown;
	block.onmouseout= subUp;
	function subDown(){
	block_inside2.style.transform = "translateY("+"20"+"px)";
	}
	function subUp(){
	block_inside2.style.transform = "translateY("+"-250"+"px)";
	}
}
subHover_1();
</script>
</body>
</html>
Во втором случае происходит не большое дергание если медленно сдвигаешь курсор из одной зоны в другую, примерно понимаю из за чего, но тоже проблему не могу решить 
 
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.block{
	height: 100%;
}
.block_inside1{
	cursor: pointer;
}
.block_inside2{
	position: relative;
	width: 50px;
	transform:translateY(-250px);
	transition: transform .5s;
	z-index: 2;
	background-color: #e2e2e2;
}
</style>
</head>
<body>
<div class="block">
	<div class="block_inside1">test</div>
	<div class="block_inside2">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, maiores!</div>
</div>
<script>
const block = document.querySelector(".block");
const block_inside1 = document.querySelector(".block_inside1");
const block_inside2 = document.querySelector(".block_inside2");
function subHover_1(){
	block_inside1.onmouseover = subDown;
	block_inside1.onmouseout= subUp;
	block_inside2.onmouseover = subDown;
	block_inside2.onmouseout= subUp;
	function subDown(){
	block_inside2.style.transform = "translateY("+"20"+"px)";
	}
	function subUp(){
	block_inside2.style.transform = "translateY("+"-250"+"px)";
	}
}
subHover_1();
</script>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.05.2020, 08:01
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Сергей Ракипов,
  
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.block{
    height: 100%;
    background-color: #54CC2C;
    position: relative;
}
.block_inside1{
    cursor: pointer;
    background-color: #CC2ABC;
}
.block_inside2{
    position: relative;
    width: 50px;
    transform:translateY(-250px);
    transition: transform .5s;
    z-index: 2;
    background-color: #e2e2e2;
}
.test{
   width: 50px;
   height: 50px;
   background-color: #2F2FCC;
   left: 50%;
   top: 50%;
   position: absolute;
}
</style>
</head>
<body>
<div class="block">
    <div class="block_inside1">test</div>
    <div class="block_inside2">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, maiores!</div>
    <div class="test"></div>
</div>
<script>
var block = document.querySelector(".block");
var block_inside1 = document.querySelector(".block_inside1");
var block_inside2 = document.querySelector(".block_inside2");
function subHover_1() {
    var timer;
    block.onmouseover = subDown;
    block.onmouseout = subUp;
    function subDown(event) {
        if (event.target.matches(".block_inside1, .block_inside2")) {
            clearTimeout(timer);
            block_inside2.style.transform = "translateY(" + "20" + "px)";
        }
    }
    function subUp(event) {
        if (event.target.matches(".block_inside1, .block_inside2")) {
            clearTimeout(timer);
            timer = setTimeout(function() {
                block_inside2.style.transform = "translateY(" + "-250" + "px)";
            }, 300);
        }
    }
}
subHover_1();
</script>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.05.2020, 18:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2010 
					
					
					
						Сообщений: 673
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 рони, 
 То есть, была создана пустая переменная timer что бы положить задержку в 300 миллисекунд, а зачем? как это помогло? 
 
Потом функция, которая отслеживает событие, проверяет совпадение с классами .block_inside1, .block_inside2 
И зачем то очистили таймату, не понял для чего?  
 
Можно хоть в двух словах, почему у меня не работало как нужно а у вас все сработало как нужно. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.05.2020, 18:39
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2010 
					
					
					
						Сообщений: 673
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Так я кажется не много понял, задержка как то убирает этот дергание, но не могу понять как это работает 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.05.2020, 19:20
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Сергей Ракипов, 
 если за 300 миллисекунд курсор успеет встать с блока .block_inside1 или .block_inside2  на .block_inside1 или .block_inside2 то отключится -250px. 
 
300 миллисекунд - максимальное время для перемещения по пустому пространству между блоками 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.05.2020, 20:01
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2010 
					
					
					
						Сообщений: 673
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от рони
			 
		
	 | 
 
	
		Сергей Ракипов, 
 если за 300 миллисекунд курсор успеет встать с блока .block_inside1 или .block_inside2  на .block_inside1 или .block_inside2 то отключится -250px. 
 
300 миллисекунд - максимальное время для перемещения по пустому пространству между блоками
	 | 
 
	
 
 Понял спасибо  
А почему когда в это блоке  <div class="block_inside2"><a href="#">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, maiores!</a></div>
Помешена ссылка или два и более блока он уже работает коряво
 
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.block{
    height: 100%;
    background-color: #54CC2C;
    position: relative;
}
.block_inside1{
    cursor: pointer;
    background-color: #CC2ABC;
}
.block_inside2{
    position: relative;
    width: 50px;
    transform:translateY(-250px);
    transition: transform .5s;
    z-index: 2;
    background-color: #e2e2e2;
}
.test{
   width: 50px;
   height: 50px;
   background-color: #2F2FCC;
   left: 50%;
   top: 50%;
   position: absolute;
}
</style>
</head>
<body>
<div class="block">
    <div class="block_inside1">test</div>
    <div class="block_inside2"><a href="#">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, maiores!</a></div>
    <div class="test"></div>
</div>
<script>
var block = document.querySelector(".block");
var block_inside1 = document.querySelector(".block_inside1");
var block_inside2 = document.querySelector(".block_inside2");
function subHover_1() {
    var timer;
    block.onmouseover = subDown;
    block.onmouseout = subUp;
    function subDown(event) {
        if (event.target.matches(".block_inside1, .block_inside2")) {
            clearTimeout(timer);
            block_inside2.style.transform = "translateY(" + "20" + "px)";
        }
    }
    function subUp(event) {
        if (event.target.matches(".block_inside1, .block_inside2")) {
            clearTimeout(timer);
            timer = setTimeout(function() {
                block_inside2.style.transform = "translateY(" + "-250" + "px)";
            }, 300);
        }
    }
}
subHover_1();
</script>
</body>
</html>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Сергей Ракипов, 20.05.2020 в 20:15.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.05.2020, 20:52
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Сергей Ракипов, 
 измените matches на closest и будет вам счастье или добавьте  
	
 
	| 
		
			Сообщение от Сергей Ракипов
			
		
	 | 
 
	| 
		ссылка или два и более блока
	 | 
 
	
 
  в matches  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.05.2020, 21:01
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2010 
					
					
					
						Сообщений: 673
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 рони, 
 Да все как вы и обещали, счастье случилось ) спасибо 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.05.2020, 19:04
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 20.12.2009 
					
					
					
						Сообщений: 1,714
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Сергей Ракипов
			
		
	 | 
 
	| 
		Да все как вы и обещали, счастье случилось ) спасибо
	 | 
 
	
 
  Оно же практически не работает!
 Сергей Ракипов, решение, работающее на всех устройствах, т. е. готовое для production... 
<!doctype html>
<html>
<head>
	<meta charset="utf-8">
	<style>
		.block {
			height: 100%;
			background-color: #54CC2C;
			position: relative;
		}
		.block_inside1 {
			cursor: pointer;
			background-color: #CC2ABC;
		}
		.block_inside2 {
			position: relative;
			width: 50px;
			transform: translateY(-250px);
			transition: transform .5s 300ms;
			z-index: 2;
			background-color: #e2e2e2;
		}
		.block_inside1:hover ~ .block_inside2,
		.block_inside1:focus ~ .block_inside2,
		.block_inside2:hover,
		.block_inside2:focus-within {
			transform: translateY(20px);
		}
	</style>
</head>
<body>
	<div class="block">
		<div class="block_inside1" tabindex="0">test</div>
		<div class="block_inside2">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, maiores!</div>
	</div>
</body>
</html>
И пожалуйста откажитесь от своей вредной идей, что сайты должны работать только при помощи мышки! (И очевидно только на Windows!)  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Malleys, 21.05.2020 в 19:12.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.05.2020, 19:09
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Malleys, 
 а на js сможешь? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |