Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Prekrytie dvoch "div" nad sebou + skrytie a zobrazovanie div-u s s inymi elementami po najazde mysou

Aktivity
Avatar
Diana
Člen
Avatar
Diana:20.1.2023 18:55

Ahojte, pracujem na tomto este nezverejnenom linku , kde mam vytvorenie boxy s miniaturami obrazkov aut a pomocou galerie yoxview sa zobrazuju maximalizovane obrazky po kliknuti na nahlady (vratane slideshow). Galeria nehra teraz ulohu.

Nad funkcnymi miniaturami som vytvorila samostatny box s miniaturou, ktory je predmetom riesenia:

Zkusil jsem: Zatial som vyskusala funkcnost odkazov umiestnenych v kontajneri-na-odkazy, ktory ma pevnu sirku na 6 farebnych boxov s odkazmi a ktory sa pri plneni dalsimi boxami posuva len vertikalne, pricom docasne som nechala odkazy otvarat v novom liste prehliadaca a neskor ich chcem priradit ku skriptu s galeriou, to je ale teraz vedlajsie.

CSS:

.kontajner-na-miniaturu {
        display: inline-flex;
        justify-content: center;
        align-items: center;
        width: 84px;
        height: 84px;
        margin-bottom: 5px; /* vonkajsie odsadenie nadol medzi kontajnermi */
        padding: 0; /* vnutorne odsadenie od obrazka */
        border: 2px solid #00B9B9;
}
.kontajner-na-miniaturu:hover {
        border: 2px solid #F8CE00;
        cursor: pointer;
}
.kontajner-na-obrazok {
        display: inline-block;
        width: 80px;
        height: 80px;
}
.kontajner-na-odkazy {
        display: inline-block;
        /* text-align: center; */
        width: 140px;
        margin: 0 0 0 -36px; /* odsadenie kontajnera vlavo o 36px, nakolko sa necentruje na stred - kontajner je mozne posunut nahor, aby bolo vidiet prekrytie - napr. margin: -50px 0 0 -36px;*/
        border: 2px solid #F8CE00;
        border-radius: 4px 4px 12px 12px;
        background-color: #000;
        padding: 4px 3px 3px 5px; /* odsadenie kontajnera od obrazkov s farbami */
        /* visibility: hidden; */
}
.box-s-odkazom {
        display: inline-block;
        width: 15px;
        height: 15px;
        border: 2px solid #F8CE00;
        /* vertical-align: middle; */
        line-height: 15px; /* kvoli vertikalnemu zarovnaniu obrazka gif v boxe s farbou */
        white-space: nowrap;
        background-image: url(../img/gif.gif);
}
.box-s-odkazom:hover {
        border: 2px solid #000;
}

HTML:

<div class="kontajner-na-miniaturu">
        <div class="kontajner-na-obrazok"><img src="../img/auta/01-1.jpg" alt="" title="">
                <div class="kontajner-na-odkazy">
                                <a class="box-s-odkazom" style="background-color: #F9F9F9" href="../img/auta/01-2.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #0564D7" href="../img/auta/01-3.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #026E23" href="../img/auta/01-4.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #FEF18F" href="../img/auta/01-5.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #983253" href="../img/auta/01-6.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #E70DDD" href="../img/auta/01-7.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #8E19B1" href="../img/auta/01-8.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                </div>
        </div>
</div>

Chci docílit: 1) Chcela by som nechat skontrolovat spravnost kodu, kde som pri tvorbe kontajnerov pouzila flex:

  • projekt pozostava z 3 kontajnerov, pricom kontajner-na-odkazy prekryva kontajner-na-obrazok
  1. Potrebujem pomocou CSS alebo JS skryvat a zobrazovat kontajner-na-odkazy po najazde mysou na hlavny kontajner, t.j. kontajner-na-miniaturu.
 
Odpovědět
20.1.2023 18:55
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:20.1.2023 19:01

Zabudla som uviest, ze pre kazdy box s farbou pouzivam obrazok s transparentnym gifom, i ked by postacoval len div s farbou pozadia, pod ktory umiestnujem len farbu priamo v kode HTML. Dovod je ten, ze vopred premyslam na zakomponovanie riesenia do skriptu s galeriou yoxview, ktora je vidiet nizsie na stranke a ktora si vyzaduje nahladovy obrazok a maximalizovany obrazok. Pri ponechani prazdnej hodnoty pre nahladovy obrazok proste skript strati funkcnost. Nie je to chyba, tak je skript vytvoreny.

 
Nahoru Odpovědět
20.1.2023 19:01
Avatar
Diana
Člen
Avatar
Diana:20.1.2023 19:08

Oprava: * Zabudla som uviest, ze pre kazdy box-s-odkazom pouzivam obrazok s transparentnym gif-om, i ked by postacovalo nastylovat len farbu pozadia v CSS alebo v HTML. Dovod je ten, ze vopred premyslam na zakomponovanie riesenia do skriptu s galeriou yoxview, ktora je vidiet nizsie na stranke a ktora si pre funkcnost vyzaduje nahladovy obrazok a maximalizovany obrazok (alebo url adresy na dane obrazky). Pri ponechani prazdnej hodnoty pre nahladovy obrazok proste skript strati funkcnost. Nie je to chyba, tak je skript vytvoreny.

 
Nahoru Odpovědět
20.1.2023 19:08
Avatar
Diana
Člen
Avatar
Diana:21.1.2023 13:33

Skusila som ine riesenie, tu mi elementy sedia presne, ako maju, len potrebujem doriesit to skryvanie a zobrazovanie, kontajneru-s-odkazmi.

CSS:

