Diskuze: Relativní "box" posunuju zbytek obsahu
V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 41 zpráv z 41.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.
Po prvé, oprav si kód...
Toto je zle:
<div class=adresa>
Správne sa to zapisuje takto:
<div class="adresa">
Za druhé:
pro CSS třídy je vhodné používat pomlčku trida-s-pomlckou
pro ID je naopak vhodné používat tento formát
idSVelkymiPismenyUKazdehoNovehoSlova
pro name je pak dobré používat podtržítka name_s_podtrzitkem
Fajn, díky, teď už to měnit nebudu, ale pro příště budu vědět.
Smím se zeptat proč je to "VHODNÉ"?
Samozřejmě nikdo ti např. pro třídy nezakazuje používat podtržítko.
Pro každý z těch návrhů platí něco jiného, ale při použití kódu s
"nestandardně" formátovaným atributem určitým způsobem může dojít k
chybám, které stejně budeš muset opravit. Navíc, příklady, které jsem
popsal jsou používané mezi programátory všude na světě. Stačí si
projít některé forum, jako např. stackoverflow. A lépe se pak v kódu
orientuješ, pokud si tyto tři atributy rozlišíš.
Čili má to dva účely - funkční a orientační.
K chybe. Pozíciu slova daj na relative, čo už máš, ale bez nej ti to nebude fungovať. Elementu, ktorý sa objaví po hoveri, daj position: absolute a urči tomu vhodné súradnice pomocou top, left, bottom, right.
Takhle by to mělo stačit
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="main.css">
</head>
<body>
<div id="prvni">
Prvni
<div class="zobraz">
Zobrazene
</div>
</div>
<div id="prvni">
Prvni
<div class="zobraz">
Zobrazene
</div>
</div>
</body>
</html>
A CSS
.zobraz{
display: none;
}
#prvni:hover .zobraz{
display: inline !important;
}
A udělej to takto:
HTML: (obsah <body></body>)
<div id="prvni">
První
<div>
Popis
.
.
.
</div>
</div>
<div id="druhy">
Druhý
<div>
Popis
.
.
.
</div>
</div>
CSS: (jen základ, zbytek si doplň)
div#prvni div, div#druhy div {
display: none;
}
div#prvni:hover div {
display: block;
position: absolute;
left: *px;
top: *px;
}
div#druhy:hover div {
display: block;
position: absolute;
left: *px;
top: *px;
}
Pozn.: místo * doplň čísla.
Vyřešil jsem to tak, že kategoriím jsem dal absolutní pozice, box zůstal relativní.
To CSS se dá upravit
div#prvni div, div#druhy div {
display: none;
}
div#prvni:hover div, div#druhy:hover div {
display: block;
position: absolute;
left: *px;
top: *px;
}
Bohužel, nedá. Pokud bude první (dejme tomu to hlavnější) větší jak druhé (nebo obráceně) a nebude to chtět přesně pod sebou, ale vždy hned za. Pokud by to mělo být vše na stejném místě, ještě by to šlo.
id by se hlavně pro stylování nemělo vůbec používat.
To je pravda, já ho tad mám, neboť vycházím z minulého příkladu, ale sám ho využívám jen nutně. A někdy to bez id ani nejde (pokud se řeší priority).
Vždycky to jde bez id. Stačí se držet určitých konvencí a guideline a
už id nikdy nepoužiješ
Šmárja. Že mi to někdo neřekl dříve? Jakto?
Já nevím, asi jednou mi to jinak nešlo .
Ale myslím proč se nemají používat id?
Jasně definované pravidla, které nesmíš porušit.
Já teda do jisté míry souhlasím s "nepoužíváním" ID pro CSS, ale má to ale. ID je atribut pro CSS, ale hlavně pro skripty. Pokud chceš použít ID, použij ho hlavně pro nějaký objekt na stránce, který je unikátní a víckrát se na stránce neobjevuje - má svoji unikátní identifikaci, kterou využiješ např. pro JavaScript. Např.
<div id="sidebar"> nebo <div id="adBox">
Jako takový je ale podle mě zbytečný, lze ho plně nahradit třídami a obejdeš se i bez něj. Když se ještě vrátím k tvému kódu, máš tam zbytečně moc atributů typu
id="reditel_box"
id="sekretariat_box"
, atd... Všem těmto atributům jsi navíc už přiřadil de facto samou identifikaci pomocí tříd. To je špatně. Všem těm "boxům" jednoduše přiřaď třídu box a pokud je potřebuješ dále rozlišit, tak ke každému přidej další třídu způsobem <div class="box reditel">. Poslal bych ti klidně kód, který by tě více nasměroval, ale k tomu je potřeba znát layout, který máš určitě navržený např. graficky a bez něj to asi nepůjde, alespoň v takovémto stavu v jakém kód je mně to nic neřeklo.
Blbosť
debeneesse má sčasti pravdu. Zabúdate ale na to, že identifikátor má väčšiu prioritu ako trieda. Ak chceme vytvoriť kód, kde použijeme tried a identifikátorov čo najmenej, budeme identifikátory potrebovať. Iste, dá sa to nahradiť triedami, ale pohodlnejšie a rýchlejšie je identifikátory používať.
Čo sa týka povier o pisaniSpoluSVelkymPismenomKazdehoSlova, tak to môžme použiť, ak ide o identifikátory pre JavaScript.
Vrátim sa ešte ku prvej poznámke lamky02sk:
"Po prvé" neexistuje. Ak je v atribúte iba jedna hodnota, úvodzovky nie sú
potrebné. Takže tvoja oprava ničomu nepomohla. Ak ale pôjde o niečo
ako:
<div class=prvok obal>
...tak si prehliadač bude myslieť, že obal je ďalší atribút bez hodnoty (teoreticky to prejde, ale neaplikujú sa štýly).
Majkl:
Id, Idéčka aj identifikátory môžeš slobodne používať. JS síce operuje
na tejto pôde, ale ak si v tom vytvoríš systém, pôjde to.
Áno, reagujem na tvoju vetu: "Jasně definované pravidla, které nesmíš
porušit."
Možno si to myslel ironicky, neviem.
Pod odpoveďou na teba píšem všetko, kde vidím chybu v rade, neber si to osobne.
Ak to nebolo ironické a veta patrila ku identifikátorom, tak ti patrí prvé slovo a sčasti ten odsek pod ním.
Takhle dementně se ptám, protože jsem v té diskuzi pouze vysvětlil pojem konvence. Nikde jsem s nikým nesouhlasil ani nic podobného. U tvého komentáře jsem četl jen první slovo.
Aha, iste. Tak prepáč. Keď sa na to pozrieš mojimi očami uvidíš:
Ale myslím proč se nemají používat id?
Jasně definované pravidla, které nesmíš porušit.
Zo svojho príspevku to už neviem vymazať, mrzí ma to.
Hádám, že to co chceš udělat je tooltip, že?
Nevím, čemu všemu se tooltip říká. Jestli to je cokoli co vyskočí po :hoverování něčeho tak to má být tooltip.
Jinak verze (toho vyskakovacího boxu/ tooltipu?) kterou jsem udělal já, je
velmi nepřehledná a plná chyb jak jsem později zjistil, takže ji asi radši
udělám úplně od začátků.
Nedávno jsem shodou okolností také dělal tooltip a vyřešil jsem to dost jednoduše.
Hlavní je, pokud to chceš udělat elegantně pouze s CSS, že musíš dát opa 2 elementy - tedy ten s textem, tak i s tooltipem- do jednoho wrapper elementu.
Výsledek HTML pak bude vypadat cca takto: (psáno s využitím BEM syntaxe)
<div class="info">
<span class="info__text">ITnetwork</span>
<span class="info__tooltip">Jedna z největších a nejobsáhlejších socicálních sítí zaměřených na IT v Česku a na Slovensku.</span>
</div>
Následně si .info__text nastyluješ tak, jak chceš. Třídě .info__tooltip přidáš absolutní pozici a nastyluješ jí tak, jak chceš aby vypadala - já jsem si dělal třeba ten styl, kdy ti vyjede nahoře i s šipkou.
V neposlední řadě pak přidáš :hover na .item, kdy se ti změní display u .item__tooltip na block (z defaultního none).
Přidáním CSS animací můžeš aplikovat nějakou super animačku - změna marginu, opacity, scalu, whatever...
Snad ti tedy Má rada pomohla.
Takže:
1)Proč jsi ten element s class info označil wrapper?
2)Co je to BEM syntaxe (hádám že použití těchle__podtržítek), a pročs
jsi použil tuto, a ne třeba tuVelbloudí
3)Proč jsi použil jednou div a dvakrát span?
4)co je to .item
5)Jak udělat tu šipečku?
Myslím že po tvé odpovědi bude tvůj příspěvek nejspíš řešením
, Děkuji
V skratke ide o niečo takéto (http://kod.djpw.cz/wslb), vidíš princíp a vzhľad si zvládneš doplniť. Podstatný je druhý selektor v CSS. Vyberie ten prvok div, ktorý v kóde bezprostredne nasleduje za spanom (na ktorý nájdeme myšou), pričom span sa musí nachádzať v prvku s triedou obal.
Samozrejme by sa to dalo aj bez obalu: http://kod.djpw.cz/xslb
Ešte dopním, že pozíciu divu nejde meniť vzhľadom na span (musel by byť vnorený + position: relative a absolute). Niečo ako toto: http://kod.djpw.cz/zslb
Ak nepotrebuješ meniť pozíciu, doporučujem prvú alebo druhú variáciu (záleží od situácie).
Ta varianta bez wrapperu by nefungovala pouze s využitím CSSka, respektive by se to nějak záhadně asi nastylovat dalo, ale...
Nesmíš zapomenout, že samotný tooltip "není součástí" webu, tedy nesmí odsovat nic a musí být umístěn jakoby v jiné vrstvě nad...
Také jen upozorním, že <span> či <p> by ideálně neměl obsahovat nic jiného než text (samozřejmě může obsahovat <b>, <i>, <span>...).
Takže:
Během tohoto týdne bych chtěl sepsat několik dílů pro novou sérii
objektové CSSko, kde ukážu k čemu se hodí, proč jí používat a jak jí
používat efektivně.
Tak super, díky, jdu na to! Rád bych ti dal akceptované řešení, jenže jsem už jedno
označil ale "to mi nebylo uznáno" takže nic no
Aha, jasné, máš pravdu, zabudol som na to, že to musí byť vo vyššej vrstve. Každopádne tretia ukážka je použiteľná... Prvky som skopiroval z tvojej ukážky, neskôr obalový <div> zmenil na <span> a lenivo skrátil kód...
Zobrazeno 41 zpráv z 41.