Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2020, 11:47
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 673

Много блоков
Есть блок, и их будет десятки, и делать для каждого блока функции кончено это перебор. Как сделать что бы не меняя класс одной функцией что бы работали десятки блоков.

blok

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
body{
	font-family: Verdana, Geneva CY, Helvetica, DejaVu Sans, Arial, sans-serif;
	font-size: .8rem;
	line-height: 160%;
}
h3{
	font-family:Georgia, 'Times New Roman', Times, serif;
	font-size: 1.8rem;
	line-height: 0%;
	color: #FCD7BB;
}
.main{
	max-width: 720px;
	margin: 60px auto 0px;
}
.blok{
	position: relative;
	max-width: 640px;
	display: grid;
	grid-template-columns: 240px minmax(120px, 400px);
	grid-template-rows: 60px 120px;
	grid-template-areas: 
	"kartinka_blok zagolovok_blok"
	"kartinka_blok opisanie_blok";
	grid-gap: 0px 20px;
	cursor: pointer;
}
.kartinka_blok{
	grid-area: kartinka_blok;
}
.zagolovok_blok{
	grid-area: zagolovok_blok;
}
.opisanie_blok{
	grid-area: opisanie_blok;
}
.dalee_blok{
	grid-area: dalee_blok;
	position: absolute;
	top: 0px;
	left: 0px;
	width: 100%;
	height: 100%;
	background-color: rgba(255, 255, 255, .6);
	opacity: 0;
	transition: all .4s;
}
.dalee_tekst{
	display: block;
	text-align: center;
	color: #AC5959;
	text-decoration: underline;
	padding: 90px 0px 0px 0px;
	font-size: 2rem;
}

    </style>
</head>
<body>
    <div class="blok">
		<div class="kartinka_blok"><img src="https://rakipov.ru/files/1.jpg" width="100%" alt=""></div>
		<div class="zagolovok_blok"><h3>Полигональный арт</h3></div>
		<div class="opisanie_blok">Сегодня Polygonal арт часто выглядит как стилизация для логотипов, фона и иллюстраций, которые обычно служат в качестве украшений, а не как привлекающий внимание элемент. Но именно здесь он показывает себя во всей красе.</div>
		<div class="dalee_blok"><span class="dalee_tekst">Читать далее</span></div>
	</div>
<script>
"use_strict"

const blok = document.querySelector(".blok");
const daleeBlok = document.querySelector(".dalee_blok");

function navedenie_1(){
    daleeBlok.style.opacity = "1";
}
blok.addEventListener("mouseover", navedenie_1);

function navedenie_2(){
    daleeBlok.style.opacity = "0";
}
blok.addEventListener("mouseout", navedenie_2);
</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 15.06.2020, 11:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

CSS не хватает?
:hover opacity: 1, а по умолчанию 0.
Ответить с цитированием
  #3 (permalink)  
Старый 15.06.2020, 12:15
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 673

laimas,
А как это сделать?
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2020, 12:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

.blok {
    opacity: 0
}

.blok:hover {
    opacity: 1
}


http://htmlbook.ru/css
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2020, 12:59
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 673

Сообщение от laimas Посмотреть сообщение
.blok {
    opacity: 0
}

.blok:hover {
    opacity: 1
}


http://htmlbook.ru/css
Такой вариант не подходит, посмотрите на верстку и как работает, и поймете что так не сработает.

