İnternette araştırdığımda bulamadım, o yüzden buraya soruyorum.
Technopat Sosyal için bir eklenti yapıyorum ve bir durumla karşılaştım.
CSS ile aşağıdaki kodlarla bir şeyleri değiştiriyorum fakat sadece bir if kondisyonunda aktif olmasını istiyorum. Yoksa Dimension temasında çok iyi gözükürken varsayılanlarda çok kötü gözüküyor.
Örnek:
JavaScript:
if ((data_style_id == "34") || (data_style_id == "36")) // Dimension Temasını Algılama
{
console.log("Şu anda Dimension kullanıyorsun.");
// CSS kodları
}
else // Varsayılan/Karanlık Tema
{
console.log("Şu anda Varsayılan veya Karanlık Tema kullanıyorsun.");
// Yukarıdaki CSS kodları kısmı buraya etki etmemeli.
}
Kısaca CSS kodlarımın sadece belli bir durumda aktif olmasını istiyorum.
Buna benzer bir şey mümkün mü? Mümkünse nasıl bir yol izlemem gerek?
CSS kodlarımı aşağıya bırakıyorum.
En kolayı yolu body veya html tagına class veya attribute eklemen. Sonra yazacağın css kodlarını buna göre düzeltmen gerekiyor.
Mesela body class'ına "stereo-theme" adında bir class ekle. Sonrasında;
CSS:
.stereo-theme .blabla {
/*bla bla*/
}
Temanın ne olduğunu zaten js tarafında yazmışsın. element.classlist add veya remove kullanarak body deki class'ı silmen yeterli.
The Element.classList is a read-only property that returns a live DOMTokenList collection of the class attributes of the element. This can then be used to manipulate the class list.
Mümkün, niye mümkün olmasın. JS ile sayfa yüklendikten sonra bile sayfanın içeriğini manipüle edersin. SCSS kullanmadan karanlık veya aydınlık teması yapabiliyorsun. Belirli bir durumda aktif hale geliyor. Tek yapması gereken jQuery kullanıp doğru querylerle manipüle etmek. CSS kodunu da ayrı bir dosyada kullanmak yerine JS'te yazarsa daha rahat yapar.
En kolayı yolu body veya html tagına class veya attribute eklemen. Sonra yazacağın css kodlarını buna göre düzeltmen gerekiyor.
Mesela body class'ına "stereo-theme" adında bir class ekle. Sonrasında;
CSS:
.stereo-theme .blabla {
/*bla bla*/
}
Temanın ne olduğunu zaten js tarafında yazmışsın. element.classlist add veya remove kullanarak body deki class'ı silmen yeterli.
The Element.classList is a read-only property that returns a live DOMTokenList collection of the class attributes of the element. This can then be used to manipulate the class list.
xenForo’nun plugin dosyalarinda aktif temayi cekme gibi seylerin olmasi lazimdi. Zaten bu tip yuklemeler sunucu tarafli yapilmali bence. DOM yuklendikten sonra manipule etmek WebApp degilse hos degil.
Hepinizin benden daha iyi çözüm önerileri olduğunu düşünmeme rağmen
kendime başka türlü bir çözüm buldum. Kodlardan acemilik akıyor fakat bende çalıştı.
How do you add CSS rules (eg strong { color: red }) by use of Javascript?
stackoverflow.com
JavaScript:
if ((data_style_id == "34") || (data_style_id == "36")) // Dimension Temasını Algılama
{
console.log("Şu anda Dimension kullanıyorsun.");
cssKodlari = // CSS kodlarını bu değişkene koydum.
`// Sadece Dimension temasında uygulanacak CSS kodları
`;
var cssKodElementi = document.createElement("style"); // Style elementi oluşturdum.
cssKodElementi.innerText = cssKodlari; // Elementin içine CSS kodlarını ekledim.
document.head.appendChild(cssKodElementi); // Head türünün içine elementimi ekledim.
}
else // Varsayılan/Karanlık Tema
{
console.log("Şu anda Varsayılan veya Karanlık Tema kullanıyorsun.");
// Yukarıdaki CSS kodları kısmı buraya etki etmiyor.
}
@bitwise Evet fakat elementi bulmaya çalışırken hep undefined bulduğundan dolayı sorun oldu.
Ekleyeceğim sınıflar st-Scroller-action--start, stScroller-action--end ve stScroller-action.