.kontajner-na-miniaturu2 {
        position: relative; /* pridane pre pozicovanie elementov vnutri s absolutnou poziciou */
        display: inline-flex;
        justify-content: center;
        /* align-items: center; */ /* toto vertikalne zarovnanie vsetkych vnutornych elementov som vynechala, aby sa mi kontajner-na-odkazy nezarovnal automaticky vertikalne */
        width: 84px;
        height: 84px;
        margin-bottom: 5px; /* vonkajsie odsadenie nadol medzi kontajnermi */
        padding: 0; /* vnutorne odsadenie od obrazka, ak by som ho chcela zmenit */
        border: 2px solid #00B9B9;
}
.kontajner-na-miniaturu2:hover {
        border: 2px solid #F8CE00;
        cursor: pointer;
}
.kontajner-na-obrazok2 {
        position: absolute; /* pridane pre umiestnenie elementu s absolutnou poziciou */
        display: inline-block;
        align-self: center; /* pridane pre vertikalne zarovnanie sameho seba, nakolko v kontajneri-na-miniaturu som tuto vlastnost zakazala */
        width: 80px;
        height: 80px;
}
.kontajner-na-odkazy2 {
        position: absolute; /* pridane pre umiestnenie elementu s absolutnou poziciou */
        display: inline-block;
        width: 140px;
        top: 86px; /* pridane pre umiestnenie tohto kontajnera pod kontajner-na-miniaturu - moznost prekryt ho v ktorejkolvek casti */
        border: 2px solid #F8CE00;
        border-radius: 4px 4px 12px 12px;
        background-color: #000;
        padding: 5px; /* odsadenie boxov s odkazmi od tohoto kontajnera */
        /* visibility: hidden; */ /* neskorsie vyuzitie pre skrytie kontajnera */
        z-index: 1; /* pridanie pre urcenie poradia elementu navrch */

}
.box-s-odkazom2 {
        display: inline-block;
        width: 15px;
        height: 15px;
        border: 2px solid #F8CE00;
        line-height: 15px; /* kvoli vertikalnemu zarovnaniu obrazka gif v boxe s farbou */
        /* white-space: nowrap; */
        background-image: url(../img/gif.gif);
}
.box-s-odkazom2:hover {
        border: 2px solid #000;
}

HTML:

<div class="kontajner-na-miniaturu2">
        <div class="kontajner-na-obrazok2"><img src="../img/auta/01-1.jpg" alt="" title=""></div>
                <div class="kontajner-na-odkazy2">
                        <a class="box-s-odkazom2" style="background-color: #F9F9F9" href="../img/auta/01-2.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                        <a class="box-s-odkazom2" style="background-color: #0564D7" href="../img/auta/01-3.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                        <a class="box-s-odkazom2" style="background-color: #026E23" href="../img/auta/01-4.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                        <a class="box-s-odkazom2" style="background-color: #FEF18F" href="../img/auta/01-5.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                        <a class="box-s-odkazom2" style="background-color: #983253" href="../img/auta/01-6.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                        <a class="box-s-odkazom2" style="background-color: #E70DDD" href="../img/auta/01-7.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                        <a class="box-s-odkazom2" style="background-color: #8E19B1" href="../img/auta/01-8.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                </div>
</div>
 
Nahoru Odpovědět
21.1.2023 13:33
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23.1.2023 8:26

Ten kod, to je dost strasidelne. A nejsem si jisty, ceho chces docilit. Proc to delat jako takhle slozite. Ja jsem spis stara skola a umel bych to starymi zpusoby, ne flex, ne grid. Zkusim to nejak prepsat a pak se zeptam :) Ale, treba napise i nekdo jiny...

 
Nahoru Odpovědět
23.1.2023 8:26
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23.1.2023 9:48

Mno, ja to predelal takhle nejak. Prijde mi, ze tam davat prilis textu navic. Ja jsem zvykly ogranizovat si css stromove, minimalne pres hlavni class cele skupiny "gal" jako galerie. Ale to si pojmenuj, jak chces.