Последний раз редактировалось Сергей Ракипов, 15.06.2020 в 13:08.
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2020, 13:15
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body {
      font-family: Verdana, Geneva CY, Helvetica, DejaVu Sans, Arial, sans-serif;
      font-size: .8rem;
      line-height: 160%;
    }

    h3 {
      font-family: Georgia, 'Times New Roman', Times, serif;
      font-size: 1.8rem;
      line-height: 0%;
      color: #FCD7BB;
    }

    .main {
      max-width: 720px;
      margin: 60px auto 0px;
    }

    .blok {
      position: relative;
      max-width: 640px;
      display: grid;
      grid-template-columns: 240px minmax(120px, 400px);
      grid-template-rows: 60px 120px;
      grid-template-areas:
        "kartinka_blok zagolovok_blok"
        "kartinka_blok opisanie_blok";
      grid-gap: 0px 20px;
      cursor: pointer;
    }

    .kartinka_blok {
      grid-area: kartinka_blok;
    }

    .zagolovok_blok {
      grid-area: zagolovok_blok;
    }

    .opisanie_blok {
      grid-area: opisanie_blok;
    }

    .dalee_blok {
      grid-area: dalee_blok;
      position: absolute;
      top: 0px;
      left: 0px;
      width: 100%;
      height: 100%;
      background-color: rgba(255, 255, 255, .6);
      opacity: 0;
      transition: all .4s;
    }

    .dalee_tekst {
      display: block;
      text-align: center;
      color: #AC5959;
      text-decoration: underline;
      padding: 90px 0px 0px 0px;
      font-size: 2rem;
    }
  </style>
</head>

<body>
  <div class="blok">
    <div class="kartinka_blok"><img src="https://rakipov.ru/files/1.jpg" width="100%" alt=""></div>
    <div class="zagolovok_blok">
      <h3>Полигональный арт</h3>
    </div>
    <div class="opisanie_blok">Сегодня Polygonal арт часто выглядит как стилизация для логотипов, фона и иллюстраций,
      которые обычно служат в качестве украшений, а не как привлекающий внимание элемент. Но именно здесь он показывает
      себя во всей красе.</div>
    <div class="dalee_blok"><span class="dalee_tekst">Читать далее</span></div>
  </div>

  <div class="blok">
    <div class="kartinka_blok"><img src="https://rakipov.ru/files/1.jpg" width="100%" alt=""></div>
    <div class="zagolovok_blok">
      <h3>Полигональный ар2т</h3>
    </div>
    <div class="opisanie_blok">Сегодня Polygonal арт часто выглядит как стилизация для логотипов, фона и иллюстраций,
      которые обычно служат в качестве украшений, а не как привлекающий внимание элемент. Но именно здесь он показывает
      себя во всей красе.</div>
    <div class="dalee_blok"><span class="dalee_tekst">Читать далее</span></div>
  </div>
  <script>
    "use_strict"
    document.querySelectorAll(".blok").forEach(b => {
      b.addEventListener("mouseenter", function () {
        b.querySelector('.dalee_blok').style.opacity = 1
      })
      b.addEventListener("mouseleave", function () {
        b.querySelector('.dalee_blok').style.opacity = 0
      })
    });
  </script>
</body>

</html>


или без js
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body {
      font-family: Verdana, Geneva CY, Helvetica, DejaVu Sans, Arial, sans-serif;
      font-size: .8rem;
      line-height: 160%;
    }

    h3 {
      font-family: Georgia, 'Times New Roman', Times, serif;
      font-size: 1.8rem;
      line-height: 0%;
      color: #FCD7BB;
    }

    .main {
      max-width: 720px;
      margin: 60px auto 0px;
    }

    .blok {
      position: relative;
      max-width: 640px;
      display: grid;
      grid-template-columns: 240px minmax(120px, 400px);
      grid-template-rows: 60px 120px;
      grid-template-areas:
        "kartinka_blok zagolovok_blok"
        "kartinka_blok opisanie_blok";
      grid-gap: 0px 20px;
      cursor: pointer;
    }

    .kartinka_blok {
      grid-area: kartinka_blok;
    }

    .zagolovok_blok {
      grid-area: zagolovok_blok;
    }

    .opisanie_blok {
      grid-area: opisanie_blok;
    }

    .dalee_blok {
      grid-area: dalee_blok;
      position: absolute;
      top: 0px;
      left: 0px;
      width: 100%;
      height: 100%;
      background-color: rgba(255, 255, 255, .6);
      opacity: 0;
      transition: all .4s;
    }

    .dalee_tekst {
      display: block;
      text-align: center;
      color: #AC5959;
      text-decoration: underline;
      padding: 90px 0px 0px 0px;
      font-size: 2rem;
    }
    
    .dalee_blok {
      opacity: 0;
    }

    .blok:hover .dalee_blok {
      opacity: 1;
    }
  </style>
