Hladká změna barvy pozadí. Jak změnit barvu pozadí: po pseudo třídě s jQuery? A nyní podrobněji

V této lekci si povíme o efektu, při kterém se pozadí objektu plynule mění v důsledku najetí kurzorem myši na něj.
Na začátku, jak jste si již pravděpodobně zvykli (pokud jej nepoužíváte poprvé jQuery knihovna), připojit jQuery v naše stránky.
Tím samotným jQuery, také potřebujeme uživatelské rozhraní jQuery.

Pokud jste obeznámeni s principy jQuery, pak si musíme pamatovat, že do záhlaví musíme umístit volací kód, v tomto případě animaci změny barvy, aby se načetla dříve, než se načte hlavní obsah stránky. $(document).ready(function() ( // sem vložte kód volání animace ));

HTML

Zde je příklad označení html.

Změňte barvu pozadí prvku

Animujte změnu barvy při najetí myší

/ PC hry / Portál 2

Portál 2

Už původní Portal je na svou dobu kultovní a nečekaná záležitost. Jen znovu potvrzuje staletími ověřenou tezi o triumfu myšlenek nad vyspělými technologiemi.

css

CSS styl naší stránky vypadá takto.

png); text-align:left; barva:#333; šířka:800px; font-size:14px; font-family:georgia, "time new romances", patka; okraj:0 auto; výplň:0; ) a( barva:#333; text-decoration:none ) a:focus ( obrys: žádný; ) h1 (velikost písma: 34px; rodina písem: verdana, helvetica, arial, sans-serif; mezery mezi písmeny:- 2px; color:#394BEA; font-weight:700; padding:20px 0 0; text-shadow:0 1px 1px #70C5ED; ) h2 (font-size: 24px; font-family: verdana, helvetica, arial, sans- patka; barva:#5C81CB; váha písma: 400; výplň: 0 0 10px; stín textu:0 1px 1px #70C5ED; ) h3, h3 a( font-size:14px; font-family:verdana, helvetica, arial , bezpatkové; mezera mezi písmeny:-1px; barva:#333; váha písma: 700; text-transform:velká písmena; okraj:0; padding:8px 0 8px 0; ) p ( barva:#333; plovoucí: left; line-height:22px; margin:5px; padding:0 0 10px; ) #container ( margin: 0; padding: 0; ) .boxes ( background:#fff; border:1px solid #ccc; float:left; padding:10px; position:relative; width:600px; ) img ( border:5px solid #CCCCCC; ) div.info ( border-bottom:1px solid #CCCCCC; float:left; margin:0; padding:0; width: 100%; ) .blok (colo r:#0066CC; plavat vlevo; přetečení:skryté; poloha:relativní; šířka:600px; ) .block h4, .block h4 a( color:#333333; font-size:11px; padding:5px 0; text-shadow:0 1px 1px #CEDEFD; text-transform:uppercase; )

JS

DIV prvek mající třídu .krabice- je prvek, blok, jehož barvu chceme změnit.
Toto je kód, který budeme volat v záhlaví.

$(document).ready(function()( $(".boxes").hover(function() ( $(this).stop().animate(( backgroundColor: "#40B8FE"), 800; ), function() ( $(this).stop().animate(( backgroundColor: "#ffffff" ), 800; )); )); V parametrech barva pozadí barva je nastavena a hodnota 800 je rychlost animace.

Myšlenka je velmi jednoduchá a přímočará... Řekněme, že chceme změnit barvu pozadí stránky každých 500 pixelů shora. Bohužel se nepodařilo najít hotovou jednoduchou verzi, kterou by bylo možné upgradovat. Proto byla spolu s @only_darkangel napsána základní verze:

Nejprve zahrneme knihovny do hlavy, pokud již nejsou zahrnuty

Pak pár stylových řádků

Následuje skript, který změní barvu stránky při rolování.
Číslo 400 nastavuje rychlost změny barvy (0,4 sekundy). Úplně dole číslice 451 nastavuje čas pro kontrolu polohy rolování, tento údaj by měl být vždy větší než čas rychlosti barvy.

DEMO skriptářská práce. Jak vidíte, vše je nesmírně jednoduché a srozumitelné, ale zároveň primitivní.

Našla jsem i krásnější, ale také komplikovanější možnost. http://jsfiddle.net/jguffey/mxkx9j2o/, může být také užitečné.

Zeptejte se v komentářích, sdílejte článek na sociální síti. sítě kliknutím na příslušné tlačítko níže 🙂 Děkujeme za přečtení!

Existuje způsob, jak vybrat/manipulovat pseudoprvky CSS jako::before a::after (a stará verze s jedním středníkem) pomocí jQuery?

Moje šablona stylů má například následující pravidlo:

Span::after( content:"foo" )

Jak mohu změnit „foo“ na „bar“ pomocí jQuery?

Můžete také předat obsah pseudo elementu datovému atributu a poté použít jQuery k manipulaci s tím:

foo

$("span").hover(function()( $(this).attr("data-content","bar"); ));

Span:after ( content: attr(data-content) "jakýkoli jiný text, který budete chtít"; )

Pokud nechcete, aby se „jiný text“ nezobrazoval, můžete to zkombinovat s řešením seucolega takto:

foo

$("span").hover(function()( $(this).addClass("change").attr("data-content","bar"); ));

Span.change:after ( content: attr(data-content) "jakýkoli jiný text, který budete chtít"; )

To je nepraktické, protože jsem to nenapsal pro použití v reálném světě, jen abych vám dal příklad toho, čeho lze dosáhnout.

Css = ( before: function(elem,attr)( if($("#cust_style") !== undefined)( $("body").append(""); ) else ( $("#cust_style").remove(); $("body").append(""); ) ), after: function(elem,attr)( if($("#cust_style") !== undefined)( $("body").append(""); ) else ( $("#cust_style").remove(); $("body").append(""); } } }

toto přidání aktuálně přidává prvek nebo přidává prvek Style, který obsahuje požadovaný atribut, který ovlivní cílový prvek po prvku Pseudo.

toto lze použít jako

Css.after("someElement"," content: "Test"; pozice: "absolute"; ") // úprava / přidání stylů do:after

css.before(...); // k ovlivnění předchozího pseudo prvku.

pseudoprvky za: a před: nejsou přímo přístupné přes DOM, v současné době není možné volně upravovat konkrétní hodnoty css.

moje cesta byla jen příklad a není dobrá pro praxi, můžete ji změnit, vyzkoušet nějaké své vlastní triky a upravit ji pro použití v reálném světě.

Takže proveďte své vlastní experimenty s tímto a dalšími!

vítám vás - Adarsh ​​​​Hedde.

Děkuji všem! Podařilo se mi udělat, co jsem chtěl :D http://jsfiddle.net/Tfc9j/42/ zde se podívejte

Chtěl jsem, aby se krytí vnějšího divu lišilo od krytí vnitřního divu a tato změna se změnila kliknutím někam jinam ;) Díky!

$("#ena").on("kliknutí", funkce () ( $("head").append(""); )); $("#duop").on("kliknutí", funkce (e) ( $("head").append(""); e.stopPropagation(); )); #ena( šířka:300px; výška:300px; okraj:1px černá plná; pozice:relativní; ) #duo( neprůhlednost:1; pozice:absolutní; nahoře:50px; šířka :300px; height:100px; background-color:white; ) #ena:before ( content: attr(data-before); color: white; kurzor: pointer; position: absolute; background-color:red; opacity:0.9; šířka:100%; výška:100%;)

duoyyyyyyyyyyyy p

Můžete vytvořit falešnou vlastnost nebo použít existující a zdědit ji v šabloně stylů pseudoprvku.

var přepnuto = false; // Povolit přepínání barev setInterval(function () ( var color = přepnuto ? "red" : "darkred"; var element = document.getElementById("arrow"); element.style.backgroundColor = color; // Správa pseudoprvku "s css // pomocí dědičnosti. element.style.borderLeftColor = barva; přepnuto = !přepnuto; ), 1000); .arrow ( /* NASTAVIT FIKČNÍ VLASTNOST */ border-left-color:red; background-color:red; šířka:1em; výška:1em; display:inline-block; position:relative; ) .arrow:after ( border-top:1em solid transparent; border-right:1em solid transparent; border-bottom:1em solid transparent; border- left:1em solid transparent; /* zdědit VLASTNOST */ border-left-color:inherit; content:""; width:0; height:0; position:absolute; left:100%; top:-50%; )

Zdá se, že to nefunguje pro vlastnost content :(

V jQuery nemůžete vybrat pseudo prvky, protože nejsou součástí DOM. Ale můžete přidat konkrétní třídu do nadřazeného prvku a ovládat jeho pseudo-prvky v CSS.

Span.change:after ( content: "bar" )

Ačkoli jsou vykreslovány prohlížeči pomocí CSS, jako by byly podobné jiným skutečným prvkům DOM, samotné pseudoprvky nejsou součástí DOM, protože pseudoprvky, jak název napovídá, nejsou skutečné prvky, a proto je nelze vybírat a manipulovat s nimi. přímo. pomocí jQuery (nebo žádný JavaScript API, ne-li ve skutečnosti Selectors API). To platí pro všechny pseudoprvky, které se pokusíte stylizovat pomocí skriptu, nejen ::před a ::po .

Styly pseudoprvků můžete získat pouze přímo za běhu pomocí CSSOM (think window.getComputedStyle() ), která není vystavena jQuery mimo .css() , což je metoda, která také nepodporuje pseudoprvky.

Vždy můžete najít jiné způsoby, jak to obejít, například:

jedním fungujícím, ale nepříliš účinným způsobem je přidat do dokumentu pravidlo s novým obsahem a odkazovat na něj pomocí třídy. v závislosti na tom, co je potřeba, může třída vyžadovat jedinečný identifikátor pro každou hodnotu v obsahu.

$("").appendTo($("head")); $("span").addClass("id-after");

Na tuto otázku jsem již odpověděl, ale abych byl super, zopakuji to pro vás.

Odpověď musí být Ano & Ne. Nemůžete vybrat prvek pomocí pseudo selektoru, ale můžete do šablony stylů přidat nové pravidlo pomocí javascriptu.

Udělal jsem něco, co by vám mělo fungovat:

Var addRule = function(list, selector, styles) ( if (sheet.insertRule) return sheet.insertRule(selector + " (" + styles + ")", sheet.cssRules.length); if (sheet.addRule) return list .addRule(selektor, styly); ); addRule(document.styleSheets, "body:after", "content: "foo"");

::před

Vypočítaný styl v "před" byl obsah: "OVĚŘTE, KTERÉ BUDETE SLEDOVAT";

Zde jsou mé dva řádky jQuery využívající myšlenku přidání další třídy, která konkrétně odkazuje na tento prvek, a poté přidání značky stylu (s důležitou značkou), aby se změnila hodnota CSS obsahu prvku sudo:

$("span.play:eq(0)").addClass("G");

$("body").append("");

Proč přidávat třídy nebo atributy, když můžete přidat styl do hlavy

$("hlava").append("")

Je zde spousta odpovědí, ale žádná odpověď nepomáhá manipulovat s css:before nebo :after , ani ta přijatá.

Zde je návod, jak to doporučuji udělat. Řekněme, že vaše HTML vypadá takto:

test

A pak to nastavíte: předtím v CSS a navrhněte to takto:

#something:before( content:"1st"; font-size:20px; color:red; ) #something( content:"1st"; )

Všimněte si, že jsem také nastavil obsah na samotný prvek, takže jej můžete později snadno odstranit. Nyní je zde tlačítko, u kterého chcete změnit barvu na zelenou a velikost písma na 30px. Můžete toho dosáhnout takto:

Definujte css s požadovaným stylem v některé třídě .activeS:

ActiveS:before( barva:zelená !důležité; velikost písma:30px !důležité; )

Nyní můžete změnit styl :before přidáním třídy do vašeho prvku :before, jako je tento:

Pokud chcete získat obsah:předtím, můžete to udělat takto:

Nakonec, pokud chcete dynamicky měnit obsah :before pomocí jQuery, můžete toho dosáhnout takto:

Kliknutím na tlačítko "changeBefore" změníte obsah :before #something na "22", což je dynamická hodnota.

Snad to pomůže

Zde je způsob, jak získat přístup k vlastnostem stylu :after a :before definovaným v css:

// Získání hodnoty barvy .element:before var color = window.getComputedStyle(document.querySelector(.element"), ":before").getPropertyValue("color"); // Získání hodnoty obsahu .element:before var content = window.getComputedStyle(document.querySelector(.element"), ":before").getPropertyValue("content");

$(".span").attr("data-txt", "foo"); $(".span").click(function () ( $(this).attr("data-txt","jakýkoli jiný text"); )) .span( ) .span:after( content: attr(data) -txt);)

Při manipulaci s pseudoprvkem se také můžeme spolehnout na vlastní CSS vlastnosti (proměnné). Ve specifikaci se můžeme dočíst, že:

Vlastní vlastnosti jsou normální vlastnosti, takže je lze deklarovat u libovolného prvku, povolit s normálními pravidly dědičnosti a kaskády, mohou být podmíněné @media a dalšími podmíněnými pravidly, lze je použít v atributu stylu HTML, lze je číst nebo nastavit pomocí CSSOM, atd. d.

S ohledem na to je myšlenkou definovat uživatelskou vlastnost v rámci prvku a pseudo prvek z ní jednoduše zdědí; takže to můžeme snadno změnit:

1) Použití inline stylu:

Box:before ( content:"Jsem prvek před"; color:var(--color, red); font-size:25px; )

2) Použití CSS a tříd