<base href="file:///C:/pp/" >
<style>
   /*https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container*/
   .gal {text-align: center;
   display:flex;
   justify-content: center;
   align-content: space-between;
   align-items: center;
   padding:5px;
   gap: 5px;
   }
   .gal .item {
   width: 84px;
   height: 84px;
   padding: 0; /* vnutorne odsadenie od obrazka, ak by som ho chcela zmenit */
   margin-bottom: 5px; /* vonkajsie odsadenie nadol medzi kontajnermi */
   border: 2px solid #00B9B9;
   }
   .gal .item:hover {
   border: 2px solid #F8CE00;
   cursor: pointer;
   }
   .gal .item .item-nav {display:none;}
   .gal .item:hover .item-nav {display:inline-block;}
   .gal .item-image {
   display:inline-block;
   }
   .gal .item-image img{
   width: 80px;
   height: 80px;
   vertical-align:middle;
   }
   .gal .item-nav {
   display: flex;
   align-content: space-between;
   align-items: center;
   padding:5px;
   gap: 5px;
   width: 160px;
   margin-left: -46px;
   z-index: 1; /* pridanie pre urcenie poradia elementu navrch */
   border: 2px solid #F8CE00;
   border-radius: 4px 4px 12px 12px;
   background-color: #000;
   }
   .gal .item-nav a {
   display:inline-block;
   border: 2px solid #F8CE00;
   }
   .gal .item-nav a img {
   width: 15px;
   height: 15px;
   vertical-align:middle;
   border:0 solid;
   }
   .gal .item-nav a:nth-child(0) {background-color: #F9F9F9;}
   .gal .item-nav a:nth-child(1) {background-color: #0564D7;}
   .gal .item-nav a:nth-child(2) {background-color: #026E23;}
   .gal .item-nav a:nth-child(3) {background-color: #FEF18F;}
   .gal .item-nav a:nth-child(4) {background-color: #983253;}
   .gal .item-nav a:nth-child(5) {background-color: #E70DDD;}
   .gal .item-nav a:nth-child(6) {background-color: #8E19B1;}
   .gal .item-nav a:hover {
   border: 2px solid #000;
   }
</style>
<img src="css-diana-auta-01-1.jpg" alt="" title="" style="border:1px solid #000;">
<div class="gal">
   <div class="item">
      <div class="item-image"><img src="css-diana-auta-01-1.jpg" alt="" title=""></div>
      <div class="item-nav">
         <a href="https://divozienky.epizy.com/img/auta/01-2.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-3.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-4.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-5.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-6.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-7.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-8.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
      </div>
   </div>
   <div class="item">
      <div class="item-image"><img src="css-diana-auta-01-1.jpg" alt="" title=""></div>
      <div class="item-nav">
         <a href="https://divozienky.epizy.com/img/auta/01-2.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-3.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-4.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-5.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-6.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-7.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
         <a href="https://divozienky.epizy.com/img/auta/01-8.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
      </div>
   </div>
</div>
 
Nahoru Odpovědět
23.1.2023 9:48
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23.1.2023 9:50

Kazdopadne, tahle cesta, pres css, pokud budou vsechny barvicky vzdy stejne a pocet take, to je cesta ke zkaze. Jakoze, zbytecne moc textu navic :) Cela ta cast s naviganici, za tech stejnych podminek, by mohla byt resena pres js.

 
Nahoru Odpovědět
23.1.2023 9:50
Avatar
Diana
Člen
Avatar
Odpovídá na Peter Mlich
Diana:23.1.2023 10:19

u flex nemusim riesit obtekanie kontajnerov, zalamuje mi ich automaticky s rozostupom, riesi v pohode horizontalne aj vertikalne zarovnanie elementov vnutri, ako aj samych seba voci nadradenemu elementu, neviem, no .. dalo by sa to aj pomocou grid, aj klasicky, tazko povedat, co je najefektivnejsie .. dalsia moznost je to riesit zoznamom, ale kazdopadne budem rada za jednoduche ra efektivne riesenie

skusala som to skryvanie a zobrazovanie kontajnera-na-odkazy, nasla som urcite riesenia pomocou JS, ake musim vytvarat vela instancii s ID pre kazdy kontajner, pri malom pocte obrazkov by to nevadilo, ale ak by som chcela pouzit napr. 100, tak to uz je vela zbytocneho kodu - skor by som potrebovala pomocou JS vytvorit funkciu, ktora by prechadzala celym poľom obrazkov s metodou getElementsBy­ClassName

toto mi napr. funguje:

let ukazAuto1 = () => {
        const ele = document.getElementById('auto1');
        ele.style.visibility = 'visible';
}
let skryAuto1 = () => {
        const ele = document.getElementById('auto1');
        ele.style.visibility = 'hidden';
}

ale musim tu vytvorit vzdy specificke ID:

<div class="kontajner-s-miniaturou" onmouseover="ukazAuto1()" onmouseout="skryAuto1()">
        <div class="kontajner-s-obrazkom"><img src="../img/auta/06-1.jpg" alt="" title="Audi R8"></div>
                <div id="auto1" class="kontajner-s-odkazmi">
                        <a class="box-s-odkazom" style="background-color: #F9F9F9" href="../img/auta/06-2.jpg"><img src="../img/gif.gif" alt="" title="Audi R8"></a>
                </div>
        </div>
</div>

alebo dalsie priklady:

https://linuxhint.com/…-javascript/
https://bobbyhadz.com/…div-on-hover

Ako som pisala, nemozem najst ten spravny priklad, z ktoreho by som cerpala, pretoze JS neovladam, len ciastocne niektore veci.

 
Nahoru Odpovědět
23.1.2023 10:19
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:23.1.2023 10:21

pozriem si to tvoje riesenie, lebo si to stihol skor, ked som mala rozpisanu svoju odpoved :-)

 
Nahoru Odpovědět
23.1.2023 10:21
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:23.1.2023 13:05

je to elegantne riesenie, vsetko dava logicku postupnost v nadväzovani elementov, len potrebujem dotiahnut nejake nezrovnalosti, ktore som opoznamkovala v CSS:

.gal {
text-align: center;
display:flex; /* tu by malo byt asi display:inline-flex; aby nedochadzalo k pohybu elementov v kontajneri a aby sa kontajneri zalamovali automaticky v obsahu a nezachadzali za jeho okraj */
justify-content: center;
align-items: center;
align-content: space-between;
padding:5px; /* vynechat uplne, lebo pri pouziti inline-flex spravi dalsi odstup */
gap: 5px; /* rozostupy medzi kontajnermi */
}
.gal .item {
width: 84px;
height: 84px;
padding: 0; /* vnutorne odsadenie od obrazka, ak by som ho chcela zmenit */
margin-bottom: 5px; /* vonkajsie odsadenie nadol medzi kontajnermi */
border: 2px solid #00B9B9;
}
.gal .item:hover {
border: 2px solid #F8CE00;
cursor: pointer;
}
.gal .item .item-nav {display:none;}
.gal .item:hover .item-nav {display:inline-block;}
.gal .item-image {display:inline-block;}
.gal .item-image img{
width: 80px;
height: 80px;
vertical-align:middle;
}
.gal .item-nav {
display: flex; /* tu pravdepodobne tiez display:inline-flex; */
align-content: space-between;
align-items: center; /* tato vlastnost mi pri zmene napr. na align-items: left; nevykona nic */
padding:5px; /* vnutorne odsadzuje odkazy od kontajnera */
gap: 5px; /* tato vlastnost mi pri zmene nevykona nic */
width: 130px;
margin-left: -46px; /* tu chcem dosiahnut, aby som nemusela odsadit, ale aby sa cely kontajner vystredil vzdy na stred */
z-index: 1; /* pridanie pre urcenie poradia elementu navrch */
border: 2px solid #F8CE00;
border-radius: 4px 4px 12px 12px;
background-color: #000;
}
.gal .item-nav a {
display:inline-block;
border: 1px solid #F8CE00;
}
.gal .item-nav a img {
/* sirka a vyska asi mali byt urcene uz v ".gal .item-nav a" pretoze vznikaju obdlzniky a nie stvorce */
width: 15px;
height: 15px;
vertical-align:middle;
border:0 solid;
}
.gal .item-nav a:nth-child(0) {background-color: #F9F9F9;}
.gal .item-nav a:nth-child(1) {background-color: #0564D7;}
.gal .item-nav a:nth-child(2) {background-color: #026E23;}
.gal .item-nav a:nth-child(3) {background-color: #FEF18F;}
.gal .item-nav a:nth-child(4) {background-color: #983253;}
.gal .item-nav a:nth-child(5) {background-color: #E70DDD;}
.gal .item-nav a:nth-child(6) {background-color: #8E19B1;}
.gal .item-nav a:hover {
border: 1px solid #000;
}

HTML:

<div class="gal">
        <div class="item">
                <div class="item-image"><img src="../img/auta/01-1.jpg" alt="" title="Aston Martin Vantage"></div>
                        <div class="item-nav">
                                <a href="https://divozienky.epizy.com/img/auta/01-2.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-3.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-4.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-5.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-6.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-7.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-8.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                        </div>
        </div>
        <div class="item">
                <div class="item-image"><img src="../img/auta/01-1.jpg" alt="" title="Aston Martin Vantage"></div>
                        <div class="item-nav">
                                <a href="https://divozienky.epizy.com/img/auta/01-2.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-3.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-4.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-5.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-6.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-7.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                                <a href="https://divozienky.epizy.com/img/auta/01-8.jpg" target="_blank"><img src="../img/gif.gif" alt="" title="Aston Martin Vantage"></a>
                        </div>
        </div>
</div>

Ide o to, ze jednotlive <div class="item"> sa pri dosiahnuti konca sirky obsahu nezalamuju, ale pretekaju za obsah stranky, pricom pri prechadzani mysou sa hybu (v poznamkach je uvedene preco asi). Nahrala som to na web s tym, ze prvy cely horny rad je kontajner gal s viacerymi polozkami a pod tym je dalsi kontajner gal len s dvomi polozkami, cize pri tomto pocte nedochadza k pohybu, pri väcsom ano.

Test1 (potreba mazat cache v prehliadaci)

 
Nahoru Odpovědět
23.1.2023 13:05
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:23.1.2023 13:12

pri tomto som este zabudla, ze vkladane obrazky do <div class="item-image"> nie su vodorovne a zvisle na stred, ale zvisle k hornemu okraju, cize tam nefunguje vlatnost vertical-align:middle;

 
Nahoru Odpovědět
23.1.2023 13:12
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:23.1.2023 13:32

v .gal .item vynechat margin-bottom: 5px; /* vonkajsie odsadenie nadol medzi kontajnermi */ zatial uplne, aby bolo vidiet, ako sa budu tieto kontajnery chovat pri väcsom pocte a zalomeni po dosiahnuti sirky obsahu stranky

 
Nahoru Odpovědět
23.1.2023 13:32
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23.1.2023 15:17

Ok, sak si to uprav, jak potrebujes. Se mi to tve resen nezdalo, tak jsem vychazel z flexu, viz ta stranka. To mi davalo vetsi smysl.
To unikani mimo obrazovku je asi zpusobeno tim zapornym marginem. To asi fakt bude treba resit pres to position nebo nejak, co ti funguje. Ja bych ti to napsal klidne tim starym spusobem, ale, to bys zas nechapala, proc je tam, co tam je :) A tim tvym to neumim :)

 
Nahoru Odpovědět
23.1.2023 15:17
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23.1.2023 15:42

a)

<script>
let ukazAuto1 = (id) => { //id
        const ele = document.getElementById(id); //id
        ele.style.visibility = 'visible';
}
let skryAuto1 = (id) => { //id
        const ele = document.getElementById(id); //id
        ele.style.visibility = 'hidden';
}
</script>

<div class="kontajner-s-miniaturou" onmouseover="ukazAuto1('auto1')" onmouseout="skryAuto1('auto1')">
...

b)

<style>.closed {visibility: hidden;}</style>

<script>
let ukazAuto1 = () => {
        const ele = document.getElementByClassName('kontajner-s-odkazmi');
        ele.classList.add("opened");
}
let skryAuto1 = () => {
        const ele = document.getElementById('kontajner-s-odkazmi');
        ele.classList.remove("opened");
}
</script>

<div class="kontajner-s-miniaturou" onmouseover="ukazAuto1()" onmouseout="skryAuto1()">

c)

let skryAuto1 = (elem_div) => {
        const ele = document.getElementById(elem_div.title);
        ele.style.visibility = 'hidden';
}
</script>

<div class="kontajner-s-miniaturou" onmouseover="ukazAuto1(this)" onmouseout="skryAuto1(this)" title='auto1'>

Mno, podstatne je, navrhnout to tak, aby se co nejvic veci opakovalo, aby tam bylo co nejmene textu, aby se stranka i dobre zipovala pri posilani uzivateli a aby ses v tom vyznala. A to prave resi ten bootstrap, celkem inteligentne pojmenovava class. Mne se treba zalibilo pouzivani item.

<div class="galerie"> <div class="item"></div><div class="item"></div><div class="item"></div> </div>
<div class="articles"> <div class="item"></div><div class="item"></div><div class="item"></div> </div>
<div class="navigation"> <div class="item"></div><div class="item"></div><div class="item"></div> </div>

A kdyz to prave pak definujes i v css pres tu hlavni skupinu, tak mi to prijde krasne prehledne, vim, co k cemu patri.

.galerie .item {}
.articles .item {}
.navigation .item {}

Sice se obe class jmenuji item, ale kazda patri pod jinou nadrazenou skupinu. Zapis je sice trochu ukecanejsi, ale, zas se mi nemuze stat, ze bych menil jiny item, kdyz nezopomenu pridat to slovo galerie

 
Nahoru Odpovědět
23.1.2023 15:42
Avatar
Diana
Člen
Avatar
Odpovídá na Peter Mlich
Diana:23.1.2023 15:43

co nechapem, to si najdem a nasledne pochopim, aj tvoju strukturu som musela najprv skusit, aby som vedela, ako funguje :-) skusim to upravit teda, uvidim, ci mi tam nieco nebude robit problem

 
Nahoru Odpovědět
23.1.2023 15:43
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:23.1.2023 17:05

vyskusala som tie moznosti JS a), b) c) - rozumiem tomu, ale funguje to prakticky stale len na principe, ze kazdy kontajner s odkazmi musi byt specifikovany

existuje aj moznost funkcie, ktora by prechadzala celym poľom kontajnerov so selektorom class="kontajner-s-odkazmi" a tieto skryvala a zobrazovala podla potreby ?

alebo aspon

ako je mozne do jednej funkcie zapisat vsetky ID pre zobrazenie a vsetky pre skryvanie nejakeho elementu ? myslim tym, ze mam napr. 50 unikatnych ID pre kontajnery a v casti funkcie, ktora ich ma zobrazit ich zapisem pod seba ako zoznam a v casti, ktora ich ma skryt, tiez - aby som nemusela stale vypisovat vsetko po jednej funkcii do externeho JS suboru ?

 
Nahoru Odpovědět
23.1.2023 17:05
Avatar
Diana
Člen
Avatar
Diana:23.1.2023 17:08

s tym bootstrap-om mi davas cervika do hlavy, nieco si urcite nastudujem :-)

 
Nahoru Odpovědět
23.1.2023 17:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24.1.2023 8:10

Jo, takhle to myslis. No, to samozrejme muzes udelat taky. Nebo vypsat cely html, jak uz jsem psal driv.
google = js add event by class name
Mohlo by to byt nejak takto

<style>.closed {visibility: hidden;}</style>

<script>
let ukazAuto1 = () => {
        const ele = document.getElementByClassName('kontajner-s-odkazmi')[0]; // tady mela byt jeste 0
        ele.classList.add("opened");
}
let skryAuto1 = () => {
        const ele = document.getElementByClassName('kontajner-s-odkazmi')[0]; // ups, tady melo byt tez getElementByClassName, a navic jeste 0, protoze je to pole, tak prvni element
        ele.classList.remove("opened");
}

const divs = document.querySelectorAll('.kontajner-s-miniaturou');

divs.forEach(el => {
  el.addEventListener('mouseover', event => ukazAuto1;
  el.addEventListener('mouseout', event => skryAuto1;
}));

</script>

A s tim pridanim html by to mohlo byt nejak takto

let ukazAuto1 = () => {
        var d = document.createElement("div");
        d.className='kontajner-s-odkazmi';
        d.innerHtml = `
                                <a class="box-s-odkazom" style="background-color: #F9F9F9" href="../img/auta/01-2.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #0564D7" href="../img/auta/01-3.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #026E23" href="../img/auta/01-4.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #FEF18F" href="../img/auta/01-5.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #983253" href="../img/auta/01-6.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #E70DDD" href="../img/auta/01-7.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
                                <a class="box-s-odkazom" style="background-color: #8E19B1" href="../img/auta/01-8.png" target="_blank"><img src="../img/gif.gif" alt="" title=""></a>
`;
        this.appendChild(d);

}
let skryAuto1 = () => {
        const ele = this.getElementByClassName('kontajner-s-odkazmi');
        if (ele) ele.remove();
}
 
Nahoru Odpovědět
24.1.2023 8:10
Avatar
Diana
Člen
Avatar
Odpovídá na Peter Mlich
Diana:24.1.2023 9:36

takto som to nemyslela, takze uvediem presny priklad, mam externy subor auta.js a napr. budem definovat vsetky auta podla ID, ako si mi to uz napisal v priklade, ktory funguje:

let ukazAuto1 = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'visible';
}
let skryAuto1 = (id) => {
        const ele = document.getElementById(id); //id
        ele.style.visibility = 'hidden';
}

let ukazAuto2 = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'visible';
}

let skryAuto2 = (id) => {
        const ele = document.getElementById(id); //id
        ele.style.visibility = 'hidden';
}

let ukazAuto3 = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'visible';
}
let skryAuto3 = (id) => {
        const ele = document.getElementById(id); //id
        ele.style.visibility = 'hidden';
}