</head>

<body>
  <div class="blok">
    <div class="kartinka_blok"><img src="https://rakipov.ru/files/1.jpg" width="100%" alt=""></div>
    <div class="zagolovok_blok">
      <h3>Полигональный арт</h3>
    </div>
    <div class="opisanie_blok">Сегодня Polygonal арт часто выглядит как стилизация для логотипов, фона и иллюстраций,
      которые обычно служат в качестве украшений, а не как привлекающий внимание элемент. Но именно здесь он показывает
      себя во всей красе.</div>
    <div class="dalee_blok"><span class="dalee_tekst">Читать далее</span></div>
  </div>

  <div class="blok">
    <div class="kartinka_blok"><img src="https://rakipov.ru/files/1.jpg" width="100%" alt=""></div>
    <div class="zagolovok_blok">
      <h3>Полигональный ар2т</h3>
    </div>
    <div class="opisanie_blok">Сегодня Polygonal арт часто выглядит как стилизация для логотипов, фона и иллюстраций,
      которые обычно служат в качестве украшений, а не как привлекающий внимание элемент. Но именно здесь он показывает
      себя во всей красе.</div>
    <div class="dalee_blok"><span class="dalee_tekst">Читать далее</span></div>
  </div>
  <script>
    "use_strict"
    // document.querySelectorAll(".blok").forEach(b => {
    //   b.addEventListener("mouseenter", function () {
    //     b.querySelector('.dalee_blok').style.opacity = 1
    //   })
    //   b.addEventListener("mouseleave", function () {
    //     b.querySelector('.dalee_blok').style.opacity = 0
    //   })
    // });
  </script>
</body>

</html>

Последний раз редактировалось SuperZen, 15.06.2020 в 13:17.
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2020, 13:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Сергей Ракипов
Такой вариант не подходит
А кто мешает указать по селектору нужное

.dalee_blok {
    opacity: 0
}
 
.blok:hover .dalee_blok {
    opacity: 1
}


Ну я же дал ссылку, почитайте о селекторах, что там сложного.
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2020, 16:21
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 673

laimas,
SuperZen,

Спасибо за помощь, очень признателен
Ответить с цитированием
  #9 (permalink)  
Старый 19.06.2020, 07:07
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 673

SuperZen,
А можете объяснить как читается этот код

document.querySelectorAll(".blok").forEach(b => {
      b.addEventListener("mouseenter", function () {
        b.querySelector('.dalee_blok').style.opacity = 1
      })
      b.addEventListener("mouseleave", function () {
        b.querySelector('.dalee_blok').style.opacity = 0
      })
    });
Ответить с цитированием
  #10 (permalink)  
Старый 19.06.2020, 09:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

document.querySelectorAll(".blok") //получить элементы класса blok
    .forEach(b => { //обойти их циклом, здесь b текущий в итерации элемент
        b.addEventListener("mouseenter", function () { //установить для него обработчик события mouseenter
            //в обработчике найти в этом элементе его дочерний элемент с классом dalee_blok
            //и установить значение правила стиля
            b.querySelector('.dalee_blok').style.opacity = 1 
        })


Соответственно b.addEventListener("mouseleave"... для ухода мыши с элемента.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Показывать по 5 блоков Meduzaweb Общие вопросы Javascript 2 29.03.2018 16:07
Как с помощью скрипта высчитать ширину полосы прокрутки? LADYX Элементы интерфейса 35 13.11.2017 12:50
Скрипт карусели блоков rozmakc Работа 3 25.07.2016 21:35
Через ajax отправить много данных из таблицы на сервер Heger jQuery 3 29.08.2012 18:51
Чудеса математики js при padding borovik Элементы интерфейса 6 09.07.2011 22:02