мой движок ксс селекторов
function findelements(selector){ elem=[]; style=document.createElement('div'); rand=Math.floor(Math.random() * 1000); style.innerHTML='<style>'+selector+'{z-index: ' + rand + '}</style>'; document.body.appendChild(style); all=document.getElementsByTagName('*'); for(var i=0;i<all.length;i++) { if(window.getComputedStyle) z=window.getComputedStyle(all[i],null).zIndex; else z=all[i].currentStyle.zIndex; if (z==rand) { elem.push(all[i]); } } return elem; } старался обьединить быстродейтсвие и краткость кода оцените принцип такой: создаём style тег туда пишем (заданый селектор) {z-index: случайное число} потом цикл по всем элеиментам на стр если з-индекс равен тому сл.числу то добавляем в масив |
Очень плохая идея.
z-Index уже вполне может использоватся для каких-либо элементов. а вы его внаглую меняете, и не возвращаете обратно |
function findelements(selector){ all=document.getElementsByTagName('*'); for(var i=0;i<all.length;i++) { if(window.getComputedStyle) all[i].defaultzindex=window.getComputedStyle(all[i],null).zIndex; else all[i].defaultzindex=all[i].currentStyle.zIndex; } elem=[]; style=document.createElement('div'); rand=Math.floor(Math.random() * 1000); style.innerHTML='<style>'+selector+'{z-index: ' + rand + '}</style>'; document.body.appendChild(style); for(var i=0;i<all.length;i++) { if(window.getComputedStyle) z=window.getComputedStyle(all[i],null).zIndex; else z=all[i].currentStyle.zIndex; if (z==rand) { elem.push(all[i]); } all[i].style.zIndex=all[i].defaultzindex; } return elem; } вот переделал сейчас пытаюсь вставить его в jquery вместо стандартного движка подниму им рейтинг там правда через сервер зделано ,придется попотеть |
Цитата:
|
вы не прочли мою первую часть сообщения.
нельзя вот так брать, и использовать z-index для сторонних целей и не надейтесь, что вам удастся воткнуть ваш говнокод в jQUery им, он нафиг не нужен |
Цитата:
а на счет говнокода и "никому ненужен" время покажет |
Цитата:
вы считаете, что за несколько десятков лет, никому еще не пришло в голову так делать? нужность, вы правы, может показать время. и время уже показало ненужность такой идеи. либо вы мессия а вот говнокод можно увидеть, не ожидая года, и мнение многих людей. Цитата:
и он попадет в список элементов Цитата:
теперь, вы еще больше наговнокодили. вы только что искусственно задали всем элементам z-index, не зависящий от таблицы стилей |
Цитата:
Цитата:
|
Опишите свою идею более подробно, а то не совсем ясно что вы вообще хотите сделать, может вам и не прийдется изобретать велосипед
Цитата:
Цитата:
Цитата:
|
Цитата:
есть задачи, где даже вероятность коллизий Md5 является слишком большой а вы тут говорите о такой гигантской величине как 0.1%!!! Может быть вы не в курсе, но за этими числами стоят потерянные деньги,и для некоторых сайтов тот факт, что каждый тысячный покупатель не сможет провести покупку из-за вашего говнокода - весьма немаловажный фактор достойный увольнения нескольких не уследивших разработчиков Цитата:
вам бы сначала подрасти в профессиональном уровне, а затем горы ворочать запустите этот код следующим образом: 1)нажмите ссылку "change z-index" нижний логотип станет поверх второго после перезагрузите страницу 2)нажмите сперва ссылку "findelements", а затем только "change z-index" как видим после вашей функции, остальной код не работает так как ожидалось <html> <head> <script type="text/javascript"> function findelements(selector){ all=document.getElementsByTagName('*'); for(var i=0;i<all.length;i++) { if(window.getComputedStyle) all[i].defaultzindex=window.getComputedStyle(all[i],null).zIndex; else all[i].defaultzindex=all[i].currentStyle.zIndex; } elem=[]; style=document.createElement('div'); rand=Math.floor(Math.random() * 1000); style.innerHTML='<style>'+selector+'{z-index: ' + rand + '}</style>'; document.body.appendChild(style); for(var i=0;i<all.length;i++) { if(window.getComputedStyle) z=window.getComputedStyle(all[i],null).zIndex; else z=all[i].currentStyle.zIndex; if (z==rand) { elem.push(all[i]); } all[i].style.zIndex=all[i].defaultzindex; } return elem; } </script> <style> .img1{ position:absolute; left:10px; top:10px; z-index:5; } .img1_new{ position:absolute; left:10px; top:10px; z-index:7; } .img2{ position:absolute; left:20px; top:20px; z-index:6; } </style> </head> <body> <img id="img1" class="img1" height="44" width="100" border="0" alt="Яндекс" src="data:image/png;base64,iVBOR....ggg=="> <img class="img2" height="44" width="100" border="0" alt="Яндекс" src="data:image/png;base64,iVB...rkJggg=="> <br /><br /><br /><br /><br /><br /><br /> <a href="#" onclick="findelements('a');return false;">findelements</a> <a href="#" onclick="document.getElementById('img1').className='img1_new';return false;">change z-index</a> </body> </html> PS getComputedStyle который вы берете в начале, и свойство style.zIndex, выставляемое в конце - это абсолютно разные вещи. и последний до прихода вашей функции у большинства элементов равен пустой строке |
ну там можно то же подшаманить чтобы не глючило
через сервер зделать на пример,как в jquery только вы говорите что идея с з-индексом плохая а это нетак |
Цитата:
Относительно идеи ТС, я тоже не понимаю, чем может навредить установка z-index, а потом снятие его, а тестировать мне лень. Другое дело, что во-первых, у элемента в style может стоять z-index, и тогда его значение из стилей не узнать. А во-вторых, меня смущает recalc стилей, а может даже и reflow всей страницы, сопровождающий такой поиск. Matre, а зачем вы упоминаете какой-то сервер в своих сообщениях? |
Kolyaj,
по первому пункту согласен в общем случае. Цитата:
|
Цитата:
Цитата:
|
Цитата:
учите java script |
Цитата:
а затем показываю, какие проблемы возникают после вызова этого "движка" |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
а Gvozd мне говорил,что если так не зделать,то затрутся старые значения.так что это ему надо учить java script, извините. Gvozd, а с вас 500р. за то,что я написал 6 строк кода зря!! кошелек могу в лс скинуть или в асю как вам удобнее |
Цитата:
|
Мне почему-то это все Nemo напоминает
|
Цитата:
я не говорил, что каждому элементу нужно лично возвращать изначальный z-index Цитата:
Цитата:
а за некоторый, если бы вы его писали на заказ, вас бы еще и оштрафовать следовало бы на пару десятков баксов а вообще, повеселили))) |
Да что вы пристали к nemo. Он не смог бы до такого уровня грамотность подтянуть.
|
Цитата:
я его стал возвращать но вам все равно не нравится я следовал логике,а чему следуете вы,обсирая мои идеи как только можете,мне непонянто.может ,объясните? |
Цитата:
верный способ вам уже указал Kolyaj Цитата:
|
Порадовало Ваше желание прикрутить свой "супер движок" к jQuery. Только не забыли ли Вы, что jQ поддерживает много разных селекторов, причем некоторые из них стали поддерживаться браузерами совсем недавно (jQuery, напомню, позиционируется как кроссбраузерная библиотека), а некоторые так вообще являются выдумкой разработчиков и в CSS появляться не собираются.
|
jqueryвский движок много весит и там поиск по слекторам через сервер зделан..нагрузка на сайт и на клиента.а у меня код небольшой и сервер не испоьзует,так что думаю професионалы предпочтут мой движок.я так пониамаю это форум любителей,тут никто это неоценит
|
Цитата:
Цитата:
|
Цитата:
P.S. Да-да, сходите к профессионалам. |
Цитата:
|
B@rmaley.e><e я тут задумался а какие вы конкретно селекторы имели ввиду, если не сложно о:
Цитата:
|
Цитата:
:checkbox выбирает только элементы-флажки (input[type=checkbox]) :hidden - все скрытые элементы :submit, :visible и.т.д. |
Цитата:
в вот такие есть: input[type="checkbox"] UPD: <style type="text/css"> input[type="text"], input[type="checkbox"], input[type="submit"] { border: 1px solid red; } </style> <input type="text" /> <input type="checkbox" /> <input type="submit" /> <input type="checkbox" checked="checked" /> <script type="text/javascript"> document.querySelector('input[type="checkbox"]:checked').onclick = function(){alert('clicked')}; </script> |
А вот такой вот не работает li:has(ul) , (в jquery с ним можно работать)
интересно а есть ему аналог? <style type = 'text/css'> li:has(ul) { color:red; } li ul { color:blue; } </style> <ul> <li>Item 1</li> <li>Item 2</li> <li>Item 3 <ul> <li>Item 3.1</li> <li>Item 3.2</li> </ul> </li> </ul> |
мне кажется этот пример не совсем корректый, можно в каком-то случае заменить оператором > (хотя в примере ниже и без него можно обойтись)
<style type='text/css'> li ul { color:blue; } li ul li ul > li { color:red; } </style> <ul> <li>Item 1</li> <li>Item 2</li> <li> <ul> <li>Item 3.1</li> <li>Item 3.2</li> <li> <ul> <li>Item 4.1</li> <li>Item 4.2</li> </ul> </li> </ul> </li> </ul> |
Очень плохая идея делать через тег style, потому что CSS-3 селекторы поддерживаются всеми браузерами по разному, скажем в ИЕ нет тех которые уже реализованы в других. Не кроссбраузерно - следовательно пользы мало.
|
Maxman,
вы непонимаете,вся фишка в уникальном аглоритме. он позволяет писать css3-движки размером 1 КБ кгода css3 утвердят,мой двиг станет просто бомбой |
Цитата:
|
Maxman относительно css3-селекторов вы не совсем правы, а точнее в корне не правы!.
CSS3-псевдоклассы (типа :nth-child) уже давенько поддерживаются браузерами (за исключением IE), не говоря уже о CSS2-псевдоклассах (типа :first-line) CSS2-псевдоклассы поддерживаются даже IE (некоторые их них даже в IE6) CSS2-селекторы (о них шла речь, к примеру: input[type="text"]), почти все из поддерживается начиная с IE7+ CSS3-псевдоэлементы (::selection и пр.) поддердживают только Safari и Chrom, остальные реализуют через префиксы. Цитата:
Но на сколько мне известно, что IE9 является последним в линейке IE, в след. ОС они обещали предоставить совершенно новую модель браузеро (голосовое и сенсорное управление...). |
monolithed, вы сами привели примеры того, насколько они различаются по поддержке. Я просто имел ввиду что смысл движков типа Sizzle в том что они обеспечивают полную кроссбраузерность начиная с IE6 и старых версий других браузеров, + придуманные селекторы, чем движок Matre не может похвастаться, поэтому мала вероятность того что он станет бомбой :) Размер - да, но одно другому рознь.
Цитата:
|
Часовой пояс GMT +3, время: 20:27. |