atd. az napr. po 50 aut

no a teraz by som chcela nieco take ako:

let ukazAuta = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'visible';

... tu vnutri funkcie by bol nadefinovany cely zoznam aut s ID, kde sa zobrazia kontajnery s odkazmi

}

let skryAuta = (id) => {
        const ele = document.getElementById(id); //id
        ele.style.visibility = 'hidden';

... tu vnutri funkcie by bol nadefinovany cely zoznam aut s ID, kde sa skryju kontajnery s odkazmi

}

prakticky chcem dosiahnut to, aby som nekopirovala dokola celky oboch funkcii, zaujima ma proste, ci to tak ide spravit, ak nie, vymyslat nebudem

cize v HTML by som to ponechala tak ako je:

<div class="kontajner-s-miniaturou" onmouseover="ukazAuto1('auto1')" onmouseout="skryAuto1('auto1')">
        <div class="kontajner-s-obrazkom"><img src="../img/auta/01-1.jpg" alt="" title="Aston Martin Vantage"></div>
                <div id="auto1" class="kontajner-s-odkazmi">
                        <div class="yoxview">
                                <a class="box-s-odkazom" style="background-color: #F9F9F9" href="../img/auta/01-2.jpg"><img src="" alt="" title="Aston Martin Vantage1"></a>
                                <a class="box-s-odkazom" style="background-color: #0564D7" href="../img/auta/01-3.jpg"><img src="" alt="" title="Aston Martin Vantage2"></a>
                                <a class="box-s-odkazom" style="background-color: #026E23" href="../img/auta/01-4.jpg"><img src="" alt="" title="Aston Martin Vantage3"></a>
                                <a class="box-s-odkazom" style="background-color: #FEF18F" href="../img/auta/01-5.jpg"><img src="" alt="" title="Aston Martin Vantage4"></a>
                                <a class="box-s-odkazom" style="background-color: #983253" href="../img/auta/01-6.jpg"><img src="" alt="" title="Aston Martin Vantage5"></a>
                                <a class="box-s-odkazom" style="background-color: #E70DDD" href="../img/auta/01-7.jpg"><img src="" alt="" title="Aston Martin Vantage6"></a>
                                <a class="box-s-odkazom" style="background-color: #8E19B1" href="../img/auta/01-8.jpg"><img src="" alt="" title="Aston Martin Vantage7"></a>
                        </div>
                </div>
</div>

<div class="kontajner-s-miniaturou" onmouseover="ukazAuto2('auto2')" onmouseout="skryAuto2('auto2')">
        <div class="kontajner-s-obrazkom"><img src="../img/auta/01-1.jpg" alt="" title="Aston Martin Vantage"></div>
                <div id="auto2" class="kontajner-s-odkazmi">
                        <div class="yoxview">
                                <a class="box-s-odkazom" style="background-color: #F9F9F9" href="../img/auta/01-2.jpg"><img src="" alt="" title="Aston Martin Vantage1"></a>
                                <a class="box-s-odkazom" style="background-color: #0564D7" href="../img/auta/01-3.jpg"><img src="" alt="" title="Aston Martin Vantage2"></a>
                                <a class="box-s-odkazom" style="background-color: #026E23" href="../img/auta/01-4.jpg"><img src="" alt="" title="Aston Martin Vantage3"></a>
                                <a class="box-s-odkazom" style="background-color: #FEF18F" href="../img/auta/01-5.jpg"><img src="" alt="" title="Aston Martin Vantage4"></a>
                                <a class="box-s-odkazom" style="background-color: #983253" href="../img/auta/01-6.jpg"><img src="" alt="" title="Aston Martin Vantage5"></a>
                                <a class="box-s-odkazom" style="background-color: #E70DDD" href="../img/auta/01-7.jpg"><img src="" alt="" title="Aston Martin Vantage6"></a>
                                <a class="box-s-odkazom" style="background-color: #8E19B1" href="../img/auta/01-8.jpg"><img src="" alt="" title="Aston Martin Vantage7"></a>
                        </div>
                </div>
</div>
 
Nahoru Odpovědět
24.1.2023 9:36
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:24.1.2023 9:45

a co sa tyka tvojho CSS .gal, tak je to super ako logicky celok, lebo tam uz nie je nutnost pouzivat JS, len musim este vyriesit koliziu v prehliadaci mozilla firefox, ktory zobrazuje okraj, ak nie je definovany obrazok pre link (odkaz), ale to je uz myslim malickost, potom to sem dam ako vysledok

 
Nahoru Odpovědět
24.1.2023 9:45
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Diana
Peter Mlich:24.1.2023 10:56

Eee? Proc?

<script>
let ukazAuto1 = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'visible';
}
let skryAuto1 = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'hidden';
}

let ukazAuto2 = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'visible';
}

let skryAuto2 = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'hidden';
}
</script>

Proc definujes 2 funkce, ktere maji uplne stejny kod a delaji totez a davas jim jiny nazev?
Proc definujes 2 funkce, ktere maji uplne stejny kod a delaji totez a nepouzijes prirazeni?

<script>
let ukazAuto1 = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'visible';
}
let skryAuto1 = (id) => {
        const ele = document.getElementById(id);
        ele.style.visibility = 'hidden';
}

// jakoze, kdyz ty funkce maji uplne stejny kod a chces mit 2 ruzne nazvy, muzes to napsat takto
// ale, ve tvem pripade ti staci 1 funkce na vsechno, kdyz ji predavas z venku string s nazvem id-elementu do promene id
let ukazAuto2 = ukazAuto1;
let skryAuto2 = skryAuto1;
</script>

--

<div class="kontajner-s-miniaturou" onmouseover="ukazAuto1('auto1')" onmouseout="skryAuto1('auto1')">
<div class="kontajner-s-miniaturou" onmouseover="ukazAuto1('auto2')" onmouseout="skryAuto1('auto2')">
Editováno 24.1.2023 10:57
 
Nahoru Odpovědět
24.1.2023 10:56
Avatar
Diana
Člen
Avatar
Odpovídá na Peter Mlich
Diana:24.1.2023 11:27

no a to som nevedela, pretoze JS neovladam, viem si veci upravit, ale spravne sama definovat nie, dakujem

 
Nahoru Odpovědět
24.1.2023 11:27
Avatar
Diana
Člen
Avatar
Odpovídá na Peter Mlich
Diana:24.1.2023 12:06

Funguje to pekne, takze to povazujem za vyriesene a dakujem, uz len dorobim tvoje CSS a skusim to bez JS.

Stranka s JS: Test JS

 
Nahoru Odpovědět
24.1.2023 12:06
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24.1.2023 12:55

Takhle nejak bych to videl. Ale nechce se mi zjistovat, proc to jako mizi, kdyz se prida ta navigace pres js.

<base href="file:///C:/pp/" >

<style>
.gal {text-align: center;
display:flex;
justify-content: center;
align-content: space-between;
padding:5px;
gap: 5px;
}

.gal .item {
display:inline-block;
width:80px;
height:80px;
        margin-bottom: 5px; /* vonkajsie odsadenie nadol medzi kontajnermi */

        border: 2px solid #00B9B9;
}


.gal .item:hover {
        border: 2px solid #F8CE00;
        cursor: pointer;
}
.gal .item .item-nav {display:none;}
.gal .item:hover .item-nav {display:inline-block;}


.gal .item-image {
}

.gal .item-image img{
        width: 80px;
        height: 80px;
}

.gal .item-nav {

display: flex;
align-content: space-between;
align-items: center;
padding:5px;
gap: 5px;

width: 160px;
margin-left: -46px;
position:relative;

        z-index: 1; /* pridanie pre urcenie poradia elementu navrch */

        border: 2px solid #F8CE00;
        border-radius: 4px 4px 12px 12px;
        background-color: #000;

}
.gal .item-nav a {
        border: 2px solid #F8CE00;
        }

.gal .item-nav a img {
        width: 15px;
        height: 15px;
        vertical-align:middle;
border:0 solid;
}

.gal .item-nav a:nth-child(0) {background-color: #F9F9F9;}
.gal .item-nav a:nth-child(1) {background-color: #0564D7;}
.gal .item-nav a:nth-child(2) {background-color: #026E23;}
.gal .item-nav a:nth-child(3) {background-color: #FEF18F;}
.gal .item-nav a:nth-child(4) {background-color: #983253;}
.gal .item-nav a:nth-child(5) {background-color: #E70DDD;}
.gal .item-nav a:nth-child(6) {background-color: #8E19B1;}

.gal .item-nav a:hover {
        border: 2px solid #000;
}


.closed {visibility: hidden;}
</style>




<div class="gal">

    <div class="item">
        <div class="item-image"><img src="css-diana-auta-01-1.jpg" data-category="auta" data-index="01"></div>
    </div>

    <div class="item">
        <!--div class="item-image"><img src="css-diana-auta-02-1.jpg" data-category="auta" data-index="02"></div-->
        <div class="item-image"><img src="css-diana-auta-01-1.jpg" data-category="auta" data-index="02"></div>
    </div>

</div>


<script>
function openNav() {
        // remove nav
        var ele = this.parentNode.querySelector('.item-nav');
        if (ele) ele.remove();
        // add new nav
        var img = this.querySelector('img'),
            category = img.dataset.category,    // category i index by slo vytahnout z url a nebylo by treba dataset
            index = img.dataset.index,
            colors = 6 + 1,
            str = '',
            i, d;
        for (i=0; i<colors; i++) str += '<a href="../img/' + category + '/' + index + '-' + i + '.png" target="_blank"><img src="../img/gif.gif"></a>' + "\n";
        d = document.createElement("div");
        d.className = 'item-nav opened';
        d.innerHTML = str; // je dobre do innerHTML presunout uz hotovy kod, proto jsem pouzil pomocnou promenou 'str'
        this.parentNode.appendChild(d);
};

function closeNav () {
        // remove nav
        var ele = this.parentNode.querySelector('.item-nav');
        if (ele) ele.remove();
};

// tato cast scriptu se musi spoustet po te, co existuje html tag <div class="item-image">
var itemImage = document.querySelectorAll('.item-image');
itemImage.forEach(el => {
  el.addEventListener('mouseover', openNav, false);
  el.addEventListener('mouseout', closeNav, false);
});
</script>
 
Nahoru Odpovědět
24.1.2023 12:55
Avatar
Diana
Člen
Avatar
Diana:24.1.2023 14:09

toto by mi robilo problem, pretoze ak spravne chapem, tak adresa obrazka, typ a sposob otvorenia je definovany v skripte a ja sa potrebujem rozhodnut az v HTML, ci tam dam len farbu pod link bez vlozeneho obrazka, alebozastupny obrazok s farbou

aby si spravne chapal, teraz robim auta, kde nepotrebujem vkladat *.gif a staci len farba - neskor vsak budem robit odkazy na ine typy vecí, ktore mozu mat v sebe nejaky vzorok a budem musiet pouzit maly gif, jpg alebo png podla okolnosti

riesenie s JS i bez JS, ktore si navrhol, mi plne vyhovuje a ked si prerobim tvoje CSS a bude fungovat spravne, tak co viac si mozem priat, budem rada, ze nebudem musiet JS pouzit vobec :-)

 
Nahoru Odpovědět
24.1.2023 14:09
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:24.1.2023 14:18

ak by som potrebovala zmeny v CSS, tak si pripadne mozem k tvojmu CSS vytvorit dalsie instancie, kde spravim zmeny

napr. budem mat galeria-color a galeria-pattern:

.galeria-color, .galeria-pattern {...}

kde budu zhodne vlastnosti a tie ktore budem potrebovat zmenit, budem specifikovat v danej casti inak

Editováno 24.1.2023 14:20
 
Nahoru Odpovědět
24.1.2023 14:18
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:25.1.2023 9:43

Dokoncene so zabudovanim prehravania galerie s yoxview.

CSS:

.galeria {text-align: center;} /* pouzite iba ako obal na vycentrovanie celeho obsahu na stred */

.galeria .item {
        /* https://www.digitalocean.com/community/tutorials/css-centering-using-flexbox */
        position: relative; /* pre pozicovanie elementov vnutri s absolutnou poziciou */
        display: inline-flex;
        justify-content: center; /* vodorovne zarovnanie vnutornych elementov na stred*/
        /* align-items: center; */ /* vertikalne zarovnanie vnutornych elementov vynechane, aby sa nizsie uvedeny element ".galeria .item-nav" nezarovnal automaticky vertikalne */
        width: 84px;
        height: 84px;
        padding: 0; /* vnutorne odsadenie od obrazka pre pripad zmeny */
        margin-bottom: 1px; /* pridane kvoli kolizii odsadenia kontajnerov po zalomeni */
        border: 2px solid #00B9B9;
}

.galeria .item:hover {border: 2px solid #F8CE00; cursor: pointer;}

.galeria .item-image {
        position: absolute; /* pre umiestnenie elementu s absolutnou poziciou */
        display: inline-block;
        align-self: center; /* pre vertikalne zarovnanie sameho seba, nakolko v ".galeria .item" je tato vlastnost zakazana, aby sa element ".galeria .item-nav" nezarovnal automaticky vertikalne */
        width: 80px;
        height: 80px;
}

.galeria .item-image img{
        width: 80px;
        height: 80px;
}

.galeria .item-nav {
        position: absolute; /* pre umiestnenie elementu s absolutnou poziciou */
        display: inline-block;
        top: 84px; /* pre odsadenie pod ".item" - posuvatelne prekrytie v ktorejkolvek casti */
        width: 127px;
        padding: 2px 4px 3px 5px; /* odsadenie boxov s odkazmi vnutri tohoto kontajnera */
        text-align: left; /* pre zarovnanie vnutornych boxov vlavo */
        /* visibility: hidden; */ /* duplicita - tato vlastnost je definovana nizsie v ".galeria .item .item-nav" */
        border: 2px solid #F8CE00;
        border-radius: 4px 4px 12px 12px;
        background-color: #000;
        z-index: 1; /* definuje poradie prekryvajucich sa prvkov HTML - umiestnenie navrch */
}

.galeria .item .item-nav {visibility: hidden;} /* zmena z "display: none;" kvoli kolizii so skriptom "yoxview" */

.galeria .item:hover .item-nav {visibility: visible;} /* zmena z "display: inline-block;" kvoli kolizii so skriptom "yoxview" */

.galeria .item-nav a {
        display: inline-block; /* nesmie byt definovane ako "display: block;" - inak elementy zoradi pod seba */
        width: 15px;
        height: 15px;
        line-height: 15px; /* pre vertikalne zarovnanie v pripade vlozenia "obrazka s texturou" */
        border: 1px solid #F8CE00;
}

.galeria .item-nav a .color {
        display: inline-block; /* nesmie byt definovane ako "display: block;" - inak elementy zoradi pod seba */
        width: 15px;
        height: 15px;
        line-height: 15px; /* pre vertikalne zarovnanie v pripade vlozenia "obrazka s texturou" */
        border: 1px solid #F8CE00;
}

.galeria .item-nav a:hover {border: 1px solid #000;}

.galeria .item-nav a img { /* pouzit len pri vkladani "obrazka s texturou", inak tuto vlastnost vynechat, nakolko v mozille zobrazuje prazdny okraj, ak v HTML nezadam adresu obrazka */
        display: block; /* nesmie byt definovane ako "display: inline-block", inak dochadza k posunu vlozeneho "obrazka s texturou" nadol */
        width: 15px;
        height: 15px;
        border: none;
}

/* farby su platne len pre dany "item-nav a", takze to musim definovat osobitne bud v CSS alebo priamo v HTML */
/* tu som opravila postupnost od (1), pretoze od (0) nenacita ziadnu farbu */
.galeria .item-nav a:nth-child(1) {background-color: #F9F9F9;}
.galeria .item-nav a:nth-child(2) {background-color: #0564D7;}
.galeria .item-nav a:nth-child(3) {background-color: #026E23;}
.galeria .item-nav a:nth-child(4) {background-color: #FEF18F;}
.galeria .item-nav a:nth-child(5) {background-color: #983253;}
.galeria .item-nav a:nth-child(6) {background-color: #E70DDD;}
.galeria .item-nav a:nth-child(7) {background-color: #8E19B1;}

HTML:

<div class="galeria">
    <!-- Pre obrazok s vyberom farieb -->
    <div class="item">
        <div class="item-image"><img src="../img/auta/01-1.jpg" alt="" title="Aston Martin Vantage"></div>
            <div class="item-nav">
                <div class="yoxview">
                    <a href="../img/auta/01-2.jpg"><img src="" alt="" title="Aston Martin Vantage1"></a>
                    <a href="../img/auta/01-3.jpg"><img src="" alt="" title="Aston Martin Vantage2"></a>
                    <a href="../img/auta/01-4.jpg"><img src="" alt="" title="Aston Martin Vantage3"></a>
                    <a href="../img/auta/01-5.jpg"><img src="" alt="" title="Aston Martin Vantage4"></a>
                    <a href="../img/auta/01-6.jpg"><img src="" alt="" title="Aston Martin Vantage5"></a>
                    <a href="../img/auta/01-7.jpg"><img src="" alt="" title="Aston Martin Vantage6"></a>
                    <a href="../img/auta/01-8.jpg"><img src="" alt="" title="Aston Martin Vantage7"></a>
                </div>
            </div>
        </div>

    <!-- Pre obrazok bez vyberu farieb -->
    <div class="item">
        <div class="item-image">
            <div class="yoxview">
                <a href="../img/auta/02-2.jpg"><img src="../img/auta/02-1.jpg" alt="" title="Black Carriage (Čierny koč)"></a>
            </div>
        </div>
    </div>
</div>

Test (zmazat cache prehliadaca)

  • farby som este zatial nerobila, v prvom aute su definovane spravne
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
25.1.2023 9:43
Avatar
Diana
Člen
Avatar
Diana:25.1.2023 10:15

Dakujem, Peter, tvoje obe riesenia bez JS aj s JS su funkcne a pomohli mi.

 
Nahoru Odpovědět
25.1.2023 10:15
Avatar
Diana
Člen
Avatar
Odpovídá na Diana
Diana:25.1.2023 10:29

este opravim CSS: - tato cast tam nema byt, to je len nedopatrenie

.galeria .item-nav a .color {
        display: inline-block; /* nesmie byt definovane ako "display: block;" - inak elementy zoradi pod seba */
        width: 15px;
        height: 15px;
        line-height: 15px; /* pre vertikalne zarovnanie v pripade vlozenia "obrazka s texturou" */
        border: 1px solid #F8CE00;
}
 
Nahoru Odpovědět
25.1.2023 10:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 29 zpráv z 29.