abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:00 | Nová verze

    V aktuálním přehledu vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) bylo oznámeno vydání nové verze 0.4.0. Výrazně se zlepšilo vykreslování stránek jako lichess.org, Zulip nebo Speedtest.

    Ladislav Hagara | Komentářů: 0
    včera 19:22 | Bezpečnostní upozornění

    Vládní CERT upozorňuje (𝕏) na kritické zranitelnosti v produktech VMware: CVE-2026-59309, CVE-2026-59310 a CVE-2026-47876. Zranitelnosti v VMware vCenter umožňují vzdálenému útočníkovi se síťovým přístupem obejít autentizaci a získat neoprávněný přístup k vCenter, případně zneužít directory traversal ke spuštění libovolného kódu na vCenter.

    Ladislav Hagara | Komentářů: 0
    včera 18:33 | Bezpečnostní upozornění

    Společnost Coinkite upozorňuje na bezpečnostní chybu svých hardwarových kryptopeněženek Coldcard. Jedná se o kritickou chybu v generování náhodných čísel (RNG). Místo hardwarového generátoru náhodných čísel (TRNG) byl omylem používán softwarový fallback (PRNG).

    Ladislav Hagara | Komentářů: 0
    včera 14:11 | Zajímavý projekt

    Představena byla nová linuxová distribuce Shadowfetch Linux. Na rozdíl od mnoha nováčků, které nabízejí převážně jiné téma a výběr softwaru, tato distribuce založená na Debianu Testing s desktopovým prostředím KDE Plasma 6.6, klade lokálně běžící umělou inteligenci do centra svého desktopového zážitku.

    Pinhead | Komentářů: 0
    30.7. 17:22 | Zajímavý projekt

    Max Leiter v roce 2019 zkusil zprovoznit X server na iPadu (iOS). Nyní se k tématu vrátil a s pomocí LLM a balíčkovacích nástrojů Procursus rozběhl desktop s X11 i Waylandem. Jeho balíčky jsou dostupné v repozitáři xiOS.

    |🇵🇸 | Komentářů: 17
    30.7. 13:33 | IT novinky

    Společnost Google Cloud dnes oznámila, že její infrastruktura a služby byly oficiálně zařazeny do Katalogu cloud computingu vedeného Digitální a informační agenturou (DIA). Tato certifikace potvrzuje, že infrastruktura a služby Google Cloud splňují přísné bezpečnostní a regulační požadavky České republiky pro provoz cloudových služeb ve veřejném sektoru.

    Ladislav Hagara | Komentářů: 6
    30.7. 13:11 | IT novinky

    Vůbec poprvé v historii se stát při testování digitálních služeb obrací na širokou veřejnost. Digitální a informační agentura (DIA) a Ministerstvo vnitra zvou občany k zapojení do zátěžového testu eDokladů, které od loňského podzimu prošly optimalizací aplikace a posílením infrastruktury. Test proběhne 13. srpna ve 13:00 a pro jeho úspěch bude potřeba zapojení několika desítek tisíc občanů. Zapojení do testu je zcela dobrovolné a úkol

    … více »
    Ladislav Hagara | Komentářů: 40
    30.7. 13:00 | Nová verze

    FireDragon je webový prohlížeč, doposud založený na Floorpu, jednom z forků Firefoxu s větším důrazem na ochranu soukromí a přizpůsobení uživatelského rozhraní. Spravuje ho člen komunity distribuce Garuda Linux. Nové vydání verze 13 opouští Floorp a přechází přímo na Firefox s patchi z LibreWolfu a vlastními úpravami. Dostupný je také na Flathubu.

    |🇵🇸 | Komentářů: 0
    30.7. 05:44 | Zajímavý software

    picogame (GitHub) je malý 2D herní engine pro mikrokontroléry jako RP2040, čip uvnitř kapesní konzole Picopad. Hru napíšeš v Pythonu a vyzkoušíš ji v prohlížeči nebo desktopovém simulátoru. Až bude hotová, zkopíruješ ji na podporovanou desku. Na začátku nepotřebuješ C, sestavení firmwaru ani hardware.

    Ladislav Hagara | Komentářů: 1
    29.7. 19:22 | Nová verze

    Multiplatformní prohlížeč elektronických knih KOReader byl vydán ve verzi 2026.07 "Sailing Walrus". U PDF souborů s SMask lze vyčistit pozadí. Přibyla podpora Kobo v5 nebo základní podpora OPDS 2.0.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (18%)
     (30%)
     (5%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2290 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Zmena vzhľadu checkbox a radio inputov v HTML

    8.2.2013 21:30 | Přečteno: 2499× | Web | Výběrový blog | poslední úprava: 8.2.2013 21:30

    CSS 2.1 nedefinuje, ktoré vlastnosti CSS a akým spôsobom sa aplikujú na formulárové prvky. Prehliadač môže aplikovať CSS vlastnosti formulárovým prvkom. Odporúča sa však považovať túto funkcionalitu za experimentálnu. Budúce verzie môžu spôsob aplikovania CSS bližšie špecifikovať.
    Zdroj

    V dnešnom blogu si ukážeme spôsoby ako definovať vlastné štýly pre formulárové prvky a dôvody prečo by sme to za bežných okolností nemali robiť ;-).

    Štýl aplikovaný na formulárové elementy

    Nastavovanie štýlov formulárovým prvkom

    Definícia na stránkach W3C sa vyjadruje o možnosti definovať vlastný štýl formulárovým prvkom veľmi opatrne. Problematika je pomerne obsiahla, ja sa však v tomto blogu budem zaoberať len 2 typmi formulárových prvkov. Ak by mal niekto záujem o komplexnejší pohľad, tak celkom zaujímavý je tento blog.

    V krátkosti môžme povedať, že určiť štýl priamo checkboxom, alebo radiobuttonom je nemožné. Všetky rozumné metódy fungujú na princípe určenia štýlu nejakému inému elementu a skrytiu samotného formulárového prvku.

    Metódy založené na CSS

    Prakticky všetky metódy založené na CSS aplikujú štýl na nejaký element buď priamo zapísaný v kóde, alebo pseudo element ako je ::before, alebo ::after. Samotný formulárový prvok sa skryje (čo už s ním keď sa jeho vzhľad nedá zmeniť ;-) ).

    Na webe sa povaľuje obrovské množstvo návodov, ja však ukážem za všetky len jeden (najlepší, aký som našiel a trochu upravený mnou). Je to konkrétne návod z The CSS Ninja. HTML kód, na ktorý budemeaplikovať CSS bude vyzerať nasledovne:

    <form action="." method="get">
      <fieldset>
        <legend>Radio</legend>
        <p>
          <input type="radio" name="radio" id="radio_y" />
          <label for="radio_y">Áno</label>
        </p>
        <p>
          <input type="radio" name="radio" id="radio_n" />
          <label for="radio_n">Nie</label>
        </p>
      </fieldset>
      <fieldset>
        <legend>Checkbox</legend>
        <p>
          <input type="checkbox" name="checkbox_1" id="checkbox_y" />
          <label for="checkbox_y">Áno</label>
        </p>
        <p>
          <input type="checkbox" name="checkbox_2" id="checkbox_n" />
          <label for="checkbox_n">Nie</label>
        </p>
      </fieldset>
    </form>
    

    Samotné CSS vyzerá nasledovne:

    p input[type=checkbox], p input[type=radio]
    {
      padding: 0;
      margin: 2px 6px 0 0;
      vertical-align: middle;
    }
    

    Najskôr sa nastaví štýl pre formulárový prvok, ktorý sa použije v prípade, že prehliadač nepodporuje selektory CSS3.

    p:not(#foo) > input[type=checkbox], p:not(#foo) > input[type=radio] {
      position: absolute;
      float: left;
      left: 0;
      opacity: 0;
    }
    

    Tento blok CSS zabezpečí, že formulárový prvok sa nebude vôbec zobrazovať. Absolútna pozícia slúži na to, aby návestie nebolo posunuté o rozmery formulárového prvku.

    Hrôzostrašným selectorom p:not(#foo) dosiahneme aplikáciu pravidla len v prípade, že prehliadač podporuje CSS 3 selektory na pomerne dobrej úrovni.

    p:not(#foo) > input[type=checkbox] + label:before, p:not(#foo) > input[type=radio] + label:before
    {
      width: 16px;
      height: 18px;
      vertical-align: middle;
      content: "";
      background: url(sprity.png) 0px 0px no-repeat;
      display: inline-block;
    }
    
    p:not(#foo) > input[type=checkbox] + label:before                 { background-position: 0px    0px; }
    p:not(#foo) > input[type=checkbox] + label:hover::before          { background-position: 0px  -20px; }
    p:not(#foo) > input[type=checkbox] + label:active::before         { background-position: 0px  -40px; }
    p:not(#foo) > input[type=checkbox]:checked + label:before         { background-position: 0px  -80px; }
    p:not(#foo) > input[type=checkbox]:checked + label:hover::before  { background-position: 0px -100px; }
    p:not(#foo) > input[type=checkbox]:checked + label:active::before { background-position: 0px -120px; }
    
    p:not(#foo) > input[type=radio] + label:before                    { background-position: 0px -160px; }
    p:not(#foo) > input[type=radio] + label:hover::before             { background-position: 0px -180px; }
    p:not(#foo) > input[type=radio] + label:active::before            { background-position: 0px -200px; }
    p:not(#foo) > input[type=radio]:checked + label:before            { background-position: 0px -240px; }
    p:not(#foo) > input[type=radio]:checked + label:hover::before     { background-position: 0px -260px; }
    p:not(#foo) > input[type=radio]:checked + label:active::before    { background-position: 0px -280px; }
    

    Nakoniec sa vytvorí pseudo element, ktorý bude zobrazovať samotný ovládací prvok. Pre jednotlivé stavy elementu sa nastaví buď samostatné pozadie, alebo pozícia spritu.

    Na zariadeniach s IOS 4 a vyšším nebudú takéto prvky fungovať. Na ich oživenie sa musí nastaviť prázdna metóda onclick na formulár.

    <form action="." method="get" onclick="">
    

    Kód by mal fungovať korektne vo väčšine prehliadačov vrátane Internet Exploreru 9. V nižších verziách by sa mali zobrazovať štandardné systémové formulárové prvky.

    IE 9 IE 8

    Použitie javascriptu

    Najvyššie umiestnenie na googli má medzi skriptmi na zmenu vzhľadu formulárových prvkov tento skript. Existuje samozrejme niekoľko ďalších skriptov, ale spôsob použitia a problémy vzniknuté použitím sú prakticky rovnaké.

    Pre demonštráciu použitia tohto skriptu nám postačí ho pridať do hlavičky a formulárovým prvkom pridať triedu class="styled".

    <script src="functions.js"></script>
    

    CSS súbor je pomerne jednoduchý a myslím, že nepotrebuje žiaden komentár.

    .checkbox, .radio {
      width: 16px;
      height: 20px;
      padding: 0 5px 0 0;
      background: url(checkbox.png) no-repeat;
      display: block;
      clear: left;
      float: left;
    }
    
    .radio {
      background: url(radio.png) no-repeat;
    }
    

    Javascript sa stará o vytvorenie prvkov span, ktoré nahradia formulárové prvky. Tie sú podobne ako v prípade použitia CSS skryté. Na aplikovanie štýlu prvkov v tomto prípade nepotrebujeme ani podporu pseudo elementov (::before a ::after), ani podporu selektorov :checked a + (sused).

    Pri zmene stavu elementu priamo kliknutím na element (nie na návestie) však nedochádza ku generovaniu udalosti. Nasledujúci kód sa vyvolá len pri kliknutí na návestie.

    $('form input').change(function(e) {
      ...
    });
    

    Zároveň pri tomto stave môžu nastať problémy pri zmene stavu elementov pomocou skriptu.

    $('input').each(function() {
      $(this).prop('checked', !$(this).prop('checked'));
    });
    

    Porovnanie

    Zobrazovanie

      Chromium Firefox Opera Konqueror IE 7 IE 8 IE 9 Safari (iOS)
    CSS ✓*
    JS

    * Je potrebné trochu "ohackovať" onclick.

    Udalosti

      CSS JS  
    Generovanie zmeny Testovaný skript negeneruje udalosť change.
    Reakcia na nastavenie stavu skriptom Testovaný skript reaguje na zmenu stavu checkboxu pomocou js presne opačne (pri zaškrtnutí zobrazuje nezaškrtnutý a opačne).

    Záver

    Oba spôsoby majú svoje výhody a nevýhody. Podľa možnosti nemali by sme používať ani jednu metódu a spoľahnúť sa na to, že štandardné prvky nebudú vyzerať hrozne.

    Použitím CSS sa vyhneme problémom pri používaní skriptov riadiacich stav elementov. Zároveň sa môžme spoľahnúť na to, že všetky udalosti budú korektne vygenerované a môžme vykonať akciu pri zmene stavu. Netreba však zabúdať, že je to jednoducho len hack, ktorý sa snaží rôznymi spôsobmi obísť nekompatibilitu medzi prehliadačmi.

    Použitie javascriptu na zmenu štýlu prvkov síce funguje vo väčšom počte prehliadačov, ale má svoje muchy v podobe spolupráce s inými skriptmi.

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    mirec avatar 8.2.2013 21:35 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Zmena vzhľadu checkbox a radio inputov v HTML
    Příloha:
    V prílohe sú súbory, ktoré som používal na testovanie formulárových prvkov.
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    =^..^= AmigaPower® avatar 9.2.2013 13:36 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
    Rozbalit Rozbalit vše Re: Zmena vzhľadu checkbox a radio inputov v HTML
    To je hrozný ta skleróza, člověk chvíli nic nenapíše a pak do toho čumí hak husa do flašky a musí jet řádek po řádku a zase spátky, aby mu docvaklo jak to vlastně funguje... :-D
    9.2.2013 14:53 manasekp | skóre: 29 | blog: manasekp | Brno
    Rozbalit Rozbalit vše Re: Zmena vzhľadu checkbox a radio inputov v HTML
    musis na chvilu odlozit tu flasku, pak to pomalu zacne davat smysl :-D
    BIOKOMP | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
    9.2.2013 18:23 citanus
    Rozbalit Rozbalit vše Re: Zmena vzhľadu checkbox a radio inputov v HTML
    flashku a jointa : )
    =^..^= AmigaPower® avatar 11.2.2013 07:48 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
    Rozbalit Rozbalit vše Re: Zmena vzhľadu checkbox a radio inputov v HTML
    ...zveš? ;-)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.