Box:before ( content:"Jsem prvek před"; color:var(--color, red); font-size:25px; ) .blue ( --color:blue; ) .black ( --color:black ;)

3) Pomocí javascriptu

document.querySelectorAll(".box").style.setProperty("--color", "blue"); document.querySelectorAll(".box").style.setProperty("--color", "#f0f"); .box:before ( content:"Jsem prvek před"; color:var(--color, red); font-size:25px; )

4) Použití jQuery

$(".box").eq(0).css("--barva", "modrá"); /* funkce css() s uživatelskými vlastnostmi funguje pouze s verzí jQuery >= 3.x se starší verzí můžeme pro nastavení hodnoty použít atribut style. Jednoduše věnujte pozornost, pokud již máte definovaný inline styl! */ $(".box").eq(1).attr("style","--color:#f0f"); .box:before ( content:"Jsem prvek před"; color:var(--color, red); font-size:25px; )

Může být také použit s komplexními hodnotami:

Box ( --c:"content"; --b:linear-gradient(red,blue); --s:20px; --p:0 15px; ) .box:before ( content: var(--c) ; background:var(--b); color:#fff; font-size: calc(2 * var(--s) + 5px); padding:var(--p); )

POKUD chcete zcela ovládat prvky ::before nebo ::after pomocí sudo přes CSS, můžete to udělat pomocí JS. Viz. níže:

jQuery("head").append("");

Vezměte prosím na vědomí, že prvek

Abyste ale pochopili, kde se bere tato mylná představa lidí, kteří odsuzují rozkoš a vychvalují utrpení, odhalím vám celý obraz a vysvětlím, co přesně tento muž, který objevil pravdu, kterého bych nazval strůjcem šťastného života , řekl. Nikdo totiž potěšení neodmítá, nepohrdá a nevyhýbá se jim jen proto, že jsou potěšením, ale jen proto, že ti, kdo si nevědí, jak se v požitcích rozumně oddávat, trpí velkým utrpením. Stejně jako neexistuje nikdo, kdo by sám utrpení miloval, preferoval a toužil po něm jen proto, že je utrpením, a ne proto, že občas nastanou takové okolnosti, kdy utrpení a bolest přinesou nějaké a nemalé potěšení. Použijeme-li nejjednodušší příklad, kdo z nás by se zapojil do jakéhokoli bolestivého fyzického cvičení, pokud by to s sebou nepřineslo nějaký užitek? A kdo by mohl spravedlivě vyčítat tomu, kdo hledá potěšení, které by s sebou nepřineslo žádné potíže, nebo tomu, kdo by se vyhýbal takovému utrpení, které by s sebou nepřineslo žádné potěšení?