|
|
|
| У меня задан background:url(../images/logout_sprite.png) no-repeat 100% -42px;
Как мне получить через javascript этот url?
Сам лично пробывал через jquery css('backgroundColor') выдало, что transparent) | |
|
|
|
|
|
|
|
для: captain-america
(13.10.2010 в 16:33)
| | Все уже сам нашел, как говорится чуть чуть не дотерпел)
Свойства, управляющие отображением фона:
* background-color
* background-image
* background-repeat
* background-position
* background-attachment
Нужно было указать background-image
) | |
|
|
|
|
|
|
|
для: captain-america
(13.10.2010 в 16:33)
| | Появился еще один вопрос, мне надо сделать прелоад картинок, причем тех, за счет которых создается анимация. То есть скажем есть класс
.logout{
background:url(../images/logout_sprite.png) no-repeat 100% 0px;
}
.logout:hover{
background:url(../images/logout_sprite.png) no-repeat 100% -21px;
}
.logout:active{
background:url(../images/logout_sprite.png) no-repeat 100% -42px;
}
Как мне средствами javascript или jquery получить свойство класса logout:active или logout:hover? | |
|
|
|
|
|
|
|
для: captain-america
(13.10.2010 в 17:25)
| | Самый простой (и, следовательно - самый лучший) прелоадер делается средствами HTML+CSS - сразу после открывающего тега <body> прописываете невидимый <div style="display: none">, внутрь которого прописываете теги <IMG>, в SRC которых указываете URL'ы тех картинок, что Вам надо "предзагрузить".
-----
Насчёт "получить свойство класса logout:active или logout:hover" - два встречных вопроса:
1) какое именно свойство?
2) "вообще узнать, что там в CSS прописано" или же "в какой-то конкретный момент на каком-то конкретном элементе"? | |
|
|
|
|
|
|
|
для: АЯ
(13.10.2010 в 17:44)
| | Сейчас я так и делаю, но мне бы хотелось, что бы был универсальный прелоадер, который можно было запускать на загрузку документа и он сам подгружал все картинки.(есть вариант решения через спрайты(Загрузит не все, но мне в принципе надо только те, чтосоздают анимацию), но картинок очень много и не хотелось бы сидеть корпеть с графическим редактор и css кодом)
Ваши вопросы
1) background-image
2) На загрузку документа - $(document).ready | |
|
|
|
|
|
|
|
для: captain-america
(13.10.2010 в 17:57)
| | Как я понял, Вы хотите автоматизировать прелоад картинок, участвующих в анимации.
Т. е. хотите, чтобы скрипт проанализировал файл (или блок) CSS и сам предзагрузил все картинки, кои участвуют в псевдоклассах?
Я правильно Вас понял?
Это реально сделать ещё на этапе формирования заголовка документа, сиречь ещё ДО onload тега <BODY> (или, на языке дебилов, - $(document).ready).
Структура такова - в заголовке (между <head> и </head>) СНАЧАЛА прописываете ссылку на CSS-файл или стилевой блок <style>...</style> (или и то, и другое в любом потребном Вам количестве).
И только ЗАТЕМ в том же заголовке вызываете скрипт, который прочитает уже загруженные styleSheets, вытащит оттуда URL'ы всех картинок, используемых в псевдоклассах и предзагрузит их.
Скрипт простенький.
Могу набросать.
Только уж, извините, на чистом Javascript.
Ибо библиотекой под названием Jquery не пользуюсь. И другим не советую.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: АЯ
(13.10.2010 в 18:20)
| | Не стоит так и о библиотеке, и о использующих их как о дебилах. Библиотеки пишут не для дебилов, а для удобства, и вы ими тоже пользуетесь, и постоянно, пусть и неимеющие отношения к JS. | |
|
|
|
|
|
|
|
для: sim5
(13.10.2010 в 19:31)
| | Согласен, многие библиотеки пишутся именно "для удобства".
И многие, в том числе и я, ими пользуются.
А вот библиотека Jquery написана исключительно для дебилов.
Потому как человек, не знающий стоматологии, не будет заниматься лечением зубов, если только он не дебил.
Человек, не знающий Javascript, не будет создавать сайт, заполненный скриптами, если только он не дебил.
Но нашлись придурки, создавшие инструмент для дебилов - библиотеку JQuery.
Ничего о JS знать, говорят эти придурки, - не надо.
Вы пойдёте лечить зубы к "стоматологу", который совсем не стоматолог, а просто пользуется библиотекой по стоматологии? | |
|
|
|
|
|
|
|
для: АЯ
(13.10.2010 в 19:53)
| | JQuery написали все таки не дебилы, а люди хорошо знающие JS. Можно конечно быть столь влюбленным в "чистоту" языка, что готовя большие проекты постоянно писать одно и то же. Стоит ли это делать, каждый решает сам, библиотеки на то и создаются чтобы облегчать задачи.
Другой вопрос, что плохо, когда для решения мелкой задачи используют JQuery, но это же не потому, что "дибилы" написавшие JQuery советуют это делать.
Если в таком ключе рассуждать, то уж точно можно сказать, что написавшие JS это дебилы, и его использующие тоже - писать надо исключительно на Ассемблере, это основа основ, все остальное туфта. Ну это же полный маразм. ) | |
|
|
|
|
|
|
|
для: sim5
(13.10.2010 в 20:05)
| | Люди, написавшие Jquery, действительно разбираются в JS.
Но умнее (и лучше) их это знание не делает.
Преступник - он ведь тоже может быть "Ворошиловским стрелком", сиречь - профессионалом.
Однако своё умение (знание) преступник использует в негативных целях.
Большинство сайтов интернета написано дебилами - с дебильным оформлением и с дебильным же содержанием. Разработчики Jquery дали возможность этим дебилам, кроме любимых ими цветастых обоев, ещё и навесить на страничку различные скрипты - от снежинок до салютиков.
Зачем?
Кому это надо?
Лично Вам это сильно нравится? | |
|
|
|
|
|
|
|
для: АЯ
(13.10.2010 в 22:07)
| | Ну не каждому "дебилу" суждено написать такую библиотеку как Jquery, для этого как миниум надо очень хорошо знать JS, и не просто знать, но и уметь творчески его применять. Эта библиотека в отличие от предыдущих оказалась удобной, легкой, и ее используют не обязательно профаны в JS. Только вот знающие JS применяют ее тогда, когда это оправдано, и в этом нет ни какого "дебелизма" с их стороны - это вполне нормально. Вас уж точно не причислишь к "деблим", и вам уж точно известно, что применение библиотек не освобождает разработчика от обязанности думать и знать ту область, в которой он работает.
Ну а если о незнающих, то им любая библиотека не поможет, можно ведь написать библиотеки на каждый чих, но если не уметь чихать, то проку все равно от них не будет. Подтверждение этому можно прямо в этом разделе наблюдать. И таким и три библиотеки подобные Jquery вместе взятые не помогут сделать снежок на странице. | |
|
|
|
|
|
|
|
для: sim5
(13.10.2010 в 20:05)
| | Вы преувеличиваете. Яваскрипт написали не дебилы. И jquery тоже не дебилы написали. Дебилы те, кто вызывая две три строки кода для активации jquery, думают что они хорошо знают яваскрипт. И когда они столкнутся с ситуацией, где недопустимо применять jquery, они не смогут ничего без этой библиотеки сделать, потому что не знают толком языка. Вот и все ее минусы, не считая лишних килобайт кода. | |
|
|
|
|
|
|
|
для: АЯ
(13.10.2010 в 18:20)
| | Эйэй полегче насчет дебилов, jquery я только только изучаю, и то из-за того, что в одном проекте возникла прблема кроссбраузерности. А так сам недавно написал mp3pleer+iframe на чистой javascript.
До загрузке мне бы не очень хотелось, так, как наверное все-таки увеличит время загрузки( мне важно подгрузить анимацию нажатия кнопок, popup окон(их достаточно много)) + если я буду тупо пробивать весь css файл, я просто умру загружать оттуда все картинки)
Мой алгорити такой.
Прохожу по всем тэгам, смотрю у кого есть какой класс <div class="first"> получаю бакграунд класса если есть, гружу его, иду дальше. То есть подгружу все картинки, что должны учавстовать в отображении( сейчас это готово), единственная проблема, что есть класс first:hover , вот к нему как доступ получить, зная класс first? | |
|
|
|
|
|
|
|
для: captain-america
(13.10.2010 в 19:37)
| | Вы не въехали.
Или Ваш "благородный гнев", коим Вы переполнились, защищая Jquery, застил Вам глаза.
Скрипт, о котором я Вам написал, не будет "тупо пробивать весь css файл" и "загружать оттуда все картинки".
Перечитайте внимательнее (цитирую): "вытащит оттуда URL'ы всех картинок, используемых в псевдоклассах и предзагрузит их"
Сиречь - не вообще ВСЕ картинки, а только и исключительно те, кои используются в псевдоклассах. То бишь именно те, которые Вам и нужны. | |
|
|
|
|
|
|
|
для: АЯ
(13.10.2010 в 19:57)
| | Логично предположить, что если бы я знал, как это делается то не спрашивал бы, а вы только пишите что надо делать, а не как это делать, у меня проблема не с идеей, а с реализацией) | |
|
|
|
|
|
|
|
для: captain-america
(14.10.2010 в 09:32)
| | document.styleSheets.length даст Вам информацию о суммарном количестве тегов <link rel="stylesheet" ...> и блоков <style>...</style>, написанных в заголовке документа ДО скрипта.
Организовать цикл по элементам коллекции document.styleSheets от нуля до document.styleSheets.length - 1 сможете?
-----
document.styleSheets [j].href даст Вам URL, указанный в атрибуте HREF тега <link rel="stylesheet" ...> или null, если это блок <style>...</style>.
Эта информация Вам понадобится, когда будете определять URL картинок, кои надо предзагрузить.
-----
Если браузер знает коллекцию document.styleSheets [j].cssRules, то это браузер семейства Mozilla. Если же не знает, то тогда это MSIE, который использует коллекцию document.styleSheets [j].rules.
У обеих коллекций есть длина - document.styleSheets [j].cssRules.length и document.styleSheets [j].rules.length, коя даст Вам информацию о количестве правил, записанных в каждом из подгруженных CSS-файлов и в каждом стилевом блоке.
Организовать цикл по элементам коллекции cssRules (и rules) от нуля до cssRules.length - 1 (и rules.length - 1) и вложить его внутрь предыдущего цикла сможете?
-----
Каждое правило состоит из того, что написано ДО фигурной скобки и того, что написано ВНУТРИ фигурных скобок. Первое можно прочитать следующим образом: document.styleSheets [j].cssRules [k].selectorText или document.styleSheets [j].rules.item (k).selectorText
Найти в прочитанном символ двоеточия методом indexOf (':') сможете?
Это и будут Ваши правила для псевдоклассов.
-----
Как только определите, что в селекторе указан псевдокласс, вытаскиваете из правила интересующий Вас URL для предзагрузки. Так - document.styleSheets [j].cssRules [k].style.backgroundImage или так - document.styleSheets [j].rules.item (k).style.backgroundImage
PS. После item скобки должны быть именно круглые!
Надеюсь, это сможете?
-----
Получите в переменную URL Вы в виде url(то,что_прописано) или пустоту, если никакой картинки в правиле не используется.
Убрать три первых символа url и круглые скобки из этой переменной, надеюсь, сможете?
-----
Если URL указан абсолютный, то первые четыре символа Вам известны - это http.
Ежели там нет первых http, следовательно, путь указан относительный.
(Лучше, конечно, использовать факт наличия/отсутствия сдвоенного слеша, ибо вдруг у Вас имеется картинка httpИТД.jpg или папка httpИТД)
Зная HREF подгруженного CSS-файла (или зная document.location.href текущего документа для стилевого блока) весьма просто сделать абсолютные URL из относительных. Воспользуйтесь правилами из моей старой лекции - http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=57405 (там я выступал в предыдущей своей инкарнации, под ником PAT).
-----
Ну и, наконец, узнав абсолютный URL картинки, можно её легко предзагрузить - var picture = new Image (); picture.src = 'тот_самый_URL';
Это тоже, надеюсь, сможете.
-----
Всё это чудесным образом работает в браузерах MSIE, FF, Opera. | |
|
|
|
|
|
|
|
для: АЯ
(14.10.2010 в 20:56)
| | Я так понимаю, я выдерну все псевдоклассы, которые даже не используются на странице?
Вот-вторых в будущем немного усмирите свое себялюбие, по крайней мере люди может вам благодарность высказывать будут. | |
|
|
|
|
|
|
|
для: captain-america
(14.10.2010 в 22:29)
| | >"Я так понимаю, я выдерну все псевдоклассы, которые даже не используются на странице?"
Да, при условии indexOf (':') > 0 в селекторе Вы "выдернете" ВСЕ псевдоклассы.
Но кто мешает Вам изменить условие на
indexOf ('конкретное_имя_класса:') > 0 || indexOf ('конкретное_имя_другого_класса:') > 0 ?
Тогда "выдернете" конкретные, только Вам нужные.
А вообще я балдею от челов, кои пишут один огроменный CSS-файл для всего сайта и прикрепляют его к каждой странице сайта :-)
Разумеется, для Вашего (извините, дебильного) случая следует дождаться события window.onload, вытащить ВСЕ теги страницы, ВСЕ классы и ВСЕ идентификаторы и именно для них найти правила в CSS-файлах и в CSS-блоках.
Это же так по-нашему. Сначала надо сделать очень плохие дороги, а потом покупать многосильные джипы, ибо на слабых машинах по нашим дорогам не проехать.
:-)))
-----
>"Вот-вторых в будущем немного усмирите свое себялюбие, по крайней мере люди может вам благодарность высказывать будут."
"Себялюбие" в отличие от "гордыни" не является смертным грехом.
А вот Вы сейчас как раз проявили гордыню.
Ибо Вам по любому следовало высказать мне благодарность.
Я ведь старался для Вас... не просто код написал, чтобы Вы его тупо переписали, а подробно разъяснил - как и что в нём работает. | |
|
|
|
|