• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak właściwie dodać dwuklik na obraz, aby otworzyć stronę.

Object Storage Arubacloud
+1 głos
369 wizyt
pytanie zadane 13 marca 2023 w JavaScript przez Felczer Nowicjusz (150 p.)

Dzień dobry,

chciałem poprosić o pomoc w nakierowaniu jak rozwiązać mój problem. Chciałbym aby link przekierowujący w obrazie na komórce i tablecie otwierały się poprzez dwuklik, a na komputerze przez jedno kliknięcie. Szukałem w internecie i znalazłem informacje o "The ondblclick Event"

<!DOCTYPE html>
<html>
<body>
<h1>HTML DOM Events</h1>
<h2>The ondblclick Event</h2>

<p ondblclick="myFunction()">Double-click this paragraph to trigger a function.</p>

<p id="demo"></p>

<script>
function myFunction() {
  document.getElementById("demo").innerHTML += "Hello World ";
}
</script>

</body>
</html>

Natomiast po dodaniu komendy ondblclick jest to także na komputerze i komórce. Doczytałem też że należałoby użyć "Touch event". Niestety nie znalazłem tam dwukliku. Wydaje mi się że trzeba to połączyć. Czy mógłby ktoś podpowiedzieć czy myślę w dobrą stronę. Może mała pomoc jak dodać ten 2klik tylko na komórkę tak by po kliknięciu na obraz na komórce wyświetlał się napis tak jak pojawia się na komputerze po najechaniu myszką, a dopiero po następnym kliknięciu otwierała się podstrona, do której przekierowuje link w obrazku?

 

<!DOCTYPE html>
<html>

<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">
  
<style>

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 30px;
  }
  
.container {
  position: relative;
  overflow: hidden;
  border-radius: 25px;
}

.image {
  display: block;
  width: 100%;
  height: auto;
  transition: 0.7s ease;
}

.overlay {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  width: 100%;
  opacity: 0;
  transition: .5s ease;
  background-color: #211794;
    transition: 1.2s ease;
}

.container:hover .overlay {
  opacity: 0.95;
}

.text {
font-family: 'Lato', sans-serif;
  color: white;
  font-size: 30px;
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  text-align: center;
 
}

.container:hover > img.zoom {
  transform: scale(1.1);
  }
  
</style>
</head>
<body>

<div class="grid">
	<a  href="https://picsum.photos/500?random=1">
		<div class="container">
			<img src="https://picsum.photos/500?random=1" alt="Strony www" class="image zoom">
			<div class="overlay">
				<div class="text">Strony www</div>
			</div>
		</div>
	</a>

	<a  href="https://picsum.photos/500?random=2">
		<div class="container">
			<img src="https://picsum.photos/500?random=2" alt="Identyfikacja wizualna" class="image zoom">
			<div class="overlay">
				<div class="text">Identyfikacja wizualna</div>
			</div>
		</div>
	</a>

	<a  href="https://picsum.photos/500?random=3">
		<div class="container">
			<img src="https://picsum.photos/500?random=3" alt="Inne projekty" class="image zoom">
			<div class="overlay">
				<div class="text">Inne projekty</div>
			</div>
		</div>
	</a>

</div>

</body>
</html>

Z góry dziękuję za pomoc.

2 odpowiedzi

+2 głosów
odpowiedź 13 marca 2023 przez Comandeer Guru (600,690 p.)

Tak szczerze, to poprawnym rozwiązaniem tego problemu byłaby po prostu rezygnacja z :hover na urządzeniach mobilnych i np. wyświetlanie tego overlaya pod obrazkiem. To nie wymagałoby robienia takich dziwnych rzeczy. Można łatwo wykryć, czy urządzenie wspiera :hover przy pomocy odpowiedniego media query. Jeśli nie wspiera, to wówczas można zaaplikować alternatywne style dla .overlay.

Niemniej jeśli faktycznie chcesz zrobić dwuklika tylko na urządzeniach mobilnych, to można zastosować to media query, żeby wykryć, że to faktycznie jest urządzenie mobilne (przy pomocy matchMedia()) i wówczas dodać listener dla dblclick (bo zrobienie tego na zdarzeniach dotykowych jest mocno upierdliwe).

komentarz 16 marca 2023 przez Felczer Nowicjusz (150 p.)
Dziękuję za odpowiedź będę próbował. Jakbym gdzieś utknął to napiszę o poradę.
+1 głos
odpowiedź 13 marca 2023 przez VBService Ekspert (252,660 p.)

Proponuje taki zapis

[ on-line ]

      .container:hover .overlay,
      .container:focus .overlay {
        opacity: 0.95;
      }

      .container:hover > img.zoom,
      .container:focus > img.zoom {
        transform: scale(1.1);
      }
      <div class="container">
        <img src="https://picsum.photos/500?random=1" alt="Strony www" class="image zoom">
        <div class="overlay">
          <a href="https://picsum.photos/500?random=1">
            <div class="text">Strony www</div>
          </a>  
        </div>
      </div>

 

komentarz 16 marca 2023 przez Felczer Nowicjusz (150 p.)
Dziękuję za odpowiedź. Zauważyłem, że w pańskim kodzie jak się kliknie na obrazek w napisy to albo działa dwuklik, a czasem otwiera po jednym kliknięciu. Natomiast jak kliknie się w obrazek ale nie w napis na obrazku to działa jak trzeba. Z czego może to wynikać i jak to poprawić? Może trzeba dać opóźnienie, bo nieświadomie klikam  razy?

Czy ktoś ma jakieś pomysły?

Podobne pytania

0 głosów
1 odpowiedź 339 wizyt
pytanie zadane 29 lipca 2021 w HTML i CSS przez psyku Obywatel (1,380 p.)
0 głosów
0 odpowiedzi 272 wizyt

92,536 zapytań

141,377 odpowiedzi

319,455 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...