Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Псевдо-элементы after и before для Internet Explorer 7 (https://javascript.ru/forum/project/34300-psevdo-ehlementy-after-i-before-dlya-internet-explorer-7-a.html)

devote 28.12.2012 12:32

Псевдо-элементы after и before для Internet Explorer 7
 
Привет All!

Начирикал тут по быстрому поддержу псевдо-элементов в ИЕ7, если кому надо, юзайте:
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>before</title>
  <style>
   li:before, li before {
     content: "¶ ";
   }

   li[data-test]:before, li[data-test] before {
     content: attr(data-test);
   }

   li:after, li after {
     content: ".";
   }

   li:hover:before, li:hover before {
     content: "= ";
   }

   li:hover:after, li:hover after {
     content: "|";
   }

   li {
     list-style: none;

     /* псевдоэлемент :before Для ИЕ 7 */
     before: expression(function(t,e,c){
       if(!e||!('__content'in e)||!t._before)
       e=t[e?'insertBefore':'appendChild'](t._before=t._before||document.createElement('before'),e);
       if(!('__content'in e)||e.currentStyle.content!==e.__content){
         c=(e.__content=e.currentStyle.content)||'';
         e.innerHTML=c.replace(/^(?:["'](.*)['"]|attr\\((.*)\\)|(.*))$/,
         function(a,b,c){return b||c&&t.getAttribute(c)||''})
       }
     }(this,this.firstChild));

     /* псевдоэлемент :after Для ИЕ 7 */
     after: expression(function(t,e,c){
       if(!e||!('__content'in e)||!t._after)
       t.appendChild(e=t._after=t._after||document.createElement('after'));
       if(!('__content'in e)||e.currentStyle.content!==e.__content){
         c=(e.__content=e.currentStyle.content)||'';
         e.innerHTML=c.replace(/^(?:["'](.*)['"]|attr\\((.*)\\)|(.*))$/,
         function(a,b,c){return b||c&&t.getAttribute(c)||''})
       }
     }(this,this.lastChild));
   }
  </style>
 </head>
 <body>
   <ul><li>Альфа</li><li data-test="Это крутая ">Бета</li><li>Гамма</li></ul>
 </body>
</html>

zebra 28.12.2012 13:18

Как можно писать код в тегах style? Ничего не понимаю, можете объяснить как это работает?

devote 28.12.2012 13:45

Цитата:

Сообщение от zebra
Ничего не понимаю, можете объяснить как это работает?

Это работает только для ИЕ7 и ниже. Для других браузеров код работать не будет. Я же написал что эмуляция псевдо для ИЕ7 а в других браузерах есть нативная поддержка этих псевдо-элементов

zebra 28.12.2012 14:33

Вот это ие дает :blink:


Часовой пояс GMT +3, время: 16